예제 #1
0
        public RawShaderNavigationResult AnalyzeAndGoToDefinition(string sourceCode, RawSourceSpan span)
        {
            var rawResult = new RawShaderNavigationResult();

            var navigation = new ShaderNavigation();

            var shaderDirectories = CollectShadersDirectories(null);

            if (span.File != null)
            {
                var dirName = Path.GetDirectoryName(span.File);
                if (dirName != null)
                {
                    shaderDirectories.Add(dirName);
                }
            }

            var resultAnalysis = navigation.AnalyzeAndGoToDefinition(sourceCode, new SiliconStudio.Shaders.Ast.SourceLocation(span.File, 0, span.Line, span.Column), shaderDirectories);

            if (resultAnalysis.DefinitionLocation.Location.FileSource != null)
            {
                rawResult.DefinitionSpan = ConvertToRawLocation(resultAnalysis.DefinitionLocation);
            }

            foreach (var message in resultAnalysis.Messages.Messages)
            {
                rawResult.Messages.Add(ConvertToRawMessage(message));
            }

            return(rawResult);
        }
예제 #2
0
 public RawShaderNavigationResult AnalyzeAndGoToDefinition(string sourceCode, RawSourceSpan span)
 {
     // TODO: We need to know which package is currently selected in order to query all valid shaders
     if (remote != null)
     {
         return(remote.AnalyzeAndGoToDefinition(sourceCode, span));
     }
     else
     {
         return(legacyRemote.AnalyzeAndGoToDefinition(sourceCode, span));
     }
 }
예제 #3
0
 public RawShaderNavigationResult AnalyzeAndGoToDefinition(string sourceCode, RawSourceSpan span)
 {
     return(AnalyzeAndGoToDefinition(null, sourceCode, span));
 }
예제 #4
0
 public RawShaderNavigationResult AnalyzeAndGoToDefinition(string projectPath, string sourceCode, RawSourceSpan span)
 {
     // TODO: We need to know which package is currently selected in order to query all valid shaders
     if (remote is IXenkoCommands2 remote2)
     {
         return(remote2.AnalyzeAndGoToDefinition(projectPath, sourceCode, span));
     }
     return(remote.AnalyzeAndGoToDefinition(sourceCode, span));
 }