public static void Execute(CorrigoService service, AssetTree toUpdate) { if (toUpdate == null || service == null) { return; } toUpdate.Distance = 1; Console.WriteLine(); Console.WriteLine($"Updating AssetTree with id={toUpdate.Id.ToString()}"); var resultUpdate = service.Execute(new UpdateCommand { Entity = toUpdate, PropertySet = new PropertySet { Properties = new[] { "Distance" } } }); if (resultUpdate == null) { Console.WriteLine("Update of AssetTree failed"); return; } if (resultUpdate.ErrorInfo != null && !string.IsNullOrEmpty(resultUpdate.ErrorInfo.Description)) { Console.WriteLine(resultUpdate.ErrorInfo.Description); Console.WriteLine("Update of AssetTree failed"); return; } Console.WriteLine("AssetTree is updated"); }
public static void CRUDExample(CorrigoService service) { if (service == null) { return; } AssetTree assetTree = Create.Execute(service); // AssetTree is Readonly - NonCreatable, NonDeletable, NonUpdatable var assetTrees = Read.RetrieveMultiple(service); Read.RetrieveByQuery(service); if (assetTrees != null && assetTrees.Length > 0) { AssetTree lastAsset = (AssetTree)assetTrees[assetTrees.Length - 1]; assetTree = Read.Retrieve(service, lastAsset.ChildId, lastAsset.ParentId); Update.Execute(service, ((AssetTree)assetTrees[assetTrees.Length - 1])); // AssetTree is Readonly - NonCreatable, NonDeletable, NonUpdatable Delete.Execute(service, assetTrees[assetTrees.Length - 1].Id); // AssetTree is Readonly - NonCreatable, NonDeletable, NonUpdatable } }
private void ReplaceMaterials(GameObject go, string path) { var meshRenderers = go.GetComponentsInChildren <MeshRenderer>(); foreach (var meshRenderer in meshRenderers) { var materials = meshRenderer.materials; if (materials == null) { continue; } for (var index = 0; index < materials.Length; index++) { var material = materials[index]; var materialName = material.name.Replace(" (Instance)", ""); Sideloader.LogDebug($"Material: {string.Join(":", new[] {path, materialName})}"); var materialMod = AssetTree.Find(path, materialName).FirstOrDefault(); if (materialMod != null) { materials[index] = materialMod.Mod.LoadMaterial(materialMod.FullPath); } } meshRenderer.materials = materials; } }
public static void Restore(CorrigoService service, AssetTree toRestore) { if (toRestore == null || service == null) { return; } Console.WriteLine(); Console.WriteLine($"Restoring AssetTree with id={toRestore.Id.ToString()}"); var restoreResult = service.Execute(new RestoreCommand { EntitySpecifier = new EntitySpecifier { Id = toRestore.Id, EntityType = EntityType.AssetTree } }); if (restoreResult == null) { Console.WriteLine("Update of AssetTree failed"); return; } if (restoreResult.ErrorInfo != null && !string.IsNullOrEmpty(restoreResult.ErrorInfo.Description)) { Console.WriteLine(restoreResult.ErrorInfo.Description); Console.WriteLine("Restore of AssetTree failed"); return; } Console.WriteLine("AssetTree is restored"); }
public virtual void Initialize(IEnumerable <Mod> mods) { AssetTree = new AssetTree(TargetPathLength); foreach (var mod in mods) { RegisterTreeAssets(mod); } }
public static AssetTree Execute(CorrigoService service) { Console.WriteLine(); Debug.Print("Creating AssetTree"); Console.WriteLine("Creating AssetTree"); var toCreate = new AssetTree { //ParentId =1, //ChildId = 1, //Child = new Location { Id = 1}, //Distance = 2 }; var resultData = service.Execute(new CreateCommand { Entity = toCreate }); if (resultData == null) { Debug.Print("Creation of new AssetTree failed"); Console.WriteLine("Creation of new AssetTree failed"); Console.WriteLine(); return(null); } var commandResponse = resultData as OperationCommandResponse; int?id = (commandResponse != null && commandResponse.EntitySpecifier != null) ? commandResponse.EntitySpecifier.Id : null; if (id.HasValue && resultData.ErrorInfo == null) { toCreate.Id = id.Value; Debug.Print($"Created new AssetTree with Id={id.ToString()}"); Console.WriteLine($"Created new AssetTree with Id={id.ToString()}"); Console.WriteLine(); return(toCreate); } Debug.Print("Creation of new AssetTree failed"); Console.WriteLine("Creation of new AssetTree failed"); Console.WriteLine(); if (resultData.ErrorInfo != null && !string.IsNullOrEmpty(resultData.ErrorInfo.Description)) { Debug.Print(resultData.ErrorInfo.Description); Console.WriteLine(resultData.ErrorInfo.Description); } return(null); }
private void Init(string path) { _assetTree = new AssetTree(); _assetTreeGUI = new AssetTreeIMGUI(_assetTree.Root); EditorUtility.DisplayProgressBar("AbsoluteExport is exporting", "Reading AssetDatabase", 100); var tmp = AssetDatabase.FindAssets(""); foreach (var asset in tmp) { _assetTree.AddAsset(asset); } EditorUtility.DisplayProgressBar("AbsoluteExport is exporting", "Collecting assets", 100); //Step one: getting hidden Project Settings and other stuff //_commonAssets = Directory.GetFiles("ProjectSettings", "*.asset").ToList(); _mainFilePath = path; _packageName = Path.GetFileNameWithoutExtension(_mainFilePath); //Step two: getting assets and dependencies _assets = new List <string> { }; _assets.AddRange(CollectDependencies()); EditorUtility.ClearProgressBar(); //Step tree: process cginc (due to SHADERCOMPILE bug) EditorUtility.DisplayProgressBar("AbsoluteExport is exporting", "Searching for used cginc files", 100); var shaders = Utils.GetShaders(_assets); var shadersCode = shaders.Select(Utils.LoadAssetAsText).ToList(); var finder = new ShaderFinder(shadersCode); _assets.AddRange(finder.Process()); EditorUtility.ClearProgressBar(); var staticFinder = new StaticFinder(Utils.GetScripts(_assets)); staticFinder.Process(); ProcessAssetTreeBranch(_assetTree.Root); _assetTree.ConfigurePackages(); }
private void ReplaceMeshes(GameObject go, string path) { // TODO: Eventually, might need to handle SkinnedMeshRenderers, but for now it seems H3 doesn't use those for guns var meshFilters = go.GetComponentsInChildren <MeshFilter>(); foreach (var meshFilter in meshFilters) { var filterName = meshFilter.name; var meshName = meshFilter.mesh.name.Replace(" Instance", ""); Sideloader.Logger.LogDebug($"Mesh: {string.Join(":", new[] {path, filterName, meshName})}"); var replacement = AssetTree.Find(path, filterName, meshName).FirstOrDefault(); if (replacement != null) { meshFilter.mesh = replacement.Mod.LoadMesh(replacement.FullPath); } } }
private void ReplaceTextures(GameObject go, string path) { var meshRenderers = go.GetComponentsInChildren <MeshRenderer>(); foreach (var meshRenderer in meshRenderers) { var materials = meshRenderer.materials; if (materials == null) { continue; } foreach (var material in materials) { var materialName = material.name.Replace(" (Instance)", ""); if (material.mainTexture == null) { continue; } var textureName = material.mainTexture.name; Sideloader.Logger.LogDebug($"Texture: {string.Join(":", new[] {path, materialName, textureName})}"); var nodes = AssetTree.Find(path, materialName, textureName); if (nodes.Length == 0) { continue; } // TODO: Remove duplicates to prevent duplicate loading foreach (var modNode in nodes) { var tex = modNode.Mod.LoadTexture(modNode.FullPath); if (modNode.Path == null) { material.mainTexture = tex; } else { material.SetTexture(modNode.Path, tex); } } } meshRenderer.materials = materials; } }
private void ReplaceItemSpawnerIcon(ItemSpawnerID itemSpawnerId, string path) { if (!itemSpawnerId.Sprite) { return; } Sideloader.LogDebug( $"ItemSpawnerID Icon: {string.Join(":", new[] {path, itemSpawnerId.Sprite.name, itemSpawnerId.Sprite.texture.name})}"); var mod = AssetTree.Find(path, itemSpawnerId.Sprite.name, itemSpawnerId.Sprite.texture.name) .FirstOrDefault(); if (mod == null) { return; } var tex = mod.Mod.LoadTexture(mod.FullPath); var sprite = Sprite.Create(tex, itemSpawnerId.Sprite.rect, itemSpawnerId.Sprite.pivot, itemSpawnerId.Sprite.pixelsPerUnit, 0, SpriteMeshType.Tight, itemSpawnerId.Sprite.border); itemSpawnerId.Sprite = sprite; }
protected override void Init() { PackageMakerState.InitState(); var hashSet = new HashSet <string>(); if (mPackageVersion.IncludeFileOrFolders.Count == 0 && mPackageVersion.InstallPath.EndsWith("/")) { hashSet.Add(mPackageVersion.InstallPath.Remove(mPackageVersion.InstallPath.Length - 1)); } foreach (var packageIncludeFileOrFolder in mPackageVersion.IncludeFileOrFolders) { hashSet.Add(packageIncludeFileOrFolder); } _assetTree = new AssetTree(); _assetTreeGUI = new AssetTreeIMGUI(_assetTree.Root); var guids = AssetDatabase.FindAssets(string.Empty); int i = 0, l = guids.Length; for (; i < l; ++i) { _assetTree.AddAsset(guids[i], hashSet); } RootLayout = new VerticalLayout("box"); var editorView = EasyIMGUI.Vertical().Parent(RootLayout); var uploadingView = new VerticalLayout().Parent(RootLayout); // 当前版本号 var versionLine = EasyIMGUI.Horizontal().Parent(editorView); EasyIMGUI.Label().Text("当前版本号").Width(100).Parent(versionLine); EasyIMGUI.Label().Text(mPackageVersion.Version).Width(100).Parent(versionLine); // 发布版本号 var publishedVersionLine = new HorizontalLayout().Parent(editorView); EasyIMGUI.Label().Text("发布版本号") .Width(100) .Parent(publishedVersionLine); EasyIMGUI.TextField() .Text(mPublishVersion) .Width(100) .Parent(publishedVersionLine) .Content.Bind(v => mPublishVersion = v); // 类型 var typeLine = EasyIMGUI.Horizontal().Parent(editorView); EasyIMGUI.Label().Text("类型").Width(100).Parent(typeLine); var packageType = new EnumPopupView(mPackageVersion.Type).Parent(typeLine); var accessRightLine = EasyIMGUI.Horizontal().Parent(editorView); EasyIMGUI.Label().Text("权限").Width(100).Parent(accessRightLine); var accessRight = new EnumPopupView(mPackageVersion.AccessRight).Parent(accessRightLine); EasyIMGUI.Label().Text("发布说明:").Width(150).Parent(editorView); var releaseNote = EasyIMGUI.TextArea().Width(245) .Parent(editorView); // 文件选择部分 EasyIMGUI.Label().Text("插件目录: " + mPackageVersion.InstallPath) .Parent(editorView); EasyIMGUI.Custom().OnGUI(() => { _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition); _assetTreeGUI.DrawTreeLayout(); EditorGUILayout.EndScrollView(); }).Parent(editorView); PackageMakerState.InEditorView.BindWithInitialValue(value => { editorView.Visible = value; }) .AddTo(mDisposableList); if (User.Logined) { EasyIMGUI.Button() .Text("发布") .OnClick(() => { var includedPaths = new List <string>(); _assetTree.Root.Traverse(data => { if (data != null && data.isSelected) { includedPaths.Add(data.fullPath); return(false); } return(true); }); mPackageVersion.IncludeFileOrFolders = includedPaths; mPackageVersion.Readme.content = releaseNote.Content.Value; mPackageVersion.AccessRight = (PackageAccessRight)accessRight.ValueProperty.Value; mPackageVersion.Type = (PackageType)packageType.ValueProperty.Value; mPackageVersion.Version = mPublishVersion; mControllerNode.SendCommand(new PublishPackageCommand(mPackageVersion)); }).Parent(editorView); } var notice = new LabelViewWithRect("", 100, 200, 200, 200).Parent(uploadingView); PackageMakerState.NoticeMessage .BindWithInitialValue(value => { notice.Content.Value = value; }).AddTo(mDisposableList); PackageMakerState.InUploadingView.BindWithInitialValue(value => { uploadingView.Visible = value; }) .AddTo(mDisposableList); }
public AssetPairsInfo(Asset[] assets, string[] pairs, AssetTree tree) { Assets = assets; Pairs = pairs; Tree = tree; }
public AssetPairsInfo() { Tree = new AssetTree(); Assets = Tree.Assets.ToArray(); Pairs = new string[0]; }
public static AssetTree Retrieve(CorrigoService service, int childId, int parentId) { Console.WriteLine(); Console.WriteLine($"Retrieve AssetTree with ChildId={childId} ParentId={parentId}"); CorrigoEntity result = null; try { result = service.Retrieve( new AssetTreeEntitySpecifier { ChildId = childId, ParentId = parentId }, //new PropertySet //{ // Properties = new string[] // { // "Id", // "ParentId", // "ChildId", // "Child.*", // //"Child.Address.*", // "Distance" // } //} new AllProperties() ); } catch (Exception e) { if (!string.IsNullOrEmpty(e.Message)) { Console.WriteLine(e.Message); } } if (result == null) { Console.WriteLine("Retrieve failed"); return(null); } AssetTree toReturn = result as AssetTree; if (toReturn == null) { Console.WriteLine("Retrieve failed"); return(null); } int padRightNumber = 55; Console.WriteLine(string.Concat("AssetTree.Id=".PadRight(padRightNumber), toReturn.Id.ToString())); Console.WriteLine(string.Concat("AssetTree.ParentId=".PadRight(padRightNumber), toReturn.ParentId.ToString())); if (toReturn.Child != null) { Console.WriteLine(string.Concat("AssetTree.Child.Name=".PadRight(padRightNumber), toReturn.Child.Name ?? "")); if (toReturn.Child.Address != null) { Console.WriteLine(string.Concat("AssetTree.Child.Address.Country=".PadRight(padRightNumber), toReturn.Child.Address.Country ?? "")); Console.WriteLine(string.Concat("AssetTree.Child.Address.City=".PadRight(padRightNumber), toReturn.Child.Address.City ?? "")); Console.WriteLine(string.Concat("AssetTree.Child.Address.Street=".PadRight(padRightNumber), toReturn.Child.Address.Street ?? "")); } } Console.WriteLine(); return(toReturn); }