Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
 void InitBuildObjRecurs(BuiltItem builtItem)
 {
     for (int i = 0; i < builtItem.children.Count; ++i)
     {
         InitBuildObjRecurs(builtItem.children[i]);
     }
     builtItem.objComponent.Initialize(this);
     UpdateItemTypes(builtItem, false);
 }
Beispiel #3
0
 void FinalizeBuildObjRecurs(BuiltItem builtItem)
 {
     for (int i = 0; i < builtItem.children.Count; ++i)
     {
         FinalizeBuildObjRecurs(builtItem.children[i]);
     }
     UpdateItemTypes(builtItem, true);
     builtItem.objComponent.FinalizePlacement();
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 void CleanBuildable()
 {
     currObjInstance    = null;
     prevItem           = currItem;
     currItem           = null;
     currBuildComponent = null;
     prevObjTransform   = currObjTransform;
     currObjTransform   = null;
     currBuiltItem      = null;
     buildObjColliding  = false;
 }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        /// <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);
        }
Beispiel #9
0
 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);
         }
     }
 }
Beispiel #10
0
        /// <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);
        }
Beispiel #11
0
        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));
        }
Beispiel #12
0
        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();
            }
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        private DbInsertStatement GetQuery_InsertQuery(BuiltItem _obj)
        {
            Dictionary <string, DbFieldEntry> fields = GetFields(_obj);

            return(DbMgr.CreateInsertClause("BuiltItems", fields));
        }
Beispiel #15
0
 public SolutionBuildResult(string[] outputFiles, BuiltProject[] projectsBuilt, string[] targetFiles, BuiltItem[] allItemsBuilt)
 {
     OutputFiles = outputFiles;
     ProjectsBuilt = projectsBuilt;
     TargetFilesUsed = targetFiles;
     AllItemsBuilt = allItemsBuilt;
 }
Beispiel #16
0
 /// <summary>
 /// Override to uninstalls an individual built item of type T.
 /// </summary>
 /// <param name="item">Built item.</param>
 protected abstract void UninstallItem(BuiltItem item);
Beispiel #17
0
 /// <summary>
 /// Patches are uninstalled by the MSIs they target.
 /// </summary>
 protected override void UninstallItem(BuiltItem item)
 {
     // Nothing to do for patches.
 }
Beispiel #18
0
 private DbUpdateStatement GetQuery_UpdateQuery(BuiltItem _obj)
 {
     return(DbMgr.CreateUpdateClause("BuiltItems", GetFields(_obj), "BuiltItemID", _obj.BuiltItemID));
 }