public override TooltipItem GetTooltipItem(Vector2 pos) { Vector2 originalPos = pos; if (parserInterface.lastSourceFile == null) { Reparse(); } pos = editor.doc.GoToEndOfWord(pos, 1); Vector2 endWordPos = editor.doc.IncrementPosition(pos, -1); pos = editor.doc.GoToEndOfWhitespace(pos, 1); ExpressionInfo result = new ExpressionInfo(); result.startPosition = pos; result.endPosition = pos; result.initialized = true; char nextChar = editor.doc.GetCharAt(pos); bool isBeginGeneric = nextChar == '<'; if (useUnityscript) { Vector2 charAfterPos = editor.doc.GoToEndOfWhitespace(editor.doc.IncrementPosition(pos, 1), 1); char charAfter = editor.doc.GetCharAt(charAfterPos); if (nextChar == '.' && charAfter == '<') { pos = charAfterPos; nextChar = editor.doc.GetCharAt(pos); isBeginGeneric = true; } } //GameObject go; //go.GetComponent<Vector3>(); if (isBeginGeneric) { result.startPosition = pos; result.endPosition = pos; ExpressionResolver.editor = editor; result = ExpressionResolver.CountToExpressionEnd(result, 1, ExpressionBracketType.Generic); pos = result.endPosition; pos = editor.doc.IncrementPosition(pos, 1); pos = editor.doc.GoToEndOfWhitespace(pos, 1); result.startPosition = pos; result.endPosition = pos; nextChar = editor.doc.GetCharAt(pos); } bool isFunction = false; if (nextChar == '(') { ExpressionResolver.editor = editor; result = ExpressionResolver.CountToExpressionEnd(result, 1, ExpressionBracketType.Expression); pos = result.endPosition; nextChar = editor.doc.GetCharAt(pos); isFunction = true; } if (!isFunction) { pos = endWordPos; } //Debug.Log(nextChar+" "+editor.doc.GetCharAt(endWordPos)); string str = editor.syntaxRule.ResolveExpressionAt(pos, -1); if (useUnityscript) { str = str.Replace(".<", "<"); } //Debug.Log(str); ChainResolver sigChainResolver = new ChainResolver(editor, originalPos); ChainItem item = null; item = sigChainResolver.ResolveChain(str, false); TooltipItem tooltipItem = null; if (item != null) { if (item.finalLinkType != null) { tooltipItem = new TooltipItem(item.finalLinkType.Name + " " + item.finalLink.name); tooltipItem.clrType = item.finalLinkType; } if (item.finalLink.completionItem != null) { tooltipItem = new TooltipItem(item.finalLink.completionItem); } } return(tooltipItem); }