Beispiel #1
0
        public void CreateRequestToUnity([NotNull] IDeclaredElement declaredElement, IPsiSourceFile selectedSourceFile, string selectAnchor, bool focusUnity)
        {
            var finder   = mySolution.GetPsiServices().AsyncFinder;
            var consumer = new UnityUsagesFinderConsumer(myUnitySceneDataLocalCache, mySolutionDirectoryPath);

            var selectRequest = (selectedSourceFile == null || selectAnchor == null)
                ? null
                : CreateRequest(mySolutionDirectoryPath, myUnitySceneDataLocalCache, selectAnchor, selectedSourceFile, false);


            var lifetimeDef = myLifetime.CreateNested();
            var pi          = new ProgressIndicator(myLifetime);

            if (myBackgroundTaskHost != null)
            {
                var task = RiderBackgroundTaskBuilder.Create()
                           .WithTitle("Finding usages in Unity for: " + declaredElement.ShortName)
                           .AsIndeterminate()
                           .AsCancelable(() => { pi.Cancel(); })
                           .Build();

                myBackgroundTaskHost.AddNewTask(lifetimeDef.Lifetime, task);
            }

            myLocks.Tasks.StartNew(myLifetime, Scheduling.MainGuard, () =>
            {
                using (ReadLockCookie.Create())
                {
                    finder.FindAsync(new[] { declaredElement }, myYamlSearchDomain,
                                     consumer, SearchPattern.FIND_USAGES, pi,
                                     FinderSearchRoot.Empty, new UnityUsagesAsyncFinderCallback(lifetimeDef, myLifetime, consumer, myUnityHost, myEditorProtocol, myLocks,
                                                                                                declaredElement.ShortName, selectRequest, focusUnity));
                }
            });
        }
 public UnityUsagesAsyncFinderCallback(LifetimeDefinition lifetimeDef, UnityUsagesFinderConsumer consumer, UnityHost unityHost, IShellLocks shellLocks,
                                       string displayName, FindUsageResultElement selected, bool focusUnity)
 {
     myLifetimeDef = lifetimeDef;
     myConsumer    = consumer;
     myUnityHost   = unityHost;
     myShellLocks  = shellLocks;
     myDisplayName = displayName;
     mySelected    = selected;
     myFocusUnity  = focusUnity;
 }
Beispiel #3
0
 public UnityUsagesAsyncFinderCallback(LifetimeDefinition progressBarLifetimeDefinition, Lifetime componentLifetime, UnityUsagesFinderConsumer consumer, UnityHost unityHost, UnityEditorProtocol editorProtocol, IShellLocks shellLocks,
                                       string displayName, FindUsageResultElement selected, bool focusUnity)
 {
     myProgressBarLifetimeDefinition = progressBarLifetimeDefinition;
     myComponentLifetime             = componentLifetime;
     myConsumer       = consumer;
     myUnityHost      = unityHost;
     myEditorProtocol = editorProtocol;
     myShellLocks     = shellLocks;
     myDisplayName    = displayName;
     mySelected       = selected;
 }
 public UnityUsagesAsyncFinderCallback(LifetimeDefinition progressBarLifetimeDefinition,
                                       Lifetime componentLifetime, UnityUsagesFinderConsumer consumer,
                                       FrontendBackendHost frontendBackendHost,
                                       BackendUnityHost backendUnityHost, IShellLocks shellLocks,
                                       string displayName, AssetFindUsagesResultBase selected,
                                       bool focusUnity)
 {
     myProgressBarLifetimeDefinition = progressBarLifetimeDefinition;
     myComponentLifetime             = componentLifetime;
     myConsumer            = consumer;
     myFrontendBackendHost = frontendBackendHost;
     myBackendUnityHost    = backendUnityHost;
     myShellLocks          = shellLocks;
     myDisplayName         = displayName;
     mySelected            = selected;
 }
        public void CreateRequestToUnity([NotNull] IDeclaredElement declaredElement, LocalReference location, bool focusUnity)
        {
            var finder   = mySolution.GetPsiServices().AsyncFinder;
            var consumer = new UnityUsagesFinderConsumer(myAssetHierarchyProcessor, myAnimatorContainer, myPersistentIndexManager,
                                                         mySolutionDirectoryPath, declaredElement);

            var sourceFile = myPersistentIndexManager[location.OwningPsiPersistentIndex];

            if (sourceFile == null)
            {
                return;
            }

            var selectRequest = CreateRequest(mySolutionDirectoryPath, myAssetHierarchyProcessor, myAnimatorContainer,
                                              location, sourceFile, declaredElement, false);


            var lifetimeDef = myLifetime.CreateNested();
            var pi          = new ProgressIndicator(myLifetime);

            if (myBackgroundTaskHost != null)
            {
                var task = RiderBackgroundTaskBuilder.Create()
                           .WithTitle("Finding usages in Unity for: " + declaredElement.ShortName)
                           .AsIndeterminate()
                           .AsCancelable(() => { pi.Cancel(); })
                           .Build();

                myBackgroundTaskHost.AddNewTask(lifetimeDef.Lifetime, task);
            }

            myLocks.Tasks.StartNew(myLifetime, Scheduling.MainGuard, () =>
            {
                using (ReadLockCookie.Create())
                {
                    finder.FindAsync(new[] { declaredElement }, myYamlSearchDomain,
                                     consumer, SearchPattern.FIND_USAGES, pi,
                                     FinderSearchRoot.Empty, new UnityUsagesAsyncFinderCallback(lifetimeDef, myLifetime, consumer, myFrontendBackendHost, myBackendUnityHost, myLocks,
                                                                                                declaredElement.ShortName, selectRequest, focusUnity));
                }
            });
        }