Version 2.3.2

Hi Justin

Getting some build errors that are preventing builds from completing after the recent update.

Using Unity 2020.3.3f URP
UCC 2.3.2 and all the latest UCC Addons

Edit: Ok, I just made a new project in UNity 2020.3.2 URP and installed the latest version of UCC and it built fine, so it's something in my project. However, are you able to suggest where to look from these errors?

Code:
Exception: Unity.IL2CPP.Building.BuilderFailedException: Opsive.Shared.Game.cpp
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5966): error C2440: 'type cast': cannot convert from 'RuntimeObject *' to 'PooledObjectKey_t121414D00A628AAC10EE2EDB34953C4769742778'
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5966): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5969): error C2440: 'type cast': cannot convert from 'RuntimeObject *' to 'PooledObjectKey_t121414D00A628AAC10EE2EDB34953C4769742778'
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5969): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5981): error C2678: binary '!': no operator found which takes a left-hand operand of type 'PooledObjectKey_t121414D00A628AAC10EE2EDB34953C4769742778' (or there is no acceptable conversion)
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5981): note: could be 'built-in C++ operator!(bool)'
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5981): note: while trying to match the argument list '(PooledObjectKey_t121414D00A628AAC10EE2EDB34953C4769742778)'
C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp(5981): error C2088: '!': illegal for struct

Invocation was: Executable: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64\cl.exe"
Arguments: "C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput\Opsive.Shared.Game.cpp" /nologo /c /bigobj /W3 /Z7 /EHs /GR- /Gy /utf-8 /wd4102 /wd4800 /wd4056 /wd4190 /wd4723 /wd4467 /wd4503 /wd4996 /wd4200 /wd4834 /Ox /Oi /Oy- /GS- /Gw /GF /Zo /Yupch-cpp.hpp /Fp"C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\il2cpp_cache\392BBEF4A52F70A7FD00163FD876CD68.pch" /MT /DNET_4_0 /DUNITY_AOT /DIL2CPP_MONO_DEBUGGER_DISABLED /DGC_NOT_DLL /DRUNTIME_IL2CPP /DBASELIB_INLINE_NAMESPACE=il2cpp_baselib /D_WIN32 /DWIN32 /DWIN32_THREADS /D_WINDOWS /DWINDOWS /D_UNICODE /DUNICODE /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS /D_WINSOCK_DEPRECATED_NO_WARNINGS /DNOMINMAX /D_NDEBUG /DNDEBUG /DWINDOWS_SDK_BUILD_VERSION=18362 /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP /I"C:\Program Files\Unity\Hub\Editor\2020.3.3f1\Editor\Data\il2cpp\libil2cpp" /I"C:\Program Files\Unity\Hub\Editor\2020.3.3f1\Editor\Data\il2cpp\libil2cpp" /I"C:\Program Files\Unity\Hub\Editor\2020.3.3f1\Editor\Data\il2cpp\external\bdwgc\include" /I"C:\Program Files\Unity\Hub\Editor\2020.3.3f1\Editor\Data\il2cpp\external\xxHash" /I"C:\Program Files\Unity\Hub\Editor\2020.3.3f1\Editor\Data\il2cpp\external\baselib\Include" /I"C:\Program Files\Unity\Hub\Editor\2020.3.3f1\Editor\Data\il2cpp\external\baselib\Platforms\Windows\Include" /I"C:\Program Files\Unity\Hub\Editor\2020.3.3f1\Editor\Data\il2cpp\libil2cpp\pch" /I"C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\Il2cppBuildCache\Windows\x64\il2cppOutput" /I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\winrt" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt" /Fo"C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\il2cpp_cache\CD50DEBEBB2E91646DE59EC420D333C1.obj" /Fd"C:\Users\brett\OneDrive\Documents\VirtualSonglinesGit\VS_MPv3\Library\il2cpp_cache\CD50DEBEBB2E91646DE59EC420D333C1.pdb"
EnvArg key: PATH value: C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86;C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64

   at Unity.IL2CPP.Building.CppProgramBuilder.BuildAllCppFiles(IEnumerable`1 sourceFilesToCompile, IBuildStatisticsCollector statisticsCollector)
   at Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
   at il2cpp.Compilation.CompilationDriver.Run(RuntimePlatform platform, BuildingOptions buildingOptions, ReadOnlyCollection`1 matchedAssemblyMethodSourceFiles)
   at il2cpp.Program.DoRun(String[] args, RuntimePlatform platform, BuildingOptions buildingOptions, Boolean throwExceptions)
UnityEditorInternal.Runner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1[T] setupStartInfo) (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1[T] arguments, System.Action`1[T] setupStartInfo) (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (UnityEditor.Il2Cpp.Il2CppBuildPipelineData data) (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEditorInternal.IL2CPPBuilder.Run () (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String stagingAreaData, UnityEditorInternal.IIl2CppPlatformProvider platformProvider, System.Action`1[T] modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry) (at <c9b5231e365148a4bc210cc4e439206d>:0)
DesktopStandalonePostProcessor.RunIL2CPP (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditorInternal.IIl2CppPlatformProvider il2cppPlatformProvider, System.Collections.Generic.List`1[T] cppPlugins) (at <c9b5231e365148a4bc210cc4e439206d>:0)
DesktopStandalonePostProcessor.SetupStagingArea (UnityEditor.Modules.BuildPostProcessArgs args, System.Collections.Generic.HashSet`1[T] filesToNotOverwrite) (at <c9b5231e365148a4bc210cc4e439206d>:0)
DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at <c9b5231e365148a4bc210cc4e439206d>:0)
Rethrow as BuildFailedException: Exception of type 'UnityEditor.Build.BuildFailedException' was thrown.
DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <c9b5231e365148a4bc210cc4e439206d>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Code:
Build completed with a result of 'Failed' in 572 seconds (571839 ms)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

Code:
UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors
  at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002ca] in <c9b5231e365148a4bc210cc4e439206d>:0
  at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in <c9b5231e365148a4bc210cc4e439206d>:0
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)


Thanks,
Nathan
 
Last edited:
Version 2.3.2 has been rereleased which fixes that IL2CPP bug. I was also able to reproduce the bug so submitted the bug report to Unity.
 
Thanks Guys!

Just got all these messages. Nothing like going to sleep with an issue and having it resloved when you wake up ;)

Nathan
 
Are there any decent instructions anywhere regarding what I am supposed to look for to reset up? Everything has gone so weird. I had it all working in the previous versions with no errors at all integrating TPC and UIS. This is pretty chaotic at the moment haha. I can't make my character stay still while the inventory is open anymore.

Though I think I have worked the errors out...

EDIT: So I think generally I am on the right track but I have 2 major issues.

1) The TPC character and camera can move while the menus are open now. Maybe there is a option I am missing somewhere to sort this but never had that issue before.

2) The cursor no longer appears when the inventory menus open. Maybe related to the character still moving and not passing control properly.

2) The weapon item no longer equips the prefab. I tried dragging it into the UIS Manager "Item Setup". The console says it was "bound correctly" but it does not equip anymore and I get this big old error. Again, maybe something I missed somewhere but the notes say if I already have the prefab I should just have to drag it in there to bind it? This is the error while trying to equip:

IndexOutOfRangeException: Index was outside the bounds of the array.
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.ActiveAndNextItemSetData.Reset () (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/ActiveAndNextItemSetData.cs:234)
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.BridgeEquippableProcessing.UpdateItemSetItems (System.Boolean equip) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/BridgeEquippableProcessing.cs:468)
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.BridgeEquippableProcessing.OnItemAddedToEquippable (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, Opsive.UltimateInventorySystem.Core.DataStructures.ItemStack addedItemStack) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/BridgeEquippableProcessing.cs:196)
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.BridgeEquippableProcessing.OnAddItemToInventory (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, Opsive.UltimateInventorySystem.Core.DataStructures.ItemStack addedItemStack) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/BridgeEquippableProcessing.cs:770)
Opsive.Shared.Events.InvokableAction`2[T1,T2].Invoke (T1 arg1, T2 arg2) (at <27da9e1afec54f2fb2a11d46a234f9df>:0)
Opsive.Shared.Events.EventHandler.ExecuteEvent[T1,T2] (System.Object obj, System.String eventName, T1 arg1, T2 arg2) (at <27da9e1afec54f2fb2a11d46a234f9df>:0)
Opsive.UltimateInventorySystem.Core.InventoryCollections.ItemCollection.NotifyAdd (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, Opsive.UltimateInventorySystem.Core.DataStructures.ItemStack addedItemStack) (at Assets/Opsive/UltimateInventorySystem/Scripts/Core/InventoryCollections/ItemCollection.cs:430)
Opsive.UltimateInventorySystem.Core.InventoryCollections.ItemSlotCollection.SetItemAmount (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, System.Int32 slotIndex, System.Boolean removePreviousItem) (at Assets/Opsive/UltimateInventorySystem/Scripts/Core/InventoryCollections/ItemSlotCollection.cs:264)
Opsive.UltimateInventorySystem.Core.InventoryCollections.ItemSlotCollection.AddItem (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, System.Int32 slotIndex) (at Assets/Opsive/UltimateInventorySystem/Scripts/Core/InventoryCollections/ItemSlotCollection.cs:228)
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.CharacterInventoryBridge.MoveItemToEquippable (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, System.Int32 equippableCollectionIndex, System.Int32 slotIndex) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/CharacterInventoryBridge.cs:376)
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.CharacterInventoryBridge.MoveEquip (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, System.Int32 equippableItemCollectionSet, System.Int32 slotID, System.Boolean equip) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/CharacterInventoryBridge.cs:457)
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.CharacterInventoryBridge.MoveEquip (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, System.Boolean equip) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/CharacterInventoryBridge.cs:443)
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.CharacterEquipUnequipItemAction.InvokeActionInternal (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, Opsive.UltimateInventorySystem.ItemActions.ItemUser itemUser) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/InventoryItemActions/CharacterEquipUnequipItemAction.cs:76)
Opsive.UltimateInventorySystem.ItemActions.ItemAction.InvokeAction (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, Opsive.UltimateInventorySystem.ItemActions.ItemUser itemUser) (at Assets/Opsive/UltimateInventorySystem/Scripts/ItemActions/ItemAction.cs:97)
Opsive.UltimateInventorySystem.UI.Panels.ActionPanels.ItemActionPanel.InvokeActionInternal (System.Int32 index) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/Panels/ActionPanels/ItemActionPanel.cs:66)
Opsive.UltimateInventorySystem.UI.Panels.ActionPanels.ActionPanel`1[T].InvokeAction (System.Int32 index) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/Panels/ActionPanels/ActionPanel.cs:119)
Opsive.UltimateInventorySystem.UI.Panels.ActionPanels.ActionPanel`1+<>c__DisplayClass13_0[T].<OpenInternal>b__0 () (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/Panels/ActionPanels/ActionPanel.cs:69)
Opsive.UltimateInventorySystem.UI.CompoundElements.ActionButton.Press () (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/CompoundElements/ActionButton.cs:72)
Opsive.UltimateInventorySystem.UI.CompoundElements.ActionButton.OnSubmit (UnityEngine.EventSystems.BaseEventData eventData) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/CompoundElements/ActionButton.cs:230)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.ISubmitHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2019.4.21f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:127)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at C:/Program Files/Unity/Hub/Editor/2019.4.21f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
InControl.InControlInputModule:SendButtonEventToSelectedObject() (at Assets/InControl/Source/GUI/InControlInputModule.cs:238)
InControl.InControlInputModule:process() (at Assets/InControl/Source/GUI/InControlInputModule.cs:171)
UnityEngine.EventSystems.EventSystem:Update() (at C:/Program Files/Unity/Hub/Editor/2019.4.21f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:377)
 
Last edited:
The two first issues are mentioned in the UI section of the integration documenttion page and it shows what settings to toggle on/off to get the result you want:

The third issue sounds like you are using both the Unique Item Set and the Item Set rule at the same time.
Make sure to disable the "Unique Item Set" option on all your item prefabs and make sure your item pickups do not have an Item Set on them. Let the Item Set Rules Object do the heavy lifting.
Also Ensure your Item Set Rules are properly set and that your equippable item collection are well referenced by the Character Inventory script.
Read through the documentation again to make sure you did not miss anything.

If you find that we forgot to mention something or that somethin is unclear please let us know and we'll update the documentation accordingly
 
Okay, great. I have the first things from the UI section working fine. I am not understanding this item bit at all though. I have no idea why it's not working and it's frustrating as heck to read over and over. It's really not as clear as maybe you might think it comes of as. I have made a whole custom inventory and character and used UIS with integration since v1.0, not using demo things ect ect and always had no problem with the docs... So I should have a good idea how this all works. I also tried to make a new item by following the runtime item video but I am getting the same issues. What am I doing wrong?? ?

So... I am using an existing prefab that I have used and had worked in UIS and UCC totally fine. I have put the prefab into the "Item Setup" and it has added both "Item Object" and "Item Binding" to the item prefab. I have unchecked "Use Unique Item Set", I am not trying to use this as a pickup so I have added this to the player's default inventory Loadout. It appears in my inventory but I can not equip it properly it without that error and it disappears. The item definition already inherits equipable (it has always worked before the update). The item set rules object isn't too well explained either but if I set Slot 0 to the Weapons item category (essentially my "Single Item" or whatever it was called category), the item definition appears in the slot but that's it. Still, a big error and still no visible/usable equip. I've tried looking into the items Item Object and Item Binding, setting the item object component as the item definition it is supposed to be bound to... I am just trying random things now tbh. I even used a prefab from the demo and converted it to my database as a test to see where I am going wrong within the item and that doesn't work either, now I don't even know what's causing the issue. Same error, same equip issue. I noticed those demo items don't have Item Object component so tried removing that... So maybe it's not the item but gosh what is it then...?

Might I request a clear guide on the conversion of an existing UIS/UCC integration to the new system from the previous version..? Considering how fiddly and big the changes are, step by step is not really a silly request. Because I gotta say, this has been much tougher to understand than I anticipated even with help. 2 evenings of messing about is usually a stretch for updating time on any asset. Jumping back and forwards trying to locate what I am looking for in a mass pile of new information. Far too many repetitive new words and not a lot of direction except for like... "The Item Set Rule type can be chosen when adding an Item Set Rule to the Item Set Rules Object.". I just want my item to work, as it always has, and not want to tear my hair out ? Surely this process can be explained a lot clearer or simpler. If it wasn't for needing this update because of some things I asked about in a separate post to avoid a clunky-looking release I would have just given up by now. Seeing as this is another drastic change, you'll stop providing documentation and support so my hands are tied but to figure this out...
 
Last edited:
@CruttMutt
I'm sorry this update is giving you such a hard time.
Apart from setting up the Item Set Rules, and the Character Inventory Bridge, the rest should in theory pretty much work automatically.

I would recommend you open a new thread and explain in detail how you have setup your character and items with screenshots of your Inventory, Character Inventory Bridge and Inventory System Item Set Manager both at edit time and at runtime after equipping the item.
That might help me see what is wrong with your setup, or at least try to replicate it and see if I can reproduce the error.

Once we figure out your issue, I'll make sure to update the documentation such that it can help other users.
 
I was going to say I will start a new thread because this is targeting off from purely UCC. Thank you for undertanding.
 
Just wondering if there are any new announcements or features that is coming to UCC. Is there any previews or time line? :unsure:
 
Top