protected override void Run(IMethodDeclaration element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer)
        {
            if (data.ProcessKind != DaemonProcessKind.VISIBLE_DOCUMENT)
            {
                return;
            }

            if (element.GetProject().IsUnityProject())
            {
                var method = element.DeclaredElement;
                if (method != null)
                {
                    var eventFunction = myUnityApi.GetUnityEventFunction(method);
                    if (eventFunction != null)
                    {
                        // Use the name as the range, rather than the range of the whole
                        // method declaration (including body). Rider will remove the highlight
                        // if anything inside the range changes, causing ugly flashes. It
                        // might be nicer to use the whole of the method declaration (name + params)
                        var documentRange = element.GetNameDocumentRange();
                        var tooltip       = "Unity Event Function";
                        if (!string.IsNullOrEmpty(eventFunction.Description))
                        {
                            tooltip += Environment.NewLine + Environment.NewLine + eventFunction.Description;
                        }
                        var highlighting = new UnityMarkOnGutter(element, documentRange, tooltip);

                        consumer.AddHighlighting(highlighting, documentRange);
                    }
                }
            }
        }
        private void AddGutterMark(IDeclaration declaration, UnityEventFunction eventFunction,
                                   IHighlightingConsumer consumer)
        {
            var documentRange = declaration.GetNameDocumentRange();
            var tooltip       = "Unity event function";

            if (!string.IsNullOrEmpty(eventFunction.Description))
            {
                tooltip += Environment.NewLine + Environment.NewLine + eventFunction.Description;
            }
            if (eventFunction.Coroutine)
            {
                tooltip += Environment.NewLine + "This function can be a coroutine.";
            }
            var highlighting = new UnityMarkOnGutter(Api, declaration, documentRange, tooltip);

            consumer.AddHighlighting(highlighting, documentRange);
        }
Example #3
0
        protected override void Run(IFieldDeclaration element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer)
        {
            if (data.ProcessKind != DaemonProcessKind.VISIBLE_DOCUMENT)
            {
                return;
            }

            if (element.GetProject().IsUnityProject())
            {
                var field = element.DeclaredElement;
                if (field != null && myUnityApi.IsUnityField(field))
                {
                    var documentRange = element.GetDocumentRange();
                    var highlighting  = new UnityMarkOnGutter(element, documentRange, "This field is initialised by Unity");

                    consumer.AddHighlighting(highlighting, documentRange);
                }
            }
        }
        protected override void Run(IClassLikeDeclaration element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer)
        {
            if (data.ProcessKind != DaemonProcessKind.VISIBLE_DOCUMENT)
            {
                return;
            }

            if (element.GetProject().IsUnityProject())
            {
                var @class = element.DeclaredElement;
                if (@class != null)
                {
                    if (myUnityApi.IsUnityType(@class))
                    {
                        var documentRange = element.GetNameDocumentRange();
                        var highlighting  = new UnityMarkOnGutter(element, documentRange, "Unity Scripting Type");

                        consumer.AddHighlighting(highlighting, documentRange);
                    }
                }
            }
        }
        protected void AddGutterMark(T element, DocumentRange documentRange, string tooltip, IHighlightingConsumer consumer)
        {
            var highlighting = new UnityMarkOnGutter(Api, element, documentRange, tooltip);

            consumer.AddHighlighting(highlighting, documentRange);
        }