diff --git a/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/AccessibilityNode.cs b/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/AccessibilityNode.cs index 97d914dc..eca8fbdc 100644 --- a/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/AccessibilityNode.cs +++ b/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/AccessibilityNode.cs @@ -388,32 +388,64 @@ private void OnDestroy() UnregisterAXElement(this); } +#if UNITY_6000_4_OR_NEWER + private static Dictionary axElements = new Dictionary(); +#else private static Dictionary axElements = new Dictionary(); +#endif static internal void RegisterAXElement(AccessibilityNode obj) { +#if UNITY_6000_4_OR_NEWER + if (axElements.ContainsKey(EntityId.ToULong(obj.gameObject.GetEntityId()))) +#else if (axElements.ContainsKey(obj.gameObject.GetInstanceID())) +#endif { return; } + +#if UNITY_6000_4_OR_NEWER + axElements.Add(EntityId.ToULong(obj.gameObject.GetEntityId()), obj); + AccessibilityNode parent = obj._accessibilityParent(); + ulong parentId = EntityId.ToULong(EntityId.None); +#else axElements.Add(obj.gameObject.GetInstanceID(), obj); AccessibilityNode parent = obj._accessibilityParent(); int parentId = -1; +#endif if (parent) { +#if UNITY_6000_4_OR_NEWER + parentId = EntityId.ToULong(parent.gameObject.GetEntityId()); +#else parentId = parent.gameObject.GetInstanceID(); +#endif } + #if (UNITY_IOS || UNITY_TVOS) && !UNITY_EDITOR +#if UNITY_6000_4_OR_NEWER + _UnityAX_RegisterElementWithIdentifier2(EntityId.ToULong(obj.gameObject.GetEntityId()), parentId, parent != null); +#else _UnityAX_RegisterElementWithIdentifier(obj.gameObject.GetInstanceID(), parentId, parent != null); +#endif #endif } static internal void UnregisterAXElement(AccessibilityNode obj) { +#if UNITY_6000_4_OR_NEWER + axElements.Remove(EntityId.ToULong(obj.gameObject.GetEntityId())); +#else axElements.Remove(obj.gameObject.GetInstanceID()); +#endif #if (UNITY_IOS || UNITY_TVOS) && !UNITY_EDITOR +#if UNITY_6000_4_OR_NEWER + _UnityAX_UnregisterElementWithIdentifier2(EntityId.ToULong(obj.gameObject.GetEntityId())); +#else _UnityAX_UnregisterElementWithIdentifier(obj.gameObject.GetInstanceID()); +#endif #endif } @@ -843,7 +875,28 @@ private static void RegisterCallbacks() if (!__registered) { #if (UNITY_IOS || UNITY_TVOS) && !UNITY_EDITOR - _UnityAX_InitializeAXRuntime(); +#if UNITY_6000_4_OR_NEWER + _UnityAX_InitializeAXRuntime(2); + _UnityAX_registerAccessibilityFrame2(_UnityAX_accessibilityFrame2); + _UnityAX_registerAccessibilityLabel2(_UnityAX_accessibilityLabel2); + _UnityAX_registerAccessibilityTraits2(_UnityAX_accessibilityTraits2); + _UnityAX_registerAccessibilityIsElement2(_UnityAX_IsAccessibilityElement2); + _UnityAX_registerAccessibilityHint2(_UnityAX_AccessibilityHint2); + _UnityAX_registerAccessibilityValue2(_UnityAX_AccessibilityValue2); + _UnityAX_registerAccessibilityIdentifier2(_UnityAX_AccessibilityIdentifier2); + _UnityAX_registerAccessibilityViewIsModal2(_UnityAX_AccessibilityViewIsModal2); + _UnityAX_registerAccessibilityActivationPoint2(_UnityAX_AccessibilityActivationPoint2); + _UnityAX_registerAccessibilityPerformMagicTap2(_UnityAX_AccessibilityPerformMagicTap2); + _UnityAX_registerAccessibilityPerformEscape2(_UnityAX_AccessibilityPerformEscape2); + _UnityAX_registerAccessibilityActivate2(_UnityAX_AccessibilityActivate2); + _UnityAX_registerAccessibilityIncrement2(_UnityAX_AccessibilityIncrement2); + _UnityAX_registerAccessibilityDecrement2(_UnityAX_AccessibilityDecrement2); + _UnityAX_registerAccessibilityScroll2(_UnityAX_AccessibilityScroll2); + _UnityAX_registerAccessibilityCustomActionsCount2(_UnityAX_AccessibilityCustomActionCount2); + _UnityAX_registerAccessibilityPerformCustomAction2(_UnityAX_PerformCustomAction2); + _UnityAX_registerAccessibilityCustomActionName2(_UnityAX_CustomActionName2); +#else + _UnityAX_InitializeAXRuntime(0); _UnityAX_registerAccessibilityFrame(_UnityAX_accessibilityFrame); _UnityAX_registerAccessibilityLabel(_UnityAX_accessibilityLabel); _UnityAX_registerAccessibilityTraits(_UnityAX_accessibilityTraits); @@ -862,20 +915,34 @@ private static void RegisterCallbacks() _UnityAX_registerAccessibilityCustomActionsCount(_UnityAX_AccessibilityCustomActionCount); _UnityAX_registerAccessibilityPerformCustomAction(_UnityAX_PerformCustomAction); _UnityAX_registerAccessibilityCustomActionName(_UnityAX_CustomActionName); +#endif #endif __registered = true; } } #if (UNITY_IOS || UNITY_TVOS) && !UNITY_EDITOR - [DllImport("__Internal")] private static extern void _UnityAX_InitializeAXRuntime(); + // Parameter callbackOption tells native code which set of calbacks to use. Valid values: 0, 2 + [DllImport("__Internal")] private static extern void _UnityAX_InitializeAXRuntime(int callbackOption); +#if UNITY_6000_4_OR_NEWER + [DllImport("__Internal")] private static extern void _UnityAX_RegisterElementWithIdentifier2(ulong identifier, ulong parentIdentifier, bool hasParent); + [DllImport("__Internal")] private static extern void _UnityAX_UnregisterElementWithIdentifier2(ulong identifier); +#else [DllImport("__Internal")] private static extern void _UnityAX_RegisterElementWithIdentifier(int identifier, int parentIdentifier, bool hasParent); [DllImport("__Internal")] private static extern void _UnityAX_UnregisterElementWithIdentifier(int identifier); +#endif +#if UNITY_6000_4_OR_NEWER + private delegate string AccessibilityFrameDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityFrame2(AccessibilityFrameDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityFrameDelegate2))] + private static string _UnityAX_accessibilityFrame2(ulong identifier) +#else private delegate string AccessibilityFrameDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityFrame(AccessibilityFrameDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityFrameDelegate))] private static string _UnityAX_accessibilityFrame(int identifier) +#endif { Rect rect = Rect.zero; if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) @@ -885,10 +952,17 @@ private static string _UnityAX_accessibilityFrame(int identifier) return _stringForRect(rect); } +#if UNITY_6000_4_OR_NEWER + private delegate string AccessibilityLabelDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityLabel2(AccessibilityLabelDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityLabelDelegate2))] + private static string _UnityAX_accessibilityLabel2(ulong identifier) +#else private delegate string AccessibilityLabelDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityLabel(AccessibilityLabelDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityLabelDelegate))] private static string _UnityAX_accessibilityLabel(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -897,10 +971,17 @@ private static string _UnityAX_accessibilityLabel(int identifier) return null; } +#if UNITY_6000_4_OR_NEWER + private delegate ulong AccessibilityTraitsDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityTraits2(AccessibilityTraitsDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityTraitsDelegate2))] + private static ulong _UnityAX_accessibilityTraits2(ulong identifier) +#else private delegate ulong AccessibilityTraitsDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityTraits(AccessibilityTraitsDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityTraitsDelegate))] private static ulong _UnityAX_accessibilityTraits(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -909,10 +990,17 @@ private static ulong _UnityAX_accessibilityTraits(int identifier) return 0; } +#if UNITY_6000_4_OR_NEWER + private delegate bool IsAccessibilityElementDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityIsElement2(IsAccessibilityElementDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(IsAccessibilityElementDelegate2))] + private static bool _UnityAX_IsAccessibilityElement2(ulong identifier) +#else private delegate bool IsAccessibilityElementDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityIsElement(IsAccessibilityElementDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(IsAccessibilityElementDelegate))] private static bool _UnityAX_IsAccessibilityElement(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -921,10 +1009,17 @@ private static bool _UnityAX_IsAccessibilityElement(int identifier) return true; } +#if UNITY_6000_4_OR_NEWER + private delegate string AccessibilityHintDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityHint2(AccessibilityHintDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityHintDelegate2))] + private static string _UnityAX_AccessibilityHint2(ulong identifier) +#else private delegate string AccessibilityHintDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityHint(AccessibilityHintDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityHintDelegate))] private static string _UnityAX_AccessibilityHint(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -933,10 +1028,17 @@ private static string _UnityAX_AccessibilityHint(int identifier) return null; } +#if UNITY_6000_4_OR_NEWER + private delegate string AccessibilityValueDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityValue2(AccessibilityValueDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityValueDelegate2))] + private static string _UnityAX_AccessibilityValue2(ulong identifier) +#else private delegate string AccessibilityValueDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityValue(AccessibilityValueDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityValueDelegate))] private static string _UnityAX_AccessibilityValue(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -945,10 +1047,17 @@ private static string _UnityAX_AccessibilityValue(int identifier) return null; } +#if UNITY_6000_4_OR_NEWER + private delegate string AccessibilityIdentifierDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityIdentifier2(AccessibilityIdentifierDelegate2 identifierDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityIdentifierDelegate2))] + private static string _UnityAX_AccessibilityIdentifier2(ulong identifier) +#else private delegate string AccessibilityIdentifierDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityIdentifier(AccessibilityIdentifierDelegate identifierDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityIdentifierDelegate))] private static string _UnityAX_AccessibilityIdentifier(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -957,10 +1066,17 @@ private static string _UnityAX_AccessibilityIdentifier(int identifier) return null; } +#if UNITY_6000_4_OR_NEWER + private delegate bool AccessibilityViewIsModalDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityViewIsModal2(AccessibilityViewIsModalDelegate2 viewIsModalDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityViewIsModalDelegate2))] + private static bool _UnityAX_AccessibilityViewIsModal2(ulong identifier) +#else private delegate bool AccessibilityViewIsModalDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityViewIsModal(AccessibilityViewIsModalDelegate viewIsModalDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityViewIsModalDelegate))] private static bool _UnityAX_AccessibilityViewIsModal(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -969,10 +1085,17 @@ private static bool _UnityAX_AccessibilityViewIsModal(int identifier) return false; } +#if UNITY_6000_4_OR_NEWER + private delegate string AccessibilityActivationPointDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityActivationPoint2(AccessibilityActivationPointDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityActivationPointDelegate2))] + private static string _UnityAX_AccessibilityActivationPoint2(ulong identifier) +#else private delegate string AccessibilityActivationPointDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityActivationPoint(AccessibilityActivationPointDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityActivationPointDelegate))] private static string _UnityAX_AccessibilityActivationPoint(int identifier) +#endif { Vector2 value = Vector2.positiveInfinity; if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) @@ -982,10 +1105,17 @@ private static string _UnityAX_AccessibilityActivationPoint(int identifier) return value == Vector2.positiveInfinity ? null : _stringForPoint(value); } +#if UNITY_6000_4_OR_NEWER + private delegate bool AccessibilityScrollDelegate2(ulong identifier, int direction); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityScroll2(AccessibilityScrollDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityScrollDelegate2))] + private static bool _UnityAX_AccessibilityScroll2(ulong identifier, int direction) +#else private delegate bool AccessibilityScrollDelegate(int identifier, int direction); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityScroll(AccessibilityScrollDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityScrollDelegate))] private static bool _UnityAX_AccessibilityScroll(int identifier, int direction) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -994,10 +1124,17 @@ private static bool _UnityAX_AccessibilityScroll(int identifier, int direction) return false; } +#if UNITY_6000_4_OR_NEWER + private delegate void AccessibilityIncrementDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityIncrement2(AccessibilityIncrementDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityIncrementDelegate2))] + private static void _UnityAX_AccessibilityIncrement2(ulong identifier) +#else private delegate void AccessibilityIncrementDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityIncrement(AccessibilityIncrementDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityIncrementDelegate))] private static void _UnityAX_AccessibilityIncrement(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -1005,10 +1142,17 @@ private static void _UnityAX_AccessibilityIncrement(int identifier) } } +#if UNITY_6000_4_OR_NEWER + private delegate void AccessibilityDecrementDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityDecrement2(AccessibilityDecrementDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityDecrementDelegate2))] + private static void _UnityAX_AccessibilityDecrement2(ulong identifier) +#else private delegate void AccessibilityDecrementDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityDecrement(AccessibilityDecrementDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityDecrementDelegate))] private static void _UnityAX_AccessibilityDecrement(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -1016,10 +1160,17 @@ private static void _UnityAX_AccessibilityDecrement(int identifier) } } +#if UNITY_6000_4_OR_NEWER + private delegate ulong AccessibilityCustomActionsCountDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityCustomActionsCount2(AccessibilityCustomActionsCountDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityCustomActionsCountDelegate2))] + private static ulong _UnityAX_AccessibilityCustomActionCount2(ulong identifier) +#else private delegate ulong AccessibilityCustomActionsCountDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityCustomActionsCount(AccessibilityCustomActionsCountDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityCustomActionsCountDelegate))] private static ulong _UnityAX_AccessibilityCustomActionCount(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -1032,10 +1183,17 @@ private static ulong _UnityAX_AccessibilityCustomActionCount(int identifier) return 0; } +#if UNITY_6000_4_OR_NEWER + private delegate string AccessibilityCustomActionNameDelegate2(ulong identifier, int idx); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityCustomActionName2(AccessibilityCustomActionNameDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityCustomActionNameDelegate2))] + private static string _UnityAX_CustomActionName2(ulong identifier, int idx) +#else private delegate string AccessibilityCustomActionNameDelegate(int identifier, int idx); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityCustomActionName(AccessibilityCustomActionNameDelegate actionDelegate); - [AOT.MonoPInvokeCallback(typeof(AccessibilityPerformCustomActionDelegate))] + [AOT.MonoPInvokeCallback(typeof(AccessibilityCustomActionNameDelegate))] private static string _UnityAX_CustomActionName(int identifier, int idx) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -1055,10 +1213,17 @@ private static string _UnityAX_CustomActionName(int identifier, int idx) return null; } +#if UNITY_6000_4_OR_NEWER + private delegate bool AccessibilityPerformCustomActionDelegate2(ulong identifier, int idx); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityPerformCustomAction2(AccessibilityPerformCustomActionDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityPerformCustomActionDelegate2))] + private static bool _UnityAX_PerformCustomAction2(ulong identifier, int idx) +#else private delegate bool AccessibilityPerformCustomActionDelegate(int identifier, int idx); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityPerformCustomAction(AccessibilityPerformCustomActionDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityPerformCustomActionDelegate))] private static bool _UnityAX_PerformCustomAction(int identifier, int idx) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -1078,10 +1243,17 @@ private static bool _UnityAX_PerformCustomAction(int identifier, int idx) return false; } +#if UNITY_6000_4_OR_NEWER + private delegate bool AccessibilityPerformMagicTapDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityPerformMagicTap2(AccessibilityPerformMagicTapDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityPerformMagicTapDelegate2))] + internal static bool _UnityAX_AccessibilityPerformMagicTap2(ulong identifier) +#else private delegate bool AccessibilityPerformMagicTapDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityPerformMagicTap(AccessibilityPerformMagicTapDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityPerformMagicTapDelegate))] internal static bool _UnityAX_AccessibilityPerformMagicTap(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -1090,10 +1262,17 @@ internal static bool _UnityAX_AccessibilityPerformMagicTap(int identifier) return false; } +#if UNITY_6000_4_OR_NEWER + private delegate bool AccessibilityPerformEscapeDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityPerformEscape2(AccessibilityPerformEscapeDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityPerformEscapeDelegate2))] + internal static bool _UnityAX_AccessibilityPerformEscape2(ulong identifier) +#else private delegate bool AccessibilityPerformEscapeDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityPerformEscape(AccessibilityPerformEscapeDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityPerformEscapeDelegate))] internal static bool _UnityAX_AccessibilityPerformEscape(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { @@ -1102,10 +1281,17 @@ internal static bool _UnityAX_AccessibilityPerformEscape(int identifier) return false; } +#if UNITY_6000_4_OR_NEWER + private delegate bool AccessibilityActivateDelegate2(ulong identifier); + [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityActivate2(AccessibilityActivateDelegate2 actionDelegate); + [AOT.MonoPInvokeCallback(typeof(AccessibilityActivateDelegate2))] + private static bool _UnityAX_AccessibilityActivate2(ulong identifier) +#else private delegate bool AccessibilityActivateDelegate(int identifier); [DllImport("__Internal")] private static extern void _UnityAX_registerAccessibilityActivate(AccessibilityActivateDelegate actionDelegate); [AOT.MonoPInvokeCallback(typeof(AccessibilityActivateDelegate))] private static bool _UnityAX_AccessibilityActivate(int identifier) +#endif { if (axElements.TryGetValue(identifier, out AccessibilityNode obj)) { diff --git a/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityNode_TestSuite.cs b/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityNode_TestSuite.cs index 2165417d..7857622f 100644 --- a/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityNode_TestSuite.cs +++ b/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityNode_TestSuite.cs @@ -58,7 +58,11 @@ public IEnumerator Test_AccessibilityLabel() AccessibilityNode axObject = ButtonAXObject(); UnityEngine.Assertions.Assert.AreEqual(axObject.AccessibilityLabel, "Button"); +#if UNITY_6000_4_OR_NEWER + bool succeeded = AccessibilityTests.RuniOSSideUnitTestWithKeyPathExpectingStringResult(EntityId.ToULong(axObject.gameObject.GetEntityId()), "accessibilityLabel", "Button"); +#else bool succeeded = AccessibilityTests.RuniOSSideUnitTestWithKeyPathExpectingStringResult(axObject.gameObject.GetInstanceID(), "accessibilityLabel", "Button"); +#endif UnityEngine.Assertions.Assert.IsTrue(succeeded); yield return null; @@ -75,7 +79,11 @@ public IEnumerator Test_AccessibilityValue() AccessibilityNode axObject = ButtonAXObject(); UnityEngine.Assertions.Assert.AreEqual(axObject.AccessibilityValue, "ButtonValue"); +#if UNITY_6000_4_OR_NEWER + bool succeeded = AccessibilityTests.RuniOSSideUnitTestWithKeyPathExpectingStringResult(EntityId.ToULong(axObject.gameObject.GetEntityId()), "accessibilityValue", "ButtonValue"); +#else bool succeeded = AccessibilityTests.RuniOSSideUnitTestWithKeyPathExpectingStringResult(axObject.gameObject.GetInstanceID(), "accessibilityValue", "ButtonValue"); +#endif UnityEngine.Assertions.Assert.IsTrue(succeeded); yield return null; @@ -92,7 +100,11 @@ public IEnumerator Test_AccessibilityHint() AccessibilityNode axObject = ButtonAXObject(); UnityEngine.Assertions.Assert.AreEqual(axObject.AccessibilityHint, "ButtonHint"); +#if UNITY_6000_4_OR_NEWER + bool succeeded = AccessibilityTests.RuniOSSideUnitTestWithKeyPathExpectingStringResult(EntityId.ToULong(axObject.gameObject.GetEntityId()), "accessibilityHint", "ButtonHint"); +#else bool succeeded = AccessibilityTests.RuniOSSideUnitTestWithKeyPathExpectingStringResult(axObject.gameObject.GetInstanceID(), "accessibilityHint", "ButtonHint"); +#endif UnityEngine.Assertions.Assert.IsTrue(succeeded); yield return null; @@ -135,7 +147,11 @@ public IEnumerator Test_PerformMagicTap() return true; }; +#if UNITY_6000_4_OR_NEWER + bool tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformMagicTap(EntityId.ToULong(axObject.gameObject.GetEntityId())); +#else bool tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformMagicTap(axObject.gameObject.GetInstanceID()); +#endif expectedMagicTapCount += 1; UnityEngine.Assertions.Assert.AreEqual(magicTapCount, expectedMagicTapCount); UnityEngine.Assertions.Assert.IsTrue(tapSucceeded); @@ -156,7 +172,11 @@ public IEnumerator Test_PerformMagicTap() return false; }; +#if UNITY_6000_4_OR_NEWER + tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformMagicTap(EntityId.ToULong(axObject.gameObject.GetEntityId())); +#else tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformMagicTap(axObject.gameObject.GetInstanceID()); +#endif expectedMagicTapCount += 1; UnityEngine.Assertions.Assert.AreEqual(magicTapCount, expectedMagicTapCount); UnityEngine.Assertions.Assert.IsFalse(tapSucceeded); @@ -171,7 +191,12 @@ public IEnumerator Test_PerformMagicTap() //Unimplemented tap axObject.onAccessibilityPerformMagicTap = null; +#if UNITY_6000_4_OR_NEWER + EntityId.ToULong(axObject.gameObject.GetEntityId()) + tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformMagicTap(EntityId.ToULong(axObject.gameObject.GetEntityId())); +#else tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformMagicTap(axObject.gameObject.GetInstanceID()); +#endif UnityEngine.Assertions.Assert.AreEqual(magicTapCount, expectedMagicTapCount); UnityEngine.Assertions.Assert.IsFalse(tapSucceeded); #if UNITY_IOS && !UNITY_EDITOR @@ -205,7 +230,11 @@ public IEnumerator Test_PerformEscape() return true; }; +#if UNITY_6000_4_OR_NEWER + bool tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformEscape(EntityId.ToULong(axObject.gameObject.GetEntityId())); +#else bool tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformEscape(axObject.gameObject.GetInstanceID()); +#endif expectedEscapeCount += 1; UnityEngine.Assertions.Assert.AreEqual(EscapeCount, expectedEscapeCount); UnityEngine.Assertions.Assert.IsTrue(tapSucceeded); @@ -226,7 +255,11 @@ public IEnumerator Test_PerformEscape() return false; }; +#if UNITY_6000_4_OR_NEWER + tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformEscape(EntityId.ToULong(axObject.gameObject.GetEntityId())); +#else tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformEscape(axObject.gameObject.GetInstanceID()); +#endif expectedEscapeCount += 1; UnityEngine.Assertions.Assert.AreEqual(EscapeCount, expectedEscapeCount); UnityEngine.Assertions.Assert.IsFalse(tapSucceeded); @@ -241,7 +274,11 @@ public IEnumerator Test_PerformEscape() //Unimplemented tap axObject.onAccessibilityPerformEscape = null; +#if UNITY_6000_4_OR_NEWER + tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformEscape(EntityId.ToULong(axObject.gameObject.GetEntityId())); +#else tapSucceeded = AccessibilityRuntime._UnityAX_AccessibilityPerformEscape(axObject.gameObject.GetInstanceID()); +#endif UnityEngine.Assertions.Assert.AreEqual(EscapeCount, expectedEscapeCount); UnityEngine.Assertions.Assert.IsFalse(tapSucceeded); #if UNITY_IOS && !UNITY_EDITOR diff --git a/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityTests.cs b/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityTests.cs index c708a632..60272baa 100644 --- a/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityTests.cs +++ b/plug-ins/Apple.Accessibility/Apple.Accessibility_Unity/Assets/Apple.Accessibility/Tests/AccessibilityTests/AccessibilityTests.cs @@ -6,11 +6,15 @@ namespace Apple.Accessibility.UnitTests public class AccessibilityTests : MonoBehaviour { [DllImport("__Internal")] - private static extern bool _UnityAX_RuniOSSideUnitTestWithName(string name); - + private static extern bool _UnityAX_RuniOSSideUnitTestWithName(string name); + +#if UNITY_6000_4_OR_NEWER [DllImport("__Internal")] - private static extern bool _UnityAX_RuniOSSideUnitTestWithKeyPathExpectingStringResult(int identifier, string keyPath, string expected); - + private static extern bool _UnityAX_RuniOSSideUnitTestWithKeyPathExpectingStringResult2(ulong identifier, string keyPath, string expected); +#else + [DllImport("__Internal")] + private static extern bool _UnityAX_RuniOSSideUnitTestWithKeyPathExpectingStringResult(int identifier, string keyPath, string expected); +#endif public static bool RuniOSUnitTestWithName(string name) { @@ -18,9 +22,19 @@ public static bool RuniOSUnitTestWithName(string name) return _UnityAX_RuniOSSideUnitTestWithName(name); #else return true; +#endif + } + +#if UNITY_6000_4_OR_NEWER + public static bool RuniOSSideUnitTestWithKeyPathExpectingStringResult(ulong identifier, string keyPath, string expected) + { +#if (UNITY_IOS || UNITY_TVOS) && !UNITY_EDITOR + return _UnityAX_RuniOSSideUnitTestWithKeyPathExpectingStringResult2(identifier, keyPath, expected); +#else + return true; #endif } - +#else public static bool RuniOSSideUnitTestWithKeyPathExpectingStringResult(int identifier, string keyPath, string expected) { #if (UNITY_IOS || UNITY_TVOS) && !UNITY_EDITOR @@ -29,7 +43,8 @@ public static bool RuniOSSideUnitTestWithKeyPathExpectingStringResult(int identi return true; #endif } - +#endif + [DllImport("__Internal")] private static extern void _UnityAX_PostFeatureEnabledNotification(string name, bool enabled); diff --git a/plug-ins/Apple.Accessibility/Native/AppleAccessibility/AppleAccessibilityBridge.m b/plug-ins/Apple.Accessibility/Native/AppleAccessibility/AppleAccessibilityBridge.m index 92f0d737..fddc8451 100644 --- a/plug-ins/Apple.Accessibility/Native/AppleAccessibility/AppleAccessibilityBridge.m +++ b/plug-ins/Apple.Accessibility/Native/AppleAccessibility/AppleAccessibilityBridge.m @@ -42,77 +42,130 @@ APPLE_ACCESSIBILITY_EXTERN void _UnityAX_PostPageScrolledNotification(const char #pragma mark Elements typedef char *(* AccessibilityFrameDelegate)(int32_t); +typedef char *(* AccessibilityFrameDelegate2)(uint64_t); static AccessibilityFrameDelegate __axFrameDelegate = NULL; +static AccessibilityFrameDelegate2 __axFrameDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityFrame(AccessibilityFrameDelegate delegate) { __axFrameDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityFrame2(AccessibilityFrameDelegate2 delegate) { __axFrameDelegate2 = delegate; } typedef char *(* AccessibilityLabelDelegate)(int32_t); +typedef char *(* AccessibilityLabelDelegate2)(uint64_t); static AccessibilityLabelDelegate __axLabelDelegate = NULL; +static AccessibilityLabelDelegate2 __axLabelDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityLabel(AccessibilityLabelDelegate delegate) { __axLabelDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityLabel2(AccessibilityLabelDelegate2 delegate) { __axLabelDelegate2 = delegate; } typedef uint64_t (* AccessibilityTraitsDelegate)(int32_t); +typedef uint64_t (* AccessibilityTraitsDelegate2)(uint64_t); static AccessibilityTraitsDelegate __axTraitsDelegate = NULL; +static AccessibilityTraitsDelegate2 __axTraitsDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityTraits(AccessibilityTraitsDelegate delegate) { __axTraitsDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityTraits2(AccessibilityTraitsDelegate2 delegate) { __axTraitsDelegate2 = delegate; } typedef bool (* AccessibilityIsElementDelegate)(int32_t); +typedef bool (* AccessibilityIsElementDelegate2)(uint64_t); static AccessibilityIsElementDelegate __axIsElementDelegate = NULL; +static AccessibilityIsElementDelegate2 __axIsElementDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityIsElement(AccessibilityIsElementDelegate delegate) { __axIsElementDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityIsElement2(AccessibilityIsElementDelegate2 delegate) { __axIsElementDelegate2 = delegate; } typedef char *(* AccessibilityHintDelegate)(int32_t); +typedef char *(* AccessibilityHintDelegate2)(uint64_t); static AccessibilityHintDelegate __axHintDelegate = NULL; +static AccessibilityHintDelegate2 __axHintDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityHint(AccessibilityHintDelegate delegate) { __axHintDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityHint2(AccessibilityHintDelegate2 delegate) { __axHintDelegate2 = delegate; } typedef char *(* AccessibilityValueDelegate)(int32_t); +typedef char *(* AccessibilityValueDelegate2)(uint64_t); static AccessibilityValueDelegate __axValueDelegate = NULL; +static AccessibilityValueDelegate2 __axValueDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityValue(AccessibilityValueDelegate delegate) { __axValueDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityValue2(AccessibilityValueDelegate2 delegate) { __axValueDelegate2 = delegate; } typedef char *(* AccessibilityIdentifierDelegate)(int32_t); +typedef char *(* AccessibilityIdentifierDelegate2)(uint64_t); static AccessibilityIdentifierDelegate __axIdentifierDelegate = NULL; +static AccessibilityIdentifierDelegate2 __axIdentifierDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityIdentifier(AccessibilityIdentifierDelegate delegate) { __axIdentifierDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityIdentifier2(AccessibilityIdentifierDelegate2 delegate) { __axIdentifierDelegate2 = delegate; } typedef bool (* AccessibilityViewIsModalDelegate)(int32_t); +typedef bool (* AccessibilityViewIsModalDelegate2)(uint64_t); static AccessibilityViewIsModalDelegate __axViewIsModalDelegate = NULL; +static AccessibilityViewIsModalDelegate2 __axViewIsModalDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityViewIsModal(AccessibilityViewIsModalDelegate delegate) { __axViewIsModalDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityViewIsModal2(AccessibilityViewIsModalDelegate2 delegate) { __axViewIsModalDelegate2 = delegate; } typedef char *(* AccessibilityActivationPointDelegate)(int32_t); +typedef char *(* AccessibilityActivationPointDelegate2)(uint64_t); static AccessibilityActivationPointDelegate __axActivationPointDelegate = NULL; +static AccessibilityActivationPointDelegate2 __axActivationPointDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityActivationPoint(AccessibilityActivationPointDelegate delegate) { __axActivationPointDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityActivationPoint2(AccessibilityActivationPointDelegate2 delegate) { __axActivationPointDelegate2 = delegate; } typedef uint64_t (* AccessibilityCustomActionsCountDelegate)(int32_t); +typedef uint64_t (* AccessibilityCustomActionsCountDelegate2)(uint64_t); static AccessibilityCustomActionsCountDelegate __axCustomActionsCountDelegate = NULL; +static AccessibilityCustomActionsCountDelegate2 __axCustomActionsCountDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityCustomActionsCount(AccessibilityCustomActionsCountDelegate delegate) { __axCustomActionsCountDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityCustomActionsCount2(AccessibilityCustomActionsCountDelegate2 delegate) { __axCustomActionsCountDelegate2 = delegate; } typedef bool (* AccessibilityPerformCustomActionDelegate)(int32_t, int32_t); +typedef bool (* AccessibilityPerformCustomActionDelegate2)(uint64_t, int32_t); static AccessibilityPerformCustomActionDelegate __axPerformCustomActionDelegate = NULL; +static AccessibilityPerformCustomActionDelegate2 __axPerformCustomActionDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityPerformCustomAction(AccessibilityPerformCustomActionDelegate delegate) { __axPerformCustomActionDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityPerformCustomAction2(AccessibilityPerformCustomActionDelegate2 delegate) { __axPerformCustomActionDelegate2 = delegate; } typedef char *(* AccessibilityCustomActionNameDelegate)(int32_t, int32_t); +typedef char *(* AccessibilityCustomActionNameDelegate2)(uint64_t, int32_t); static AccessibilityCustomActionNameDelegate __axCustomActionNameDelegate = NULL; +static AccessibilityCustomActionNameDelegate2 __axCustomActionNameDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityCustomActionName(AccessibilityCustomActionNameDelegate delegate) { __axCustomActionNameDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityCustomActionName2(AccessibilityCustomActionNameDelegate2 delegate) { __axCustomActionNameDelegate2 = delegate; } typedef bool (* AccessibilityScrollDelegate)(int32_t, uint32_t); +typedef bool (* AccessibilityScrollDelegate2)(uint64_t, uint32_t); static AccessibilityScrollDelegate __axScrollDelegate = NULL; +static AccessibilityScrollDelegate2 __axScrollDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityScroll(AccessibilityScrollDelegate delegate) { __axScrollDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityScroll2(AccessibilityScrollDelegate2 delegate) { __axScrollDelegate2 = delegate; } typedef bool (* AccessibilityPerformMagicTapDelegate)(int32_t); +typedef bool (* AccessibilityPerformMagicTapDelegate2)(uint64_t); static AccessibilityPerformMagicTapDelegate __axPerformMagicTapDelegate = NULL; +static AccessibilityPerformMagicTapDelegate2 __axPerformMagicTapDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityPerformMagicTap(AccessibilityPerformMagicTapDelegate delegate) { __axPerformMagicTapDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityPerformMagicTap2(AccessibilityPerformMagicTapDelegate2 delegate) { __axPerformMagicTapDelegate2 = delegate; } typedef bool (* AccessibilityPerformEscapeDelegate)(int32_t); +typedef bool (* AccessibilityPerformEscapeDelegate2)(uint64_t); static AccessibilityPerformEscapeDelegate __axPerformEscapeDelegate = NULL; +static AccessibilityPerformEscapeDelegate2 __axPerformEscapeDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityPerformEscape(AccessibilityPerformEscapeDelegate delegate) { __axPerformEscapeDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityPerformEscape2(AccessibilityPerformEscapeDelegate2 delegate) { __axPerformEscapeDelegate2 = delegate; } typedef bool (* AccessibilityActivateDelegate)(int32_t); +typedef bool (* AccessibilityActivateDelegate2)(uint64_t); static AccessibilityActivateDelegate __axActivateDelegate = NULL; +static AccessibilityActivateDelegate2 __axActivateDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityActivate(AccessibilityActivateDelegate delegate) { __axActivateDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityActivate2(AccessibilityActivateDelegate2 delegate) { __axActivateDelegate2 = delegate; } typedef void (* AccessibilityIncrementDelegate)(int32_t); +typedef void (* AccessibilityIncrementDelegate2)(uint64_t); static AccessibilityIncrementDelegate __axIncrementDelegate = NULL; +static AccessibilityIncrementDelegate2 __axIncrementDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityIncrement(AccessibilityIncrementDelegate delegate) { __axIncrementDelegate = delegate; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityIncrement2(AccessibilityIncrementDelegate2 delegate) { __axIncrementDelegate2 = delegate; } typedef void (* AccessibilityDecrementDelegate)(int32_t); +typedef void (* AccessibilityDecrementDelegate2)(uint64_t); static AccessibilityDecrementDelegate __axDecrementDelegate = NULL; +static AccessibilityDecrementDelegate2 __axDecrementDelegate2 = NULL; APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityDecrement(AccessibilityDecrementDelegate delegate) { __axDecrementDelegate = delegate; } - +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_registerAccessibilityDecrement2(AccessibilityDecrementDelegate2 delegate) { __axDecrementDelegate2 = delegate; } #pragma mark Settings @@ -553,7 +606,8 @@ - (void)_accessibilityStatusChangedCallback:(NSNotification *)notification { static _AppleAccessibilityNotificationObserver *_observer; -APPLE_ACCESSIBILITY_EXTERN void _UnityAX_InitializeAXRuntime(void) +// The callbackOption parameter represents a hint from Unity about which set of callbacks to use. +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_InitializeAXRuntime(int32_t callbackOption) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ @@ -602,139 +656,278 @@ APPLE_ACCESSIBILITY_EXTERN void _UnityAX_InitializeAXRuntime(void) [center addObserver:_observer selector:@selector(_accessibilityStatusChangedCallback:) name:UIAccessibilityOnOffSwitchLabelsDidChangeNotification object:nil]; } - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityFrame:^CGRect(NSNumber *identifier) { - if ( __axFrameDelegate == NULL ) - { - return CGRectZero; - } - char *rectStr = __axFrameDelegate((int32_t)identifier.integerValue); - return rectStr == NULL ? CGRectZero : CGRectFromString([NSString stringWithUTF8String:rectStr]); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityLabel:^NSString *(NSNumber *identifier) { - if ( __axLabelDelegate == NULL ) - { - return nil; - } - char *str = __axLabelDelegate((int32_t)identifier.integerValue); - return str == NULL ? nil : [NSString stringWithUTF8String:str]; - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityTraits:^UIAccessibilityTraits(NSNumber *identifier) { - if ( __axTraitsDelegate == NULL ) - { - return (uint64_t)0; - } - return __axTraitsDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityCustomActionsCount:^uint64_t(NSNumber *identifier) { - if ( __axCustomActionsCountDelegate == NULL ) - { - return (uint64_t)0; - } - return __axCustomActionsCountDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityPerformCustomAction:^BOOL(NSNumber *identifier, NSNumber *idx) { - if ( __axPerformCustomActionDelegate == NULL ) - { - return NO; - } - return __axPerformCustomActionDelegate((int32_t)identifier.integerValue, (int32_t)idx.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityCustomActionName:^NSString *(NSNumber *identifier, NSNumber *idx) { - if ( __axCustomActionNameDelegate == NULL ) - { - return nil; - } - char *str = __axCustomActionNameDelegate((int32_t)identifier.integerValue, (int32_t)idx.integerValue); - return str == NULL ? nil : [NSString stringWithUTF8String:str]; - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityIsAccessibilityElement:^BOOL(NSNumber *identifier) { - if ( __axIsElementDelegate == NULL ) - { - return YES; - } - return __axIsElementDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityHint:^NSString *(NSNumber *identifier) { - if ( __axHintDelegate == NULL ) - { - return nil; - } - char *str = __axHintDelegate((int32_t)identifier.integerValue); - return str == NULL ? nil : [NSString stringWithUTF8String:str]; - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityValue:^NSString *(NSNumber *identifier) { - if ( __axValueDelegate == NULL ) - { - return nil; - } - char *str = __axValueDelegate((int32_t)identifier.integerValue); - return str == NULL ? nil : [NSString stringWithUTF8String:str]; - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityActivationPoint:^CGPoint(NSNumber *identifier) { - if ( __axActivationPointDelegate == NULL ) - { - return kAXCenterPointDefaultPoint; - } - char *pointStr = __axActivationPointDelegate((int32_t)identifier.integerValue); - return pointStr == NULL ? kAXCenterPointDefaultPoint : CGPointFromString([NSString stringWithUTF8String:pointStr]); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityIdentifier:^NSString *(NSNumber *identifier) { - if ( __axIdentifierDelegate == NULL ) - { - return nil; - } - char *str = __axIdentifierDelegate((int32_t)identifier.integerValue); - return str == NULL ? nil : [NSString stringWithUTF8String:str]; - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityViewIsModal:^BOOL(NSNumber *identifier) { - if ( __axViewIsModalDelegate == NULL ) - { - return NO; - } - return __axViewIsModalDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityScroll:^BOOL(NSNumber *identifier, UIAccessibilityScrollDirection direction) { - if ( __axScrollDelegate == NULL ) - { - return NO; - } - return __axScrollDelegate((int32_t)identifier.integerValue, (int32_t)direction); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityPerformMagicTap:^BOOL(NSNumber *identifier) { - if ( __axPerformMagicTapDelegate == NULL ) - { - return NO; - } - return __axPerformMagicTapDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityPerformEscape:^BOOL(NSNumber *identifier) { - if ( __axPerformEscapeDelegate == NULL ) - { - return NO; - } - return __axPerformEscapeDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityActivate:^BOOL(NSNumber *identifier) { - if ( __axActivateDelegate == NULL ) - { - return NO; - } - return __axActivateDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityIncrement:^void(NSNumber *identifier) { - if ( __axIncrementDelegate == NULL ) - { - return; - } - __axIncrementDelegate((int32_t)identifier.integerValue); - }]; - [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityDecrement:^void(NSNumber *identifier) { - if ( __axDecrementDelegate == NULL ) - { - return; - } - __axDecrementDelegate((int32_t)identifier.integerValue); - }]; + if (callbackOption == 0) + { + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityFrame:^CGRect(NSNumber *identifier) { + if ( __axFrameDelegate == NULL ) + { + return CGRectZero; + } + char *rectStr = __axFrameDelegate((int32_t)identifier.integerValue); + return rectStr == NULL ? CGRectZero : CGRectFromString([NSString stringWithUTF8String:rectStr]); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityLabel:^NSString *(NSNumber *identifier) { + if ( __axLabelDelegate == NULL ) + { + return nil; + } + char *str = __axLabelDelegate((int32_t)identifier.integerValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityTraits:^UIAccessibilityTraits(NSNumber *identifier) { + if ( __axTraitsDelegate == NULL ) + { + return (uint64_t)0; + } + return __axTraitsDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityIsAccessibilityElement:^BOOL(NSNumber *identifier) { + if ( __axIsElementDelegate == NULL ) + { + return YES; + } + return __axIsElementDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityHint:^NSString *(NSNumber *identifier) { + if ( __axHintDelegate == NULL ) + { + return nil; + } + char *str = __axHintDelegate((int32_t)identifier.integerValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityValue:^NSString *(NSNumber *identifier) { + if ( __axValueDelegate == NULL ) + { + return nil; + } + char *str = __axValueDelegate((int32_t)identifier.integerValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityIdentifier:^NSString *(NSNumber *identifier) { + if ( __axIdentifierDelegate == NULL ) + { + return nil; + } + char *str = __axIdentifierDelegate((int32_t)identifier.integerValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityViewIsModal:^BOOL(NSNumber *identifier) { + if ( __axViewIsModalDelegate == NULL ) + { + return NO; + } + return __axViewIsModalDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityActivationPoint:^CGPoint(NSNumber *identifier) { + if ( __axActivationPointDelegate == NULL ) + { + return kAXCenterPointDefaultPoint; + } + char *pointStr = __axActivationPointDelegate((int32_t)identifier.integerValue); + return pointStr == NULL ? kAXCenterPointDefaultPoint : CGPointFromString([NSString stringWithUTF8String:pointStr]); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityCustomActionsCount:^uint64_t(NSNumber *identifier) { + if ( __axCustomActionsCountDelegate == NULL ) + { + return (uint64_t)0; + } + return __axCustomActionsCountDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityPerformCustomAction:^BOOL(NSNumber *identifier, NSNumber *idx) { + if ( __axPerformCustomActionDelegate == NULL ) + { + return NO; + } + return __axPerformCustomActionDelegate((int32_t)identifier.integerValue, (int32_t)idx.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityCustomActionName:^NSString *(NSNumber *identifier, NSNumber *idx) { + if ( __axCustomActionNameDelegate == NULL ) + { + return nil; + } + char *str = __axCustomActionNameDelegate((int32_t)identifier.integerValue, (int32_t)idx.integerValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityScroll:^BOOL(NSNumber *identifier, UIAccessibilityScrollDirection direction) { + if ( __axScrollDelegate == NULL ) + { + return NO; + } + return __axScrollDelegate((int32_t)identifier.integerValue, (int32_t)direction); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityPerformMagicTap:^BOOL(NSNumber *identifier) { + if ( __axPerformMagicTapDelegate == NULL ) + { + return NO; + } + return __axPerformMagicTapDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityPerformEscape:^BOOL(NSNumber *identifier) { + if ( __axPerformEscapeDelegate == NULL ) + { + return NO; + } + return __axPerformEscapeDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityActivate:^BOOL(NSNumber *identifier) { + if ( __axActivateDelegate == NULL ) + { + return NO; + } + return __axActivateDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityIncrement:^void(NSNumber *identifier) { + if ( __axIncrementDelegate == NULL ) + { + return; + } + __axIncrementDelegate((int32_t)identifier.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityDecrement:^void(NSNumber *identifier) { + if ( __axDecrementDelegate == NULL ) + { + return; + } + __axDecrementDelegate((int32_t)identifier.integerValue); + }]; + } + else if (callbackOption == 2) + { + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityFrame:^CGRect(NSNumber *identifier) { + if ( __axFrameDelegate2 == NULL ) + { + return CGRectZero; + } + char *rectStr = __axFrameDelegate2((uint64_t)identifier.unsignedLongLongValue); + return rectStr == NULL ? CGRectZero : CGRectFromString([NSString stringWithUTF8String:rectStr]); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityLabel:^NSString *(NSNumber *identifier) { + if ( __axLabelDelegate2 == NULL ) + { + return nil; + } + char *str = __axLabelDelegate2((uint64_t)identifier.unsignedLongLongValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityTraits:^UIAccessibilityTraits(NSNumber *identifier) { + if ( __axTraitsDelegate2 == NULL ) + { + return (uint64_t)0; + } + return __axTraitsDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityIsAccessibilityElement:^BOOL(NSNumber *identifier) { + if ( __axIsElementDelegate2 == NULL ) + { + return YES; + } + return __axIsElementDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityHint:^NSString *(NSNumber *identifier) { + if ( __axHintDelegate2 == NULL ) + { + return nil; + } + char *str = __axHintDelegate2((uint64_t)identifier.unsignedLongLongValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityValue:^NSString *(NSNumber *identifier) { + if ( __axValueDelegate2 == NULL ) + { + return nil; + } + char *str = __axValueDelegate2((uint64_t)identifier.unsignedLongLongValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityIdentifier:^NSString *(NSNumber *identifier) { + if ( __axIdentifierDelegate2 == NULL ) + { + return nil; + } + char *str = __axIdentifierDelegate2((uint64_t)identifier.unsignedLongLongValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityViewIsModal:^BOOL(NSNumber *identifier) { + if ( __axViewIsModalDelegate2 == NULL ) + { + return NO; + } + return __axViewIsModalDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityActivationPoint:^CGPoint(NSNumber *identifier) { + if ( __axActivationPointDelegate2 == NULL ) + { + return kAXCenterPointDefaultPoint; + } + char *pointStr = __axActivationPointDelegate2((uint64_t)identifier.unsignedLongLongValue); + return pointStr == NULL ? kAXCenterPointDefaultPoint : CGPointFromString([NSString stringWithUTF8String:pointStr]); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityCustomActionsCount:^uint64_t(NSNumber *identifier) { + if ( __axCustomActionsCountDelegate2 == NULL ) + { + return (uint64_t)0; + } + return __axCustomActionsCountDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityPerformCustomAction:^BOOL(NSNumber *identifier, NSNumber *idx) { + if ( __axPerformCustomActionDelegate2 == NULL ) + { + return NO; + } + return __axPerformCustomActionDelegate2((uint64_t)identifier.unsignedLongLongValue, (int32_t)idx.integerValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityCustomActionName:^NSString *(NSNumber *identifier, NSNumber *idx) { + if ( __axCustomActionNameDelegate2 == NULL ) + { + return nil; + } + char *str = __axCustomActionNameDelegate2((uint64_t)identifier.unsignedLongLongValue, (int32_t)idx.integerValue); + return str == NULL ? nil : [NSString stringWithUTF8String:str]; + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityScroll:^BOOL(NSNumber *identifier, UIAccessibilityScrollDirection direction) { + if ( __axScrollDelegate2 == NULL ) + { + return NO; + } + return __axScrollDelegate2((uint64_t)identifier.unsignedLongLongValue, (int32_t)direction); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityPerformMagicTap:^BOOL(NSNumber *identifier) { + if ( __axPerformMagicTapDelegate2 == NULL ) + { + return NO; + } + return __axPerformMagicTapDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityPerformEscape:^BOOL(NSNumber *identifier) { + if ( __axPerformEscapeDelegate2 == NULL ) + { + return NO; + } + return __axPerformEscapeDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityActivate:^BOOL(NSNumber *identifier) { + if ( __axActivateDelegate2 == NULL ) + { + return NO; + } + return __axActivateDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityIncrement:^void(NSNumber *identifier) { + if ( __axIncrementDelegate2 == NULL ) + { + return; + } + __axIncrementDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + [AppleAccessibilityRuntime.sharedInstance setUnityAccessibilityDecrement:^void(NSNumber *identifier) { + if ( __axDecrementDelegate2 == NULL ) + { + return; + } + __axDecrementDelegate2((uint64_t)identifier.unsignedLongLongValue); + }]; + } }); } @@ -748,11 +941,21 @@ APPLE_ACCESSIBILITY_EXTERN void _UnityAX_RegisterElementWithIdentifier(int32_t i [AppleAccessibilityRuntime.sharedInstance registerAccessibilityElementWithIdentifier:@(identifier) parent: hasParent ? @(parentIdentifier) : nil hasParent:hasParent]; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_RegisterElementWithIdentifier2(uint64_t identifier, uint64_t parentIdentifier, bool hasParent) +{ + [AppleAccessibilityRuntime.sharedInstance registerAccessibilityElementWithIdentifier:@(identifier) parent: hasParent ? @(parentIdentifier) : nil hasParent:hasParent]; +} + APPLE_ACCESSIBILITY_EXTERN void _UnityAX_UnregisterElementWithIdentifier(int32_t identifier) { [AppleAccessibilityRuntime.sharedInstance unregisterAccessibilityElementWithIdentifier:@(identifier)]; } +APPLE_ACCESSIBILITY_EXTERN void _UnityAX_UnregisterElementWithIdentifier2(uint64_t identifier) +{ + [AppleAccessibilityRuntime.sharedInstance unregisterAccessibilityElementWithIdentifier:@(identifier)]; +} + APPLE_ACCESSIBILITY_EXTERN bool _UnityAX_RuniOSSideUnitTestWithName(const char *name) { return [AppleAccessibilityRuntime.sharedInstance runUnitTestWithName:[NSString stringWithUTF8String:name]]; @@ -762,3 +965,8 @@ APPLE_ACCESSIBILITY_EXTERN bool _UnityAX_RuniOSSideUnitTestWithKeyPathExpectingS { return [AppleAccessibilityRuntime.sharedInstance runUnitTestForIdentifier:@(identifier) keyPath:[NSString stringWithUTF8String:keyPath] expected:[NSString stringWithUTF8String:expected]]; } + +APPLE_ACCESSIBILITY_EXTERN bool _UnityAX_RuniOSSideUnitTestWithKeyPathExpectingStringResult2(uint64_t identifier, const char *keyPath, const char *expected) +{ + return [AppleAccessibilityRuntime.sharedInstance runUnitTestForIdentifier:@(identifier) keyPath:[NSString stringWithUTF8String:keyPath] expected:[NSString stringWithUTF8String:expected]]; +} diff --git a/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuildProfileEditor.cs b/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuildProfileEditor.cs index aef4ad7e..82c17ae8 100644 --- a/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuildProfileEditor.cs +++ b/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuildProfileEditor.cs @@ -180,7 +180,11 @@ public override void OnInspectorGUI() { if (_serializedDefaultInfoPlist.objectReferenceValue != null) { +#if UNITY_6000_4_OR_NEWER + string filePath = AssetDatabase.GetAssetPath(_serializedDefaultInfoPlist.objectReferenceValue.GetEntityId()); +#else string filePath = AssetDatabase.GetAssetPath(_serializedDefaultInfoPlist.objectReferenceValue.GetInstanceID()); +#endif if (!filePath.EndsWith(".plist")) { _serializedDefaultInfoPlist.objectReferenceValue = null; @@ -232,7 +236,11 @@ public override void OnInspectorGUI() EditorGUILayout.ObjectField(_serializedDefaultEntitlements, typeof(UnityEngine.Object), defaultEntitlementsLabel, GUILayout.MinWidth(_minLabelWidth)); if (EditorGUI.EndChangeCheck() && !(_serializedDefaultEntitlements.objectReferenceValue is null)) { +#if UNITY_6000_4_OR_NEWER + string filePath = AssetDatabase.GetAssetPath(_serializedDefaultEntitlements.objectReferenceValue.GetEntityId()); +#else string filePath = AssetDatabase.GetAssetPath(_serializedDefaultEntitlements.objectReferenceValue.GetInstanceID()); +#endif if (!filePath.EndsWith(".entitlements")) { _serializedDefaultEntitlements.objectReferenceValue = null; diff --git a/plug-ins/Apple.CoreHaptics/Apple.CoreHaptics_Unity/Assets/Apple.CoreHaptics/Editor/UnityPickers/AssetPicker.cs b/plug-ins/Apple.CoreHaptics/Apple.CoreHaptics_Unity/Assets/Apple.CoreHaptics/Editor/UnityPickers/AssetPicker.cs index 43404a18..a072e78a 100644 --- a/plug-ins/Apple.CoreHaptics/Apple.CoreHaptics_Unity/Assets/Apple.CoreHaptics/Editor/UnityPickers/AssetPicker.cs +++ b/plug-ins/Apple.CoreHaptics/Apple.CoreHaptics_Unity/Assets/Apple.CoreHaptics/Editor/UnityPickers/AssetPicker.cs @@ -129,7 +129,11 @@ private Type AssetType [SerializeField] private string nameFilter; +#if UNITY_6000_4_OR_NEWER + private HierarchyIterator hierarchyIterator; +#else private HierarchyProperty hierarchyProperty; +#endif private List loadedAssets; @@ -251,7 +255,11 @@ public static void PropertyField( buttonPos.xMin = buttonPos.xMax - EditorGUIUtility.singleLineHeight; var requesterWindow = focusedWindow; +#if UNITY_6000_4_OR_NEWER + string controlName = property.serializedObject.targetObject.GetEntityId() + "_" + property.propertyPath; +#else string controlName = property.serializedObject.targetObject.GetInstanceID() + "_" + property.propertyPath; +#endif var e = Event.current; bool showHotKey = GUI.GetNameOfFocusedControl() == controlName && @@ -929,6 +937,15 @@ private void UpdateAssetList() loadedAssets = new List(); loadedAssetsFlat.Clear(); +#if UNITY_6000_4_OR_NEWER + hierarchyIterator = new HierarchyIterator(HierarchyType.Assets); + hierarchyIterator.SetSearchFilter(GetFilter(), (int)SearchableEditorWindow.SearchMode.All); + + while (hierarchyIterator.Next(null)) + { + AddAssetInfo(hierarchyIterator); + } +#else hierarchyProperty = new HierarchyProperty(HierarchyType.Assets); hierarchyProperty.SetSearchFilter(GetFilter(), (int)SearchableEditorWindow.SearchMode.All); @@ -936,6 +953,7 @@ private void UpdateAssetList() { AddAssetInfo(hierarchyProperty); } +#endif FilterAssets(ref loadedAssets); loadedAssets.ForEach(SortChildren); @@ -967,9 +985,15 @@ private string GetFilter() return stringBuilder.ToString(); } +#if UNITY_6000_4_OR_NEWER + private void AddAssetInfo(HierarchyIterator hi) + { + var path = AssetDatabase.GUIDToAssetPath(hi.guid); +#else private void AddAssetInfo(HierarchyProperty hp) { var path = AssetDatabase.GUIDToAssetPath(hp.guid); +#endif var folders = path.Split('/'); var list = loadedAssets; HierarchyEntry parent = null; @@ -993,10 +1017,17 @@ private void AddAssetInfo(HierarchyProperty hp) } var hierarchyEntry = new HierarchyEntry { +#if UNITY_6000_4_OR_NEWER + Parent = parent, + Name = hi.name, + Path = path, + AssetGuid = hi.guid, +#else Parent = parent, Name = hp.name, Path = path, AssetGuid = hp.guid, +#endif }; list.Add(hierarchyEntry); } diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/UnityPickers/AssetPicker.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/UnityPickers/AssetPicker.cs index debe2293..24f7b9a4 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/UnityPickers/AssetPicker.cs +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/UnityPickers/AssetPicker.cs @@ -129,9 +129,13 @@ private Type AssetType [SerializeField] private string nameFilter; +#if UNITY_6000_4_OR_NEWER + private HierarchyIterator hierarchyIterator; +#else private HierarchyProperty hierarchyProperty; +#endif - private List loadedAssets; + private List loadedAssets; private readonly List loadedAssetsFlat = new List(); @@ -249,8 +253,12 @@ public static void PropertyField( buttonPos.xMin = buttonPos.xMax - EditorGUIUtility.singleLineHeight; var requesterWindow = focusedWindow; +#if UNITY_6000_4_OR_NEWER + string controlName = property.serializedObject.targetObject.GetEntityId() + "_" + property.propertyPath; +#else string controlName = property.serializedObject.targetObject.GetInstanceID() + "_" + property.propertyPath; - var e = Event.current; +#endif + var e = Event.current; bool showHotKey = GUI.GetNameOfFocusedControl() == controlName && e.type == EventType.KeyDown && @@ -919,6 +927,15 @@ private void UpdateAssetList() loadedAssets = new List(); loadedAssetsFlat.Clear(); +#if UNITY_6000_4_OR_NEWER + hierarchyIterator = new HierarchyIterator(HierarchyType.Assets); + hierarchyIterator.SetSearchFilter(GetFilter(), (int)SearchableEditorWindow.SearchMode.All); + + while (hierarchyIterator.Next(null)) + { + AddAssetInfo(hierarchyIterator); + } +#else hierarchyProperty = new HierarchyProperty(HierarchyType.Assets); hierarchyProperty.SetSearchFilter(GetFilter(), (int)SearchableEditorWindow.SearchMode.All); @@ -926,8 +943,9 @@ private void UpdateAssetList() { AddAssetInfo(hierarchyProperty); } +#endif - FilterAssets(ref loadedAssets); + FilterAssets(ref loadedAssets); loadedAssets.ForEach(SortChildren); loadedAssetsFlat.Clear(); @@ -957,10 +975,18 @@ private string GetFilter() return stringBuilder.ToString(); } - private void AddAssetInfo(HierarchyProperty hp) +#if UNITY_6000_4_OR_NEWER + private void AddAssetInfo(HierarchyIterator hi) +#else + private void AddAssetInfo(HierarchyProperty hp) +#endif { +#if UNITY_6000_4_OR_NEWER + var path = AssetDatabase.GUIDToAssetPath(hi.guid); +#else var path = AssetDatabase.GUIDToAssetPath(hp.guid); - var folders = path.Split('/'); +#endif + var folders = path.Split('/'); var list = loadedAssets; HierarchyEntry parent = null; for (int ii = 1; ii < folders.Length - 1; ii++) // 1 to skip Assets folder, -1 to skip asset name @@ -984,10 +1010,18 @@ private void AddAssetInfo(HierarchyProperty hp) var hierarchyEntry = new HierarchyEntry { Parent = parent, - Name = hp.name, - Path = path, - AssetGuid = hp.guid, - }; +#if UNITY_6000_4_OR_NEWER + Name = hi.name, +#else + Name = hp.name, +#endif + Path = path, +#if UNITY_6000_4_OR_NEWER + AssetGuid = hi.guid, +#else + AssetGuid = hp.guid, +#endif + }; list.Add(hierarchyEntry); } diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASEListener.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASEListener.cs index 3add6fdc..b51fb19e 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASEListener.cs +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASEListener.cs @@ -242,7 +242,11 @@ private void OnDrawGizmos() if (entry is PHASESpatialMixer) { PHASESpatialMixer mixer = entry as PHASESpatialMixer; +#if UNITY_6000_4_OR_NEWER + if (Selection.Contains(mixer.GetEntityId())) +#else if (Selection.Contains(mixer.GetInstanceID())) +#endif { Helpers.DirectivityModelSubbandParameters subbandParameters = mixer.GetListenerDirectivityModelSubbandParameters(); switch (mixer.GetListenerDirectivityType()) diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASESource.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASESource.cs index b18a963b..0f7453ff 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASESource.cs +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Runtime/PHASESource.cs @@ -473,7 +473,12 @@ private void OnDrawGizmos() if (entry is PHASESpatialMixer) { PHASESpatialMixer mixer = entry as PHASESpatialMixer; + +#if UNITY_6000_4_OR_NEWER + if (Selection.Contains(mixer.GetEntityId())) +#else if (Selection.Contains(mixer.GetInstanceID())) +#endif { Helpers.DirectivityModelSubbandParameters subbandParameters = mixer.GetSourceDirectivityModelSubbandParameters(); switch (mixer.GetSourceDirectivityType()) diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Tests/Runtime/PHASETests.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Tests/Runtime/PHASETests.cs index e5eff6c7..dfea8925 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Tests/Runtime/PHASETests.cs +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Tests/Runtime/PHASETests.cs @@ -35,7 +35,11 @@ public IEnumerator PHASETestsCreatePlayDestroySource([ValueSource(nameof(m_testS PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, $"Failed to create {testSourceName}"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, $"Failed to create {testSourceName}"); +#endif source.Play(); yield return new WaitForFixedUpdate(); @@ -59,7 +63,11 @@ public IEnumerator PHASETestSetInvalidGainOnSource() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); @@ -86,7 +94,11 @@ public IEnumerator PHASETestsCreatePlaySwitchDestroySource() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create Footsteps"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create Footsteps"); +#endif source.Play(); yield return new WaitForSeconds(0.5f); @@ -116,7 +128,11 @@ public IEnumerator PHASETestsDestroyLoopingSource() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); @@ -143,7 +159,11 @@ public IEnumerator PHASETestsDisableAndEnableLoopingSource() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); @@ -182,7 +202,11 @@ public IEnumerator PHASETestOccluder() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); @@ -213,7 +237,11 @@ public IEnumerator PHASETestOccluderWithSubmeshesAndParentScaling() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); @@ -244,7 +272,11 @@ public IEnumerator PHASETestPlaySoundEventMultipleTimes() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.05f); @@ -270,7 +302,11 @@ public IEnumerator PHASETestOccluderDisableAndEnable() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); @@ -310,7 +346,11 @@ public IEnumerator PHASETestDisableAndEnableListener() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); @@ -341,7 +381,11 @@ public IEnumerator PHASETestChangeReverbOnListener() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.5f); @@ -370,7 +414,11 @@ public IEnumerator PHASETestSetInvalidGainOnListener() PHASESource source = sourceObject.GetComponent(); yield return new WaitForFixedUpdate(); +#if UNITY_6000_4_OR_NEWER + Assert.IsTrue(source.GetEntityId() != EntityId.None, "Failed to create looping source"); +#else Assert.IsTrue(source.GetInstanceID() != InvalidId, "Failed to create looping source"); +#endif source.Play(); yield return new WaitForSeconds(0.75f); diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorUtilities.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorUtilities.cs index 753973be..fbfb38af 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorUtilities.cs +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorUtilities.cs @@ -265,7 +265,11 @@ private static void CreateGraph() { public static void CreateFromTemplate(string initialName, string templatePath) { ProjectWindowUtil.StartNameEditingIfProjectWindowExists( +#if UNITY_6000_4_OR_NEWER + EntityId.None, +#else 0, +#endif ScriptableObject.CreateInstance(), initialName, scriptIcon, @@ -273,9 +277,15 @@ public static void CreateFromTemplate(string initialName, string templatePath) { ); } +#if UNITY_6000_4_OR_NEWER + /// Inherits from AssetCreationEndAction, must override AssetCreationEndAction.Action + public class DoCreateCodeFile : UnityEditor.ProjectWindowCallback.AssetCreationEndAction { + public override void Action(EntityId entityId, string pathName, string resourceFile) { +#else /// Inherits from EndNameAction, must override EndNameAction.Action public class DoCreateCodeFile : UnityEditor.ProjectWindowCallback.EndNameEditAction { public override void Action(int instanceId, string pathName, string resourceFile) { +#endif Object o = CreateScript(pathName, resourceFile); ProjectWindowUtil.ShowCreatedAsset(o); } diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorWindow.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorWindow.cs index a7ec96bc..a674c578 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorWindow.cs +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/xNode/Editor/NodeEditorWindow.cs @@ -186,8 +186,13 @@ public void DeselectNode(XNode.Node node) { } [OnOpenAsset(0)] +#if UNITY_6000_4_OR_NEWER + public static bool OnOpen(EntityId entityId, int line) { + XNode.NodeGraph nodeGraph = EditorUtility.EntityIdToObject(entityId) as XNode.NodeGraph; +#else public static bool OnOpen(int instanceID, int line) { XNode.NodeGraph nodeGraph = EditorUtility.InstanceIDToObject(instanceID) as XNode.NodeGraph; +#endif if (nodeGraph != null) { Open(nodeGraph); return true;