public ActionResult Create(AssetDocumentViewModel vm) { if (ModelState.IsValid) { var newDocument = new AssetDocument { AssetId = vm.AssetId, DocumentType = vm.DocumentType, FileSize = 0.0 }; if (vm.Document != null) { var siteSettings = _settingsService.GetSiteSettings(); var blobUploadService = new BlobUploadService(siteSettings.BlobSettings); var blobPath = blobUploadService.UploadITDocument(vm.Document); newDocument.DocumentPath = blobPath; newDocument.FileName = vm.Document.FileName; } _assetDocumentRepository.Create(newDocument); _unitOfWork.Commit(); return(RedirectToAction("Details", "Assets", new { id = vm.AssetId })); } return(View(vm)); }
public static void CreateIndex() { var connectionToEs = ElasticSearchConnectionSettings.connection(); if (connectionToEs.IndexExists(assetIndexName).Exists) { var response = connectionToEs.DeleteIndex(assetIndexName); } var createIndexResponse = connectionToEs.CreateIndex(assetIndexName, c => c.Map <AssetDocument>(m => m.AutoMap())); using (DB.DOAMEntities db = new MyApp.Infrastructure.DB.DOAMEntities()) { foreach (var asset in db.Assets) { var assetDocument = new AssetDocument() { AssetID = asset.AssetID, TypeAssetName = GetNameAssetParTypeId(asset.AssetID), Name = asset.Name, Url = asset.Url, ThumbnailUrl = asset.ThumbnailUrl, Description = asset.Description, Compteur = asset.Compteur }; var assetMetadata = asset.AssetMetaDatas.Select(t => t).Distinct(); foreach (var assets in assetMetadata) { assetDocument.AssetMetadatas.Add(new IndexDocuments.AssetMetaData { AssetMetaDataID = assets.AssetMetaDataID, AssetName = assets.MetaData.Title, Value = assets.Value, }); } var assetTag = asset.AssetTags.Select(t => t.Tag).Distinct(); foreach (var assetTags in assetTag) { assetDocument.Tags.Add(new IndexDocuments.Tag { TagID = assetTags.TagID, Label = assetTags.Label, }); } var indexResponse = connectionToEs.Index(assetDocument, c => c.Index(assetIndexName)); } } }
public object Build(SeldomInterruptChecker checker, IPsiSourceFile file, AssetDocument document) { if (AssetUtils.IsMonoBehaviourDocument(document.Buffer)) { return(ExtractStateMachineBehaviour(document, file)); } var animatorExtractor = new AnimatorExtractor(file, document); if (AssetUtils.IsAnimatorStateMachine(document.Buffer)) { return(animatorExtractor.TryExtractStateMachine()); } return(AssetUtils.IsAnimatorState(document.Buffer) ? animatorExtractor.TryExtractUsage() : null); }
private static AnimatorScript?ExtractStateMachineBehaviour([NotNull] AssetDocument document, [NotNull] IPsiSourceFile file) { var anchorRaw = AssetUtils.GetAnchorFromBuffer(document.Buffer); if (!anchorRaw.HasValue) { return(null); } var guid = (document.Document.FindRootBlockMapEntries()?.Entries)? .Cast <IBlockMappingEntry>() .Where(entry => entry != null && entry.Key.MatchesPlainScalarText("m_Script") && entry.Content != null) .Select(entry => entry.Content.Value.ToHierarchyReference(file) as ExternalReference?) .FirstOrDefault()? .ExternalAssetGuid; return(guid != null ? new AnimatorScript(guid.Value, anchorRaw.Value) : (AnimatorScript?)null); }
public IHttpActionResult FileUpload(long entityTypeId, int CreatedBy) { //long entityTypeId; string entityName = string.Empty; var httpRequest = HttpContext.Current.Request; //entityTypeId = Convert.ToInt64(httpRequest.Form["EntityTypeId"]); entityName = httpRequest.Form["Entity"]; if (httpRequest.Files.Count > 0 && httpRequest.Form.Keys.Count > 0) { var entityId = db.Entities.Where(x => x.EntityName == entityName).Select(y => y.EntityId).FirstOrDefault(); fileLocation = fileLocation + "/" + entityId + "/" + entityTypeId + "/"; if (!Directory.Exists(fileLocation)) { Directory.CreateDirectory(fileLocation); } foreach (string file in httpRequest.Files) { var postedFile = httpRequest.Files[file]; var filePath = fileLocation + postedFile.FileName; postedFile.SaveAs(filePath); var assetDocument = new AssetDocument(); assetDocument.EntityId = entityId; assetDocument.EntityTypeId = entityTypeId; assetDocument.FilePath = fileLocation; assetDocument.FileName = postedFile.FileName; assetDocument.IsActive = true; assetDocument.CreatedOn = System.DateTime.Now; assetDocument.CreatedBy = CreatedBy; //assetDocument.FileUpload = FileUpload; db.AssetDocuments.Add(assetDocument); } db.SaveChanges(); } return(Ok("success")); }
static SearchItem CreateItem(SearchContext context, SearchProvider provider, AssetDocument doc, int score) { var label = doc.name_en_US; if (purchasePackageIds != null && purchasePackageIds.Contains(doc.id)) { label += " (Owned)"; } else if (doc.price_USD == 0) { label += " (Free)"; } var description = $"{doc.publisher} - {doc.category_slug}"; var item = provider.CreateItem(context, doc.id, score, label, description, null, doc); item.options &= ~SearchItemOptions.FuzzyHighlight; item.options &= ~SearchItemOptions.Highlight; doc.productDetail = null; doc.url = $"https://assetstore.unity.com/packages/{doc.category_slug}/{doc.id}"; return(item); }
static SearchItem CreateItem(SearchContext context, SearchProvider provider, AssetDocument doc, int score) { var priceStr = ""; if (purchasePackageIds != null && purchasePackageIds.Contains(doc.id)) { priceStr = "Owned"; } else { priceStr = doc.price_USD == 0 ? "Free" : $"{doc.price_USD:0.00}$"; } var description = $"{doc.publisher} - {doc.category_slug} - <color=#F6B93F>{priceStr}</color>"; #if QUICKSEARCH_DEBUG description += $" id: {doc.id}"; #endif var item = provider.CreateItem(context, doc.id, score, doc.name_en_US, description, null, doc); doc.productDetail = null; doc.url = $"https://assetstore.unity.com/packages/{doc.category_slug}/{doc.id}"; return(item); }
public object Build(SeldomInterruptChecker seldomInterruptChecker, IPsiSourceFile currentAssetSourceFile, AssetDocument assetDocument) { var modifications = ProcessPrefabModifications(currentAssetSourceFile, assetDocument); if (AssetUtils.IsMonoBehaviourDocument(assetDocument.Buffer)) { var anchor = AssetUtils.GetAnchorFromBuffer(assetDocument.Buffer); if (!anchor.HasValue) { return(new InspectorValuesBuildResult(new LocalList <InspectorVariableUsage>(), modifications)); } var dictionary = new Dictionary <string, IAssetValue>(); var entries = assetDocument.Document.FindRootBlockMapEntries()?.Entries; if (entries == null) { return(new InspectorValuesBuildResult(new LocalList <InspectorVariableUsage>(), modifications)); } foreach (var entry in entries) { var key = entry.Key.GetPlainScalarText(); if (key == null || ourIgnoredMonoBehaviourEntries.Contains(key)) { continue; } foreach (var deserializer in myDeserializers) { try { if (deserializer.TryGetInspectorValue(currentAssetSourceFile, entry.Content, out var resultValue)) { dictionary[key] = resultValue; break; } } catch (Exception e) { myLogger.Error(e, "An error occurred while deserializing value {0}", deserializer.GetType().Name); } } } if (dictionary.TryGetValue(UnityYamlConstants.ScriptProperty, out var scriptValue) && scriptValue is AssetReferenceValue referenceValue && referenceValue.Reference is ExternalReference script) { var location = new LocalReference(currentAssetSourceFile.PsiStorage.PersistentIndex.NotNull("owningPsiPersistentIndex != null"), anchor.Value); var result = new LocalList <InspectorVariableUsage>(); foreach (var(key, value) in dictionary) { if (key.Equals(UnityYamlConstants.ScriptProperty) || key.Equals(UnityYamlConstants.GameObjectProperty)) { continue; } result.Add(new InspectorVariableUsage(location, script, key, value)); } return(new InspectorValuesBuildResult(result, modifications)); } } return(new InspectorValuesBuildResult(new LocalList <InspectorVariableUsage>(), modifications)); }
private ImportedInspectorValues ProcessPrefabModifications(IPsiSourceFile currentSourceFile, AssetDocument assetDocument) { var result = new ImportedInspectorValues(); if (assetDocument.HierarchyElement is IPrefabInstanceHierarchy prefabInstanceHierarchy) { foreach (var modification in prefabInstanceHierarchy.PrefabModifications) { if (!(modification.Target is ExternalReference externalReference)) { continue; } if (modification.PropertyPath.Contains(".")) { continue; } var location = new LocalReference(currentSourceFile.PsiStorage.PersistentIndex.NotNull("owningPsiPersistentIndex != null"), PrefabsUtil.GetImportedDocumentAnchor(prefabInstanceHierarchy.Location.LocalDocumentAnchor, externalReference.LocalDocumentAnchor)); result.Modifications[new ImportedValueReference(location, modification.PropertyPath)] = (modification.Value, new AssetReferenceValue(modification.ObjectReference)); } } return(result); }
public AnimatorExtractor([NotNull] IPsiSourceFile file, [NotNull] AssetDocument document) { myFile = file; myDocument = document; }
public IUnityAssetDataElement Build(SeldomInterruptChecker checker, IPsiSourceFile currentSourceFile, AssetDocument assetDocument) { var anchorRaw = AssetUtils.GetAnchorFromBuffer(assetDocument.Buffer); if (!anchorRaw.HasValue) { return(null); } var anchor = anchorRaw.Value; var isStripped = AssetUtils.IsStripped(assetDocument.Buffer); var gameObject = AssetUtils.GetGameObject(assetDocument.Buffer)?.ToReference(currentSourceFile) as LocalReference; var prefabInstance = AssetUtils.GetPrefabInstance(assetDocument.Buffer)?.ToReference(currentSourceFile) as LocalReference; var correspondingSourceObject = AssetUtils.GetCorrespondingSourceObject(assetDocument.Buffer)?.ToReference(currentSourceFile) as ExternalReference; var location = new LocalReference(currentSourceFile.PsiStorage.PersistentIndex, anchor); if (AssetUtils.IsMonoBehaviourDocument(assetDocument.Buffer)) { var entries = assetDocument.Document.FindRootBlockMapEntries()?.Entries; if (entries == null) { return(null); } AssetDocumentReference documentReference = null; foreach (var entry in entries) { if (entry.Key.MatchesPlainScalarText(UnityYamlConstants.ScriptProperty)) { documentReference = entry.Content.Value.AsFileID(); break; } } var scriptAnchor = documentReference?.AnchorLong; var scriptGuid = documentReference?.ExternalAssetGuid; if (isStripped || scriptAnchor != null && scriptGuid != null) { return(new AssetDocumentHierarchyElement( new ScriptComponentHierarchy(location, isStripped ? null : new ExternalReference(scriptGuid, scriptAnchor.Value), gameObject, prefabInstance, correspondingSourceObject, isStripped ))); } } else if (AssetUtils.IsTransform(assetDocument.Buffer)) { var father = AssetUtils.GetTransformFather(assetDocument.Buffer)?.ToReference(currentSourceFile) as LocalReference; var rootIndex = AssetUtils.GetRootIndex(assetDocument.Buffer); return(new AssetDocumentHierarchyElement( new TransformHierarchy(location, gameObject, father, rootIndex, prefabInstance, correspondingSourceObject, isStripped))); } else if (AssetUtils.IsGameObject(assetDocument.Buffer)) { var name = AssetUtils.GetGameObjectName(assetDocument.Buffer); if (isStripped || name != null) { return(new AssetDocumentHierarchyElement(new GameObjectHierarchy(location, name, prefabInstance, correspondingSourceObject, isStripped))); } } else if (AssetUtils.IsPrefabModification(assetDocument.Buffer)) { var modification = AssetUtils.GetPrefabModification(assetDocument.Document); var parentTransform = modification?.GetValue("m_TransformParent")?.AsFileID()?.ToReference(currentSourceFile) as LocalReference; var modifications = modification?.GetValue("m_Modifications") as IBlockSequenceNode; var result = new List <PrefabModification>(); if (modifications != null) { foreach (var entry in modifications.Entries) { var map = entry.Value as IBlockMappingNode; if (map == null) { continue; } var target = map.GetValue("target").AsFileID()?.ToReference(currentSourceFile); if (target == null) { continue; } var name = map.GetValue("propertyPath").GetPlainScalarText(); if (name == null) { continue; } var valueNode = map.FindMapEntryBySimpleKey("value")?.Content; if (valueNode == null) { continue; } IAssetValue value = null; foreach (var assetInspectorValueDeserializer in myAssetInspectorValueDeserializers) { if (assetInspectorValueDeserializer.TryGetInspectorValue(currentSourceFile, valueNode, out value)) { break; } } if (value == null) { continue; } result.Add(new PrefabModification(target, name, value)); } } var sourcePrefabGuid = AssetUtils.GetSourcePrefab(assetDocument.Buffer)?.ToReference(currentSourceFile) as ExternalReference; if (sourcePrefabGuid == null) { return(null); } return(new AssetDocumentHierarchyElement(new PrefabInstanceHierarchy(location, sourcePrefabGuid.ExternalAssetGuid, parentTransform, result))); } else // regular component { var name = AssetUtils.GetRawComponentName(assetDocument.Buffer); if (name == null) { return(null); } return(new AssetDocumentHierarchyElement( new ComponentHierarchy(name, location, gameObject, prefabInstance, correspondingSourceObject, isStripped))); } return(null); }
public IUnityAssetDataElement Build(SeldomInterruptChecker checker, IPsiSourceFile currentSourceFile, AssetDocument assetDocument) { // TODO: deps for other assets if (AssetUtils.IsMonoBehaviourDocument(assetDocument.Buffer)) { var anchorRaw = AssetUtils.GetAnchorFromBuffer(assetDocument.Buffer); bool stripped = AssetUtils.IsStripped(assetDocument.Buffer); if (stripped) // we will handle it in prefabs { return(null); } if (!anchorRaw.HasValue) { return(null); } var anchor = anchorRaw.Value; var entries = assetDocument.Document.FindRootBlockMapEntries()?.Entries; if (entries == null) { return(null); } foreach (var entry in entries) { if (!entry.Key.MatchesPlainScalarText("m_Script")) { continue; } var deps = entry.Content.Value.AsFileID()?.ToReference(currentSourceFile); if (deps == null) { continue; } return(new AssetUsagesDataElement( new AssetUsage( new LocalReference(currentSourceFile.PsiStorage.PersistentIndex, anchor), new [] { deps }))); } } return(null); }
public object Build(SeldomInterruptChecker checker, IPsiSourceFile currentAssetSourceFile, AssetDocument assetDocument) { // TODO: deps for other assets if (AssetUtils.IsMonoBehaviourDocument(assetDocument.Buffer)) { var anchorRaw = AssetUtils.GetAnchorFromBuffer(assetDocument.Buffer); bool stripped = AssetUtils.IsStripped(assetDocument.Buffer); if (stripped) // we will handle it in prefabs { return(null); } if (!anchorRaw.HasValue) { return(null); } var anchor = anchorRaw.Value; var entries = assetDocument.Document.FindRootBlockMapEntries()?.Entries; if (entries == null) { return(null); } var result = new LocalList <AssetScriptUsage>(); foreach (var entry in entries) { if (!entry.Key.MatchesPlainScalarText("m_Script")) { continue; } var deps = entry.Content.Value.ToHierarchyReference(currentAssetSourceFile); if (deps is ExternalReference externalReference) { result.Add(new AssetScriptUsage(new LocalReference(currentAssetSourceFile.Ptr().Id, anchor), externalReference)); } } return(result); } return(null); }
private ImportedUnityEventData ProcessPrefabModifications(IPsiSourceFile currentFile, AssetDocument document) { var result = new ImportedUnityEventData(); if (document.HierarchyElement is IPrefabInstanceHierarchy prefabInstanceHierarchy) { var assetMethodDataToModifiedFields = new OneToSetMap <(LocalReference, string, int), string>(); foreach (var modification in prefabInstanceHierarchy.PrefabModifications) { if (!(modification.Target is ExternalReference externalReference)) { continue; } if (!modification.PropertyPath.Contains("m_PersistentCalls")) { continue; } var location = new LocalReference(currentFile.PsiStorage.PersistentIndex, PrefabsUtil.GetImportedDocumentAnchor(prefabInstanceHierarchy.Location.LocalDocumentAnchor, externalReference.LocalDocumentAnchor)); var parts = modification.PropertyPath.Split('.'); var unityEventName = parts[0]; var dataPart = parts.FirstOrDefault(t => t.StartsWith("data")); if (dataPart == null) { continue; } if (!int.TryParse(dataPart.RemoveStart("data[").RemoveEnd("]"), out var index)) { continue; } result.UnityEventToModifiedIndex.Add((location, unityEventName), index); var last = parts.Last(); if (last.Equals("m_MethodName") && modification.Value is AssetSimpleValue assetSimpleValue) { result.AssetMethodNameInModifications.Add(assetSimpleValue.SimpleValue); } assetMethodDataToModifiedFields.Add((location, unityEventName, index), last); } foreach (var(_, set) in assetMethodDataToModifiedFields) { if (!set.Contains("m_MethodName")) { result.HasEventModificationWithoutMethodName = true; } } } return(result); }
public IUnityAssetDataElement Build(SeldomInterruptChecker checker, IPsiSourceFile currentSourceFile, AssetDocument assetDocument) { var buffer = assetDocument.Buffer; if (ourMethodNameSearcher.Find(buffer) < 0) { return(null); } var anchorRaw = AssetUtils.GetAnchorFromBuffer(assetDocument.Buffer); if (!anchorRaw.HasValue) { return(null); } var anchor = anchorRaw.Value; var entries = assetDocument.Document.FindRootBlockMapEntries()?.Entries; if (entries == null) { return(null); } var result = new List <AssetMethodData>(); foreach (var entry in entries) { if (ourMethodNameSearcher.Find(entry.Content.GetTextAsBuffer()) >= 0) { var rootMap = entry.Content.Value as IBlockMappingNode; var persistentCallsMap = rootMap.GetValue("m_PersistentCalls") as IBlockMappingNode; var mCalls = persistentCallsMap.GetValue("m_Calls") as IBlockSequenceNode; if (mCalls == null) { return(null); } var eventTypeName = rootMap.GetValue("m_TypeName").GetPlainScalarText(); foreach (var call in mCalls.Entries) { var methodDescription = call.Value as IBlockMappingNode; if (methodDescription == null) { continue; } var fileID = methodDescription.FindMapEntryBySimpleKey("m_Target")?.Content.Value.AsFileID(); if (fileID == null || fileID.IsNullReference) { continue; } var methodNameNode = methodDescription.GetValue("m_MethodName"); var methodName = methodNameNode?.GetPlainScalarText(); if (methodName == null) { continue; } var methodNameRange = methodNameNode.GetTreeTextRange(); var arguments = methodDescription.GetValue("m_Arguments") as IBlockMappingNode; var modeText = methodDescription.GetValue("m_Mode")?.GetPlainScalarText(); var argMode = EventHandlerArgumentMode.EventDefined; if (int.TryParse(modeText, out var mode)) { if (1 <= mode && mode <= 6) { argMode = (EventHandlerArgumentMode)mode; } } var argumentTypeName = arguments.GetValue("m_ObjectArgumentAssemblyTypeName")?.GetPlainScalarText(); var type = argumentTypeName?.Split(',').FirstOrDefault(); if (argMode == EventHandlerArgumentMode.EventDefined) { type = eventTypeName?.Split(',').FirstOrDefault(); } else if (argMode == EventHandlerArgumentMode.Void) { type = null; } var range = new TextRange(assetDocument.StartOffset + methodNameRange.StartOffset.Offset, assetDocument.StartOffset + methodNameRange.EndOffset.Offset); var target = fileID.ToReference(currentSourceFile); if (target != null) { result.Add(new AssetMethodData( new LocalReference(currentSourceFile.PsiStorage.PersistentIndex, anchor), methodName, range, argMode, type, target)); } } } } if (result.Count > 0) { return(new AssetMethodsDataElement(result)); } return(null); }
public object Build(SeldomInterruptChecker checker, IPsiSourceFile currentAssetSourceFile, AssetDocument assetDocument) { var anchorRaw = AssetUtils.GetAnchorFromBuffer(assetDocument.Buffer); if (!anchorRaw.HasValue) { return(null); } var anchor = anchorRaw.Value; var isStripped = AssetUtils.IsStripped(assetDocument.Buffer); var location = new LocalReference(currentAssetSourceFile.PsiStorage.PersistentIndex.NotNull("owningPsiPersistentIndex != null"), anchor); if (isStripped) { var prefabInstance = AssetUtils.GetPrefabInstance(currentAssetSourceFile, assetDocument.Buffer) as LocalReference?; var correspondingSourceObject = AssetUtils.GetCorrespondingSourceObject(currentAssetSourceFile, assetDocument.Buffer) as ExternalReference?; if (prefabInstance != null && correspondingSourceObject != null) { return(new StrippedHierarchyElement(location, prefabInstance.Value, correspondingSourceObject.Value)); } return(null); } var gameObject = AssetUtils.GetGameObjectReference(currentAssetSourceFile, assetDocument.Buffer) as LocalReference?; if (gameObject != null && AssetUtils.IsMonoBehaviourDocument(assetDocument.Buffer)) { var entries = assetDocument.Document.FindRootBlockMapEntries()?.Entries; if (entries == null) { return(null); } IHierarchyReference documentReference = null; foreach (var entry in entries) { if (entry.Key.MatchesPlainScalarText(UnityYamlConstants.ScriptProperty)) { documentReference = entry.Content.Value.ToHierarchyReference(currentAssetSourceFile); break; } } if (documentReference is ExternalReference scriptReference) { return(new ScriptComponentHierarchy(location, gameObject.Value, scriptReference)); } } else if (gameObject != null && AssetUtils.IsTransform(assetDocument.Buffer)) { var father = AssetUtils.GetTransformFather(currentAssetSourceFile, assetDocument.Buffer) as LocalReference?; if (father == null) { return(null); } var rootIndex = AssetUtils.GetRootIndex(assetDocument.Buffer); return(new TransformHierarchy(location, gameObject.Value, father.Value, rootIndex)); } else if (AssetUtils.IsGameObject(assetDocument.Buffer)) { var name = AssetUtils.GetGameObjectName(assetDocument.Buffer); if (name != null) { return(new GameObjectHierarchy(location, name)); } } else if (AssetUtils.IsPrefabModification(assetDocument.Buffer)) { var modification = AssetUtils.GetPrefabModification(assetDocument.Document); var parentTransform = modification?.GetValue("m_TransformParent")?.ToHierarchyReference(currentAssetSourceFile) as LocalReference? ?? LocalReference.Null; var modifications = modification?.GetValue("m_Modifications") as IBlockSequenceNode; var result = new List <PrefabModification>(); if (modifications != null) { foreach (var entry in modifications.Entries) { var map = entry.Value as IBlockMappingNode; var target = map?.GetValue("target").ToHierarchyReference(currentAssetSourceFile); if (target == null) { continue; } var name = map.GetValue("propertyPath").GetPlainScalarText(); if (name == null) { continue; } var valueNode = map.FindMapEntryBySimpleKey("value")?.Content; if (valueNode == null) { continue; } IAssetValue value = null; foreach (var assetInspectorValueDeserializer in myAssetInspectorValueDeserializers) { if (assetInspectorValueDeserializer.TryGetInspectorValue(currentAssetSourceFile, valueNode, out value)) { break; } } var objectReference = map.FindMapEntryBySimpleKey("objectReference")?.Content.Value.ToHierarchyReference(currentAssetSourceFile); var valueRange = valueNode.GetTreeTextRange(); result.Add(new PrefabModification(target, name, value, new TextRange(assetDocument.StartOffset + valueRange.StartOffset.Offset, assetDocument.StartOffset + valueRange.EndOffset.Offset), objectReference)); } } var sourcePrefabGuid = AssetUtils.GetSourcePrefab(currentAssetSourceFile, assetDocument.Buffer) as ExternalReference?; if (sourcePrefabGuid == null) { return(null); } return(new PrefabInstanceHierarchy(location, parentTransform, result, sourcePrefabGuid.Value.ExternalAssetGuid)); } else if (gameObject != null)// regular component { var name = AssetUtils.GetRawComponentName(assetDocument.Buffer); if (name == null) { return(null); } return(new ComponentHierarchy(location, gameObject.Value, name)); } return(null); }
public object Build(SeldomInterruptChecker checker, IPsiSourceFile file, AssetDocument assetDocument) { return(new AnimationExtractor(file, assetDocument).TryExtractEventUsage()); }