private IEnumerator BuildingWarmthCheckRoutine(FloorArchitect floor, IStructureSupport ceiling) { this._hasActiveWarmth = true; LocalPlayer.GameObject.SendMessage("HomeWarmth"); yield return(YieldPresets.WaitPointFiveSeconds); for (int i = 0; i < 2; i++) { bool hasLitFire = true; while (hasLitFire && floor != null && floor.gameObject && ceiling != null && (MonoBehaviour)ceiling && ((MonoBehaviour)ceiling).gameObject && this.IsPlayerPositionValid(LocalPlayer.Transform.position, floor, ceiling)) { i = 0; yield return(YieldPresets.WaitOneSecond); hasLitFire = this.FloorHasLitFire(floor.transform); } if (!floor || !hasLitFire) { break; } ceiling = this.SearchValidCeiling(floor); } LocalPlayer.GameObject.SendMessage("LeaveHomeWarmth"); this._hasActiveWarmth = false; yield break; }
private IStructureSupport SearchValidCeiling(FloorArchitect floor) { IStructureSupport structureSupport = this.SearchValidCeiling <FloorArchitect>(floor); if (structureSupport == null) { structureSupport = this.SearchValidCeiling <RoofArchitect>(floor); } return(structureSupport); }
private IStructureSupport SearchValidCeiling <T>(FloorArchitect floor) where T : IStructureSupport { foreach (T t in floor.GetComponentsInChildren <T>()) { if (t != null && t.GetLevel() > floor.GetLevel() + 4f && this.IsPlayerPositionValid(LocalPlayer.Transform.position, floor, t)) { return(t); } } return(null); }
private IStructureSupport SearchValidCeiling <T>(FloorArchitect floor) where T : IStructureSupport { T[] componentsInChildren = floor.GetComponentsInChildren <T>(); for (int i = 0; i < componentsInChildren.Length; i++) { T t = componentsInChildren[i]; if (t != null && t.GetLevel() > floor.GetLevel() + 4f && this.IsPlayerPositionValid(LocalPlayer.Transform.position, floor, t)) { return(t); } } return(null); }
private void OnTriggerEnter(Collider other) { if (other.CompareTag("structure") && !this._hasActiveWarmth) { FloorArchitect componentInParent = other.GetComponentInParent <FloorArchitect>(); if (componentInParent) { IStructureSupport structureSupport = this.SearchValidCeiling(componentInParent); if (structureSupport != null && this.FloorHasLitFire(componentInParent.transform)) { base.StartCoroutine(this.BuildingWarmthCheckRoutine(componentInParent, structureSupport)); return; } } } }
public void Distort(LocalizedHitData data) { if (data._damage > 0f) { Renderer[] componentsInChildren = this._foundation.FoundationRoot.GetComponentsInChildren <Renderer>(); this.DistortRenderers(data, componentsInChildren); if (this._foundation._mode == FoundationArchitect.Modes.ManualSlave) { FloorArchitect component = base.GetComponent <FloorArchitect>(); if (component) { componentsInChildren = component.FloorRoot.GetComponentsInChildren <Renderer>(); this.DistortRenderers(data, componentsInChildren); } } } }
public void GetAllPlanesTest() { List <FloorArchitect> floorsAr; string testFile = @"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада.dwg"; using (var db = new Database(false, true)) { db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, ""); db.CloseInput(true); using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db)) { BaseService baseService = new BaseService(); baseService.InitToCreationPanels(db); floorsAr = FloorArchitect.GetAllPlanes(db, baseService); } db.SaveAs(@"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада-WindowMarks.dwg", DwgVersion.Current); } Assert.AreEqual(floorsAr.Count, 2); }
public void CreateFacadeTest() { Inspector.Clear(); var docTest = Application.DocumentManager.MdiActiveDocument; var db = docTest.Database; baseService.ClearPanelsAkrFromDrawing(db); // Подготовка - копирование блоков, слоев, стилей, и т.п. baseService.InitToCreationPanels(db); // Определение фасадов List <FacadeMounting> facadesMounting = FacadeMounting.GetFacadesFromMountingPlans(); List <FloorArchitect> floorsAr = FloorArchitect.GetAllPlanes(db, baseService); // Создание определений блоков панелей по базе baseService.CreateBtrPanels(facadesMounting, floorsAr); //Создание фасадов FacadeMounting.CreateFacades(facadesMounting); //Восстановление ассоциативной штриховки в дин блоках сечений using (var t = db.TransactionManager.StartTransaction()) { var secBlocks = baseService.Env.BlPanelSections; foreach (var item in secBlocks) { item.ReplaceAssociateHatch(); } t.Commit(); } if (Inspector.HasErrors) { Inspector.Show(); } }
private IEnumerator BuildingWarmthCheckRoutine(FloorArchitect floor, IStructureSupport ceiling) { BuildingWarmthCheck.< BuildingWarmthCheckRoutine > c__Iterator14C <BuildingWarmthCheckRoutine> c__Iterator14C = new BuildingWarmthCheck.< BuildingWarmthCheckRoutine > c__Iterator14C();