public static ViewId RegisterViewSource(this World world, UnityEngine.AddressableAssets.AssetReference prefab)
 {
     return(world.RegisterViewSource(new UnityGameObjectProviderInitializer(), prefab));
 }
        public static ViewId RegisterViewSource <TProvider>(this World world, TProvider providerInitializer, UnityEngine.AddressableAssets.AssetReference prefab) where TProvider : struct, IViewsProviderInitializer
        {
            var viewsModule = world.GetModule <ViewsModule>();

            return(viewsModule.RegisterViewSource(providerInitializer, prefab));
        }
        public static ViewId RegisterViewSource <TProvider>(this ViewsModule viewsModule, TProvider providerInitializer, UnityEngine.AddressableAssets.AssetReference addressablePrefab) where TProvider : struct, IViewsProviderInitializer
        {
            if (addressablePrefab == null)
            {
                ViewSourceIsNullException.Throw();
            }

            #if VIEWS_REGISTER_VIEW_SOURCE_CHECK_STATE
            if (viewsModule.world.HasStep(WorldStep.LogicTick) == true)
            {
                throw new InStateException();
            }
            #endif

            var handle = addressablePrefab.LoadAssetAsync <IView>();
            var prefab = handle.WaitForCompletion();
            return(viewsModule.RegisterViewSource(providerInitializer, prefab));
        }