/// <summary> /// Removes any built items from the machine. /// </summary> public static void CleanupByUninstalling() { while (BuiltItems.Count > 0) { BuiltItem item = BuiltItems.Pop(); item.Builder.UninstallItem(item); } }
void InitBuildObjRecurs(BuiltItem builtItem) { for (int i = 0; i < builtItem.children.Count; ++i) { InitBuildObjRecurs(builtItem.children[i]); } builtItem.objComponent.Initialize(this); UpdateItemTypes(builtItem, false); }
void FinalizeBuildObjRecurs(BuiltItem builtItem) { for (int i = 0; i < builtItem.children.Count; ++i) { FinalizeBuildObjRecurs(builtItem.children[i]); } UpdateItemTypes(builtItem, true); builtItem.objComponent.FinalizePlacement(); }
void UpdateBuiltPosRotRecurs(BuiltItem builtItem) { for (int i = 0; i < builtItem.children.Count; ++i) { UpdateBuiltPosRotRecurs(builtItem.children[i]); } builtItem.pos = builtItem.instance.transform.position; builtItem.rot = builtItem.instance.transform.rotation; }
void CleanBuildable() { currObjInstance = null; prevItem = currItem; currItem = null; currBuildComponent = null; prevObjTransform = currObjTransform; currObjTransform = null; currBuiltItem = null; buildObjColliding = false; }
void UpdateBuiltItems(Transform newParent) { int instanceId = FindBuiltItemIndexFromInstance(currObjInstance); if (instanceId == -1) { currBuiltItem = new BuiltItem(); currBuiltItem.item = currItem; currBuiltItem.name = currItem.name; currBuiltItem.instance = currObjInstance; currBuiltItem.objComponent = currBuildComponent; currBuiltItem.renderer = currObjInstance.GetComponentInChildren <Renderer>(); currBuiltItem.sceneId = SceneHandler.I.activeScene.buildIndex; builtItems.Add(currBuiltItem); GetOrAddBuiltItemsListByTag(currBuiltItem.item.itemTags[0]).Add(currBuiltItem); Debug.Log("Num built items: " + builtItems.Count); } else { currBuiltItem = builtItems[instanceId]; currItem = currBuiltItem.item; currBuildComponent = currBuiltItem.objComponent; } if (currBuiltItem.parentId != -1) { builtItems[currBuiltItem.parentId].children.Remove(currBuiltItem); currBuiltItem.parentId = -1; } if (newParent) { int parentInd = FindBuiltItemIndexFromInstance(newParent.gameObject); if (parentInd != -1) { builtItems[parentInd].children.Add(currBuiltItem); currObjInstance.transform.SetParent(newParent, true); } else { currObjInstance.transform.SetParent(null); } builtItems[instanceId].parentId = parentInd; } else { currObjInstance.transform.SetParent(null); } UpdateBuiltPosRotRecurs(currBuiltItem); }
void UpdateItemTypes(BuiltItem builtItem, bool finalizing) { var buildableComps = builtItem.instance.GetComponentsInChildren <IBuildable>(); if (buildableComps != null && buildableComps.Length > 0) { if (!buildables.ContainsKey(builtItem)) { buildables[builtItem] = buildableComps; } } ToggleBuildableEditing(builtItem, !finalizing); }
/// <summary> /// Ensures the packages built previously are uninstalled. /// </summary> protected override void UninstallItem(BuiltItem item) { MSIExec exec = new MSIExec(); exec.ExecutionMode = MSIExec.MSIExecMode.Uninstall; exec.OtherArguments = "IGNOREDEPENDENCIES=ALL"; exec.Product = item.Path; // Generate the log file name. string logFile = String.Format("{0}_{1:yyyyMMddhhmmss}_Cleanup_{2}.log", item.TestName, DateTime.UtcNow, Path.GetFileNameWithoutExtension(item.Path)); exec.LogFile = Path.Combine(Path.GetTempPath(), logFile); exec.Run(false); }
void ToggleBuildableEditing(BuiltItem builtItem, bool b) { IBuildable[] t; buildables.TryGetValue(builtItem, out t); if (t != null) { foreach (var i in t) { if (b) { i.OnToggleBuildableVisual(b); } i.OnToggleBuildableEdit(b); } } }
/// <summary> /// Ensures the packages built previously are uninstalled. /// </summary> protected override void UninstallItem(BuiltItem item) { TestTool bundle = new TestTool(item.Path, null); StringBuilder sb = new StringBuilder(); // Run silent uninstall. sb.Append("-quiet -uninstall -burn.ignoredependencies=ALL"); // Generate the log file name. string logFile = String.Format("{0}_{1:yyyyMMddhhmmss}_Cleanup_{2}.log", item.TestName, DateTime.UtcNow, Path.GetFileNameWithoutExtension(item.Path)); sb.AppendFormat(" -log {0}", Path.Combine(Path.GetTempPath(), logFile)); bundle.Arguments = sb.ToString(); bundle.Run(false); }
protected override OpResult _Store(BuiltItem _obj) { if (_obj == null) { return(OpResult.NotifyStoreAction(OpResult.ResultStatus.ObjectIsNull, _obj, "BuiltItem object cannot be created as it is null")); } if (Exists(_obj)) { ExecuteNonQuery(GetQuery_UpdateQuery(_obj)); return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Updated, _obj)); } ExecuteNonQuery(GetQuery_InsertQuery(_obj)); _obj.FromDb = true; return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Created, _obj)); }
void DestroyBuiltObjRecurs(BuiltItem builtItem) { AddBuildItem(builtItem.item, 1); for (int i = 0; i < builtItem.children.Count; ++i) { DestroyBuiltObjRecurs(builtItem.children[i]); } Destroy(builtItem.instance); builtItems.Remove(builtItem); GetOrAddBuiltItemsListByTag(currBuiltItem.item.itemTags[0]).Remove(currBuiltItem); if (buildables.ContainsKey(builtItem)) { buildables.Remove(builtItem); } if (builtItem == currBuiltItem) { CleanBuildable(); } }
void SpawnSceneObjInstances() { Debug.Log("Build scene change, items: " + builtItems.Count); for (int i = 0; i < builtItems.Count; ++i) { BuiltItem builtItem = builtItems[i]; if (!builtItems[i].item) { builtItems[i].item = AssetRegistry.I.GetItemFromName(builtItems[i].name); } if (builtItem.sceneId != SceneHandler.I.activeScene.buildIndex) { Debug.Log(builtItem.item.displayName + " not in this scene"); } if (builtItem.sceneId == SceneHandler.I.activeScene.buildIndex && !builtItem.instance) { builtItem.instance = Instantiate(builtItem.item.prefab); builtItem.instance.transform.position = builtItem.pos; builtItem.instance.transform.rotation = builtItem.rot; builtItem.objComponent = builtItem.instance.GetComponentInChildren <BuildingSystemObject>(); builtItem.renderer = builtItem.instance.GetComponentInChildren <Renderer>(); UpdateItemTypes(builtItem, true); } builtItems[i] = builtItem; } for (int i = 0; i < builtItems.Count; ++i) { if (builtItems[i].sceneId == SceneHandler.I.activeScene.buildIndex && builtItems[i].parentId != -1) { builtItems[i].instance.transform.SetParent(builtItems[builtItems[i].parentId].instance.transform, true); builtItems[builtItems[i].parentId].children.Add(builtItems[i]); } } SetToggleBuildableVisuals(false); }
private DbInsertStatement GetQuery_InsertQuery(BuiltItem _obj) { Dictionary <string, DbFieldEntry> fields = GetFields(_obj); return(DbMgr.CreateInsertClause("BuiltItems", fields)); }
public SolutionBuildResult(string[] outputFiles, BuiltProject[] projectsBuilt, string[] targetFiles, BuiltItem[] allItemsBuilt) { OutputFiles = outputFiles; ProjectsBuilt = projectsBuilt; TargetFilesUsed = targetFiles; AllItemsBuilt = allItemsBuilt; }
/// <summary> /// Override to uninstalls an individual built item of type T. /// </summary> /// <param name="item">Built item.</param> protected abstract void UninstallItem(BuiltItem item);
/// <summary> /// Patches are uninstalled by the MSIs they target. /// </summary> protected override void UninstallItem(BuiltItem item) { // Nothing to do for patches. }
private DbUpdateStatement GetQuery_UpdateQuery(BuiltItem _obj) { return(DbMgr.CreateUpdateClause("BuiltItems", GetFields(_obj), "BuiltItemID", _obj.BuiltItemID)); }