public override RdUsageGroup CreateModel(IOccurrence occurrence, IOccurrenceBrowserDescriptor descriptor) { using (CompilationContextCookie.GetExplicitUniversalContextIfNotSet()) { if (occurrence is ReferenceOccurrence referenceOccurrence && referenceOccurrence.PrimaryReference is IUnityYamlReference reference) { var document = reference.ComponentDocument; var sourceFile = document.GetSourceFile(); if (sourceFile == null || !sourceFile.IsValid()) { return(EmptyModel()); } var anchor = UnitySceneDataUtil.GetAnchorFromBuffer(document.GetTextAsBuffer()); if (anchor == null) { return(EmptyModel()); } return(CreateModel(UnityObjectPsiUtil.GetGameObjectPathFromComponent(myUnitySceneDataLocalCache, sourceFile, anchor))); } } return(EmptyModel()); }
public bool IsEventHandler([NotNull] IMethod declaredElement) { var sourceFiles = declaredElement.GetSourceFiles(); // The methods and property setters that we are interested in will only have a single source file if (sourceFiles.Count != 1) { return(false); } foreach (var assetGuid in myShortNameToAssetGuid[declaredElement.ShortName]) { var invokedType = UnityObjectPsiUtil.GetTypeElementFromScriptAssetGuid(mySolution, assetGuid); if (invokedType != null) { var members = invokedType.GetAllClassMembers(declaredElement.ShortName); foreach (var member in members) { if (Equals(member.Element, declaredElement)) { return(true); } } } } return(false); }
private FindUsageResultElement CreateRequest([NotNull] IUnityYamlReference currentReference, [CanBeNull] IUnityYamlReference selectedReference) { var monoScriptDocument = currentReference.ComponentDocument; var sourceFile = monoScriptDocument?.GetSourceFile(); if (sourceFile == null) { return(null); } var pathElements = UnityObjectPsiUtil.GetGameObjectPathFromComponent(mySceneProcessor, currentReference.ComponentDocument).RemoveEnd("\\").Split("\\"); // Constructing path of child indices var consumer = new UnityChildPathSceneConsumer(); mySceneProcessor.ProcessSceneHierarchyFromComponentToRoot(monoScriptDocument, consumer); if (!GetPathFromAssetFolder(sourceFile, out var pathFromAsset, out var fileName, out var extension)) { return(null); } bool needExpand = currentReference == selectedReference; bool isPrefab = extension.Equals(UnityYamlConstants.Prefab, StringComparison.OrdinalIgnoreCase); return(new FindUsageResultElement(isPrefab, needExpand, pathFromAsset, fileName, pathElements, consumer.RootIndices.ToArray().Reverse().ToArray())); }
public override RdUsageGroup CreateModel(IOccurrence occurrence, IOccurrenceBrowserDescriptor descriptor) { if (occurrence is ReferenceOccurrence referenceOccurrence && referenceOccurrence.PrimaryReference is IUnityYamlReference reference) { return(CreateModel(UnityObjectPsiUtil.GetGameObjectPathFromComponent(mySceneProcessor, reference.ComponentDocument))); } return(EmptyModel()); }
public override RdUsageGroup CreateModel(IOccurrence occurrence, IOccurrenceBrowserDescriptor descriptor) { using (CompilationContextCookie.GetExplicitUniversalContextIfNotSet()) { if (occurrence is ReferenceOccurrence referenceOccurrence && referenceOccurrence.PrimaryReference is IUnityYamlReference reference) { return(CreateModel(UnityObjectPsiUtil.GetComponentName(reference.ComponentDocument))); } } return(EmptyModel()); }
public override ISymbolTable GetReferenceSymbolTable(bool useReferenceName) { var assetGuid = myFileID.guid; var targetType = UnityObjectPsiUtil.GetTypeElementFromScriptAssetGuid(myOwner.GetSolution(), assetGuid); if (targetType == null) { return(EmptySymbolTable.INSTANCE); } // We don't need to do anything about useReferenceName, we only ever have one candidate var symbolTable = new SymbolTable(myOwner.GetPsiServices()); symbolTable.AddSymbol(assetGuid, targetType); return(symbolTable); }
public override ISymbolTable GetReferenceSymbolTable(bool useReferenceName) { var assetGuid = GetScriptAssetGuid(); var targetType = UnityObjectPsiUtil.GetTypeElementFromScriptAssetGuid(myOwner.GetSolution(), assetGuid); if (targetType == null) { return(EmptySymbolTable.INSTANCE); } var symbolTable = ResolveUtil.GetSymbolTableByTypeElement(targetType, SymbolTableMode.FULL, myOwner.GetPsiModule()); if (useReferenceName) { var name = GetName(); return(symbolTable.Filter(name, IsMethodFilter.INSTANCE, OverriddenFilter.INSTANCE, new ExactNameFilter(name), new StaticFilter(new NonStaticAccessContext(myOwner)), new EventHandlerSymbolFilter(myMode, myType, targetType.Module))); } return(symbolTable); }
public override ISymbolTable GetReferenceSymbolTable(bool useReferenceName) { var assetGuid = GetScriptAssetGuid(); var targetType = UnityObjectPsiUtil.GetTypeElementFromScriptAssetGuid(myOwner.GetSolution(), assetGuid); if (targetType == null) { return(EmptySymbolTable.INSTANCE); } var symbolTable = ResolveUtil.GetSymbolTableByTypeElement(targetType, SymbolTableMode.FULL, myOwner.GetPsiModule()); if (useReferenceName) { var name = GetName(); return(symbolTable.Filter(name, new ExactNameFilter(name))); } return(symbolTable); }
public override ISymbolTable GetReferenceSymbolTable(bool useReferenceName) { var assetGuid = myFileID.guid; var candidates = UnityObjectPsiUtil.GetTypeElementCandidatesFromScriptAssetGuid(myOwner.GetSolution(), assetGuid); if (candidates.IsEmpty()) { return(EmptySymbolTable.INSTANCE); } var resolvedName = myResolvedName; if (resolvedName == null) { var assetFiles = myMetaFileGuidCache.GetAssetNames(assetGuid); resolvedName = assetFiles.FirstOrDefault(null); } var symbolTable = new SymbolTable(myOwner.GetPsiServices()); foreach (var candidate in candidates) { if (useReferenceName && resolvedName != null) { if (resolvedName == candidate.ShortName) { symbolTable.AddSymbol(assetGuid, candidate); } } else { symbolTable.AddSymbol(assetGuid, candidate); } } return(symbolTable); }
public void ConsumeGameObject(IYamlDocument gameObject, IBlockMappingNode modifications) { { int rootOrder = -1; var transform = UnityObjectPsiUtil.FindTransformComponentForGameObject(gameObject); if (modifications != null) { if (!int.TryParse(UnityObjectPsiUtil.GetValueFromModifications(modifications, transform.GetFileId(), UnityYamlConstants.RootOrderProperty) , out rootOrder)) { rootOrder = -1; } } if (rootOrder == -1) { var rootOrderAsString = transform.GetUnityObjectPropertyValue(UnityYamlConstants.RootOrderProperty).AsString(); if (!int.TryParse(rootOrderAsString, out rootOrder)) { rootOrder = -1; } } RootIndices.Add(rootOrder); } }