public RiderEventHandlerDetector(ISolution solution,
                                  IApplicationWideContextBoundSettingStore settingsStore,
                                  AssetIndexingSupport assetIndexingSupport,
                                  UnityEventsElementContainer unityEventsElementContainer,
                                  UnityCodeInsightProvider codeInsightProvider,
                                  UnityUsagesCodeVisionProvider usagesCodeVisionProvider,
                                  DeferredCacheController deferredCacheController,
                                  UnitySolutionTracker solutionTracker,
                                  BackendUnityHost backendUnityHost,
                                  IconHost iconHost, AssetSerializationMode assetSerializationMode,
                                  PerformanceCriticalContextProvider contextProvider,
                                  [NotNull] AnimationEventUsagesContainer animationEventUsagesContainer)
     : base(solution, settingsStore, unityEventsElementContainer, contextProvider, animationEventUsagesContainer)
 {
     myAssetIndexingSupport     = assetIndexingSupport;
     myCodeInsightProvider      = codeInsightProvider;
     myUsagesCodeVisionProvider = usagesCodeVisionProvider;
     myDeferredCacheController  = deferredCacheController;
     mySolutionTracker          = solutionTracker;
     myBackendUnityHost         = backendUnityHost;
     myIconHost = iconHost;
     myAssetSerializationMode        = assetSerializationMode;
     myAnimationEventUsagesContainer = animationEventUsagesContainer;
 }
 // IconHost is optional so that we don't fail if we're in tests
 public UnityYamlExtraGroupingRulesProvider(UnitySceneProcessor sceneProcessor = null, UnitySolutionTracker unitySolutionTracker = null, IconHost iconHost = null)
 {
     if (unitySolutionTracker != null && unitySolutionTracker.IsUnityProject.HasValue() && unitySolutionTracker.IsUnityProject.Value &&
         iconHost != null && sceneProcessor != null)
     {
         ExtraRules = new IRiderUsageGroupingRule[]
         {
             new GameObjectUsageGroupingRule(sceneProcessor, iconHost),
             new ComponentUsageGroupingRule(iconHost)
         };
     }
     else
     {
         ExtraRules = new IRiderUsageGroupingRule[0];
     }
 }
Example #3
0
 public ExpensiveCodeCallGraphAnalyzer(Lifetime lifetime, ISolution solution,
                                       UnitySolutionTracker unitySolutionTracker, ICallGraphAnalyzersProvider provider)
     : base(lifetime, provider, MarkId, new CalleeToCallerCallGraphPropagator(solution, MarkId))
 {
     Enabled.Value = unitySolutionTracker.IsUnityProject.HasTrueValue();
 }
 public UnityUnitTestProjectArtifactResolverCollaborator(UnitySolutionTracker unitySolutionTracker)
 {
     myUnitySolutionTracker = unitySolutionTracker;
 }
Example #5
0
        public RiderUnityHighlightingContributor(Lifetime lifetime, ISolution solution, ITextControlManager textControlManager,
                                                 UnityCodeInsightFieldUsageProvider fieldUsageProvider, UnityCodeInsightProvider codeInsightProvider,
                                                 ISettingsStore settingsStore, ConnectionTracker connectionTracker, SolutionAnalysisService swa, IShellLocks locks,
                                                 PerformanceCriticalCodeCallGraphAnalyzer analyzer, UnitySolutionTracker solutionTracker, UnityApi unityApi,
                                                 UnityEventHandlerReferenceCache handlerReferenceCache, IconHost iconHost = null)
            : base(solution, settingsStore, textControlManager, swa, analyzer)
        {
            myFieldUsageProvider    = fieldUsageProvider;
            myCodeInsightProvider   = codeInsightProvider;
            myConnectionTracker     = connectionTracker;
            mySolutionTracker       = solutionTracker;
            myUnityApi              = unityApi;
            myHandlerReferenceCache = handlerReferenceCache;
            myIconHost              = iconHost;
            var invalidateDaemonResultGroupingEvent = locks.GroupingEvents.CreateEvent(lifetime,
                                                                                       "UnityHiglightingContributor::InvalidateDaemonResults", TimeSpan.FromSeconds(5), Rgc.Guarded,
                                                                                       () =>
            {
                solution.GetComponent <IDaemon>().Invalidate();
            });

            myConnectionTracker.State.Change.Advise_HasNew(lifetime, value =>
            {
                var old  = value.HasOld ? value.Old : UnityEditorState.Disconnected;
                var @new = value.New;

                // disconnect -> ??? -> disconnect is rarely case, we do not check it
                // connected -> ??? -> connected is the most important case
                if (old != UnityEditorState.Disconnected && @new != UnityEditorState.Disconnected)
                {
                    invalidateDaemonResultGroupingEvent.CancelIncoming();
                }
                else if (old == UnityEditorState.Disconnected && @new != UnityEditorState.Disconnected ||
                         @new == UnityEditorState.Disconnected && old != UnityEditorState.Disconnected)
                {
                    invalidateDaemonResultGroupingEvent.FireIncoming();
                }
            });
        }
 public UnityPencilsFilter(Lifetime lifetime, UnitySolutionTracker solutionTracker, UnityReferencesTracker referencesTracker, ISettingsStore store)
     : base("Unity", "Plugins", "Unity", "", solutionTracker.IsUnityProject.HasTrueValue(), store, s => s.EnablePerformanceCriticalCodeHighlighting)
 {
     referencesTracker.HasUnityReference.Advise(lifetime, b => IsVisible.Value = solutionTracker.IsUnityProject.HasTrueValue() || b);
 }
        public GeneratedFileNotification(Lifetime lifetime,
                                         FrontendBackendHost frontendBackendHost,
                                         BackendUnityHost backendUnityHost,
                                         UnitySolutionTracker solutionTracker,
                                         ISolution solution,
                                         AsmDefNameCache asmDefNameCache,
                                         [CanBeNull] TextControlHost textControlHost             = null,
                                         [CanBeNull] SolutionLifecycleHost solutionLifecycleHost = null,
                                         [CanBeNull] NotificationPanelHost notificationPanelHost = null)
        {
            if (solutionLifecycleHost == null)
            {
                return;
            }

            if (!solutionTracker.IsUnityGeneratedProject.Value)
            {
                return;
            }

            var fullStartupFinishedLifetimeDefinition = new LifetimeDefinition(lifetime);

            solutionLifecycleHost.FullStartupFinished.Advise(fullStartupFinishedLifetimeDefinition.Lifetime, _ =>
            {
                textControlHost.ViewHostTextControls(lifetime, (lt, id, host) =>
                {
                    var projectFile = host.ToProjectFile(solution);
                    if (projectFile == null)
                    {
                        return;
                    }

                    if (!projectFile.Location.ExtensionNoDot.Equals("csproj", StringComparison.OrdinalIgnoreCase))
                    {
                        return;
                    }

                    backendUnityHost.BackendUnityModel.ViewNotNull(lt, (modelLifetime, backendUnityModel) =>
                    {
                        var name = projectFile.Location.NameWithoutExtension;

                        IPath path;
                        using (ReadLockCookie.Create())
                        {
                            path = asmDefNameCache.GetPathFor(name)?.TryMakeRelativeTo(solution.SolutionFilePath);
                        }

                        var elements = new LocalList <INotificationPanelHyperlink>();
                        if (path != null)
                        {
                            var strPath = path.Components.Join("/").RemoveStart("../");
                            elements.Add(new NotificationPanelCallbackHyperlink(modelLifetime,
                                                                                "Edit corresponding .asmdef in Unity", false,
                                                                                () =>
                            {
                                frontendBackendHost.Do(t =>
                                {
                                    t.AllowSetForegroundWindow.Start(modelLifetime, Unit.Instance)
                                    .Result.AdviseOnce(modelLifetime, __ =>
                                    {
                                        backendUnityHost.BackendUnityModel.Value?.ShowFileInUnity.Fire(strPath);
                                    });
                                });
                            }));
                        }

                        notificationPanelHost.AddNotificationPanel(modelLifetime, host,
                                                                   new NotificationPanel("This file is generated by Unity. Any changes made will be lost.",
                                                                                         "UnityGeneratedFile", elements.ToArray()));
                    });
                });

                fullStartupFinishedLifetimeDefinition.Terminate();
            });
        }
 public VSPerformanceCriticalCodeAnalysisStage(SolutionAnalysisService swa, UnitySolutionTracker solutionTracker, CallGraphActivityTracker tracker, PerformanceCriticalCodeCallGraphAnalyzer performanceAnalyzer,
                                               ExpensiveCodeCallGraphAnalyzer expensiveAnalyzer)
     : base(swa, solutionTracker, tracker, performanceAnalyzer, expensiveAnalyzer)
 {
 }
Example #9
0
 public UnityUnitTestProjectArtifactResolverCollaborator(UnitySolutionTracker unitySolutionTracker, UnityNUnitServiceProvider serviceProvider)
 {
     myUnitySolutionTracker = unitySolutionTracker;
     myServiceProvider      = serviceProvider;
 }
Example #10
0
 public UnityCodeInsightProvider(UnitySolutionTracker unitySolutionTracker, UnityHost host,
                                 BulbMenuComponent bulbMenu)
     : base(unitySolutionTracker, host, bulbMenu)
 {
 }
Example #11
0
 public NamespaceProviderProjectSettingsProvider(ISettingsSchema settingsSchema, ILogger logger, UnitySolutionTracker unitySolutionTracker)
 {
     mySettingsSchema       = settingsSchema;
     myLogger               = logger;
     myUnitySolutionTracker = unitySolutionTracker;
 }
 public UnityCodeInsightProvider(UnityHost host, UnitySolutionTracker solutionTracker, BulbMenuComponent bulbMenu, UnitySolutionTracker tracker)
     : base(solutionTracker, host, bulbMenu)
 {
     RelativeOrderings = tracker.IsUnityProject.HasTrueValue()
         ? new CodeLensRelativeOrdering[] { new CodeLensRelativeOrderingBefore(ReferencesCodeInsightsProvider.Id) }
         : new CodeLensRelativeOrdering[] { new CodeLensRelativeOrderingLast() };
 }
Example #13
0
 public UnityProjectTypeLogContributor(UnitySolutionTracker unitySolutionTracker, UnityReferencesTracker unityReferencesTracker)
 {
     myUnitySolutionTracker   = unitySolutionTracker;
     myUnityReferencesTracker = unityReferencesTracker;
 }
Example #14
0
 public PerformanceCriticalCodeCallGraphAnalyzer(Lifetime lifetime, ISolution solution,
                                                 UnitySolutionTracker tracker, ICallGraphAnalyzersProvider provider)
     : base(lifetime, provider, MarkId, new CallerToCalleeCallGraphPropagator(solution, MarkId))
 {
     Enabled.Value = tracker.IsUnityProject.HasTrueValue();
 }
Example #15
0
 public UnityYamlFileSizeLogContributor(UnitySolutionTracker unitySolutionTracker, AssetIndexingSupport assetIndexingSupport, UnityExternalFilesModuleProcessor moduleProcessor)
 {
     myUnitySolutionTracker = unitySolutionTracker;
     myAssetIndexingSupport = assetIndexingSupport;
     myModuleProcessor      = moduleProcessor;
 }
Example #16
0
 public PerformanceCriticalCodeCallGraphAnalyzer(Lifetime lifetime, ISolution solution, UnityApi unityApi,
                                                 UnityReferencesTracker referencesTracker, UnitySolutionTracker tracker)
     : base(MarkId, new CallerToCalleeCallGraphPropagator(solution, MarkId))
 {
     myUnityApi    = unityApi;
     Enabled.Value = tracker.IsUnityProject.HasTrueValue();
     referencesTracker.HasUnityReference.Advise(lifetime, b => Enabled.Value = Enabled.Value | b);
 }
Example #17
0
 // IconHost is optional so that we don't fail if we're in tests
 public UnityYamlExtraGroupingRulesProvider(MetaFileGuidCache metaFileGuidCache = null, UnitySolutionTracker unitySolutionTracker = null, IconHost iconHost = null)
 {
     if (unitySolutionTracker != null && unitySolutionTracker.IsUnityProject.HasValue() && unitySolutionTracker.IsUnityProject.Value &&
         iconHost != null && metaFileGuidCache != null)
     {
         ExtraRules = new IRiderUsageGroupingRule[]
         {
             new GameObjectUsageGroupingRule(iconHost),
             new ComponentUsageGroupingRule(metaFileGuidCache, iconHost)
         };
     }
     else
     {
         ExtraRules = new IRiderUsageGroupingRule[0];
     }
 }
 public PerformanceCriticalCodeMarksProvider(Lifetime lifetime, ISolution solution,
                                             UnityReferencesTracker referencesTracker, UnitySolutionTracker tracker)
     : base(MarkId, new CallGraphOutcomingPropagator(solution, MarkId))
 {
     Enabled.Value = tracker.IsUnityProject.HasTrueValue();
     referencesTracker.HasUnityReference.Advise(lifetime, b => Enabled.Value = Enabled.Value | b);
 }
 public UnityShaderPsiModuleProviderFilter(UnitySolutionTracker solutionTracker)
 {
     mySolutionTracker = solutionTracker;
 }
 protected AbstractUnityCodeInsightProvider(UnitySolutionTracker unitySolutionTracker, UnityHost host, BulbMenuComponent bulbMenu)
 {
     myUnitySolutionTracker = unitySolutionTracker;
     myHost     = host;
     myBulbMenu = bulbMenu;
 }
 public UnityPencilsFilterProvider(UnitySolutionTracker solutionTracker, UnityReferencesTracker referencesTracker)
 {
     mySolutionTracker   = solutionTracker;
     myReferencesTracker = referencesTracker;
 }