/** * 條整柱子位置並存放至ColumnList中 * 流程:先將兩亭的柱子列表內縮至適當位置,算出需移動柱子的方向向量 * ,由此向量與另一亭的同邊柱子位置做一個平面並計算需位移的距離 * 兩亭皆完成此步驟後將所有點加入新的列表中,並調整 List 順序 */ public void InitFunction(CombineTing combineTing, List <Vector3> eaveCornerColumnPosList, List <Vector3> goldCornerColumnPosList, float eaveColumnHeight) { this.eaveColumnHeight = eaveColumnHeight; this.goldColumnHeight = eaveColumnHeight; columnFundationHeight = eaveColumnHeight * 0.05f; CreateBody(combineTing.body, (int)combineTing.sides, combineTing.entranceIndexList, eaveCornerColumnPosList, goldCornerColumnPosList); }
/** * 初始化基座 */ public void InitFunction(CombineTing combineTing, List <Vector3> platTopPosList, float platformHeight, float platWidth) { this.platWidth = platWidth; this.platHeight = platformHeight; stairHeight = platformHeight; parentObj = combineTing.platform; entraneIndexList = combineTing.entranceIndexList; sides = (int)combineTing.sides; //*********************************************************************** platFormStruct = CreatePlatform(combineTing.platform, platTopPosList, -(platWidth - Define.initPlatWidth)); StartCreateBorder(isBorder); StartCreateStair(isStair); }
public void UpdateBodyToggleInfo(Toggle toggle) { BuildingObj nowBuilding = Buildings[selectFloor]; CombineTing CT = nowBuilding.transform.GetComponentInParent <CombineTing>(); switch (toggle.name) { case BodyMenuHandler.GoldColToggle_NAME: if (CT) { CT.ResetGoldColumn(toggle.isOn); CT.ResetWindowAndDoorNum(); } else { nowBuilding.ResetGoldColumn(toggle.isOn); nowBuilding.ResetWindowAndDoorNum(); } break; case BodyMenuHandler.FriezeToggle_NAME: if (CT) { CT.ResetFrieze(toggle.isOn); } else { nowBuilding.ResetFrieze(toggle.isOn); } break; case BodyMenuHandler.BalustradeToggle_NAME: if (CT) { CT.ResetBalustrade(toggle.isOn); } else { nowBuilding.ResetBalustrade(toggle.isOn); } break; default: print("!!! Can't Find Toggle Name !!!"); break; } }
public void UpdatePlameToggleInfo(Toggle toggle) { PlatformController platform = Buildings[selectFloor].platformController; BuildingObj nowBuilding = Buildings[selectFloor]; CombineTing CT = nowBuilding.transform.GetComponentInParent <CombineTing>(); switch (toggle.name) { case PlamformMenuHandler.StairToggle_NAME: if (CT) { CT.platformController.StartCreateStair(toggle.isOn); } else { nowBuilding.platformController.StartCreateStair(toggle.isOn); } break; case PlamformMenuHandler.BorderToggle_NAME: if (CT) { CT.platformController.StartCreateBorder(toggle.isOn); } else { nowBuilding.platformController.StartCreateBorder(toggle.isOn); } break; default: print("!!! Can't Find Toggle Name !!!"); break; } }
/** * 更新屋身 */ public void UpdateBodySliderInfo(Slider slider) { BuildingObj nowBuilding = Buildings[selectFloor]; CombineTing CT = nowBuilding.transform.GetComponentInParent <CombineTing>(); switch (slider.name) { case BodyMenuHandler.ColumeHeightSlider_NAME: if (CT) { float moveOffset = slider.value - CT.bodyController.eaveColumnHeight; for (int i = 0; i < CT.BuildingsList.Count; i++) { CT.BuildingsList[i].MoveBuildingRoof(new Vector3(0, moveOffset, 0)); } CT.bodyController.eaveColumnHeight = slider.value; CT.bodyController.goldColumnHeight = slider.value; CT.UpdateBodyFunction(); } else { float moveOffset = slider.value - nowBuilding.bodyController.eaveColumnHeight; nowBuilding.bodyController.eaveColumnHeight = slider.value; nowBuilding.bodyController.goldColumnHeight = slider.value; nowBuilding.MoveBuildingRoof(new Vector3(0, moveOffset, 0)); nowBuilding.ResetBodyFunction(); } break; case BodyMenuHandler.GoldColNumSlider_NAME: if (CT) { CT.bodyController.goldColumnbayNumber = (int)slider.value; CT.UpdateBodyFunction(); } else { nowBuilding.bodyController.goldColumnbayNumber = (int)slider.value; nowBuilding.DeleteGoldColumn(); nowBuilding.ResetGoldColumn(true); nowBuilding.ResetWindowAndDoorNum(); } break; case BodyMenuHandler.UnitInBay_NAME: if (CT) { CT.bodyController.unitNumberInBay = (int)slider.value; CT.UpdateBodyFunction(); } else { nowBuilding.bodyController.unitNumberInBay = (int)slider.value; nowBuilding.ResetWindowAndDoorNum(); } break; case BodyMenuHandler.DoorNumSlider_NAME: if (CT) { CT.bodyController.doorNumber = (int)slider.value; CT.UpdateBodyFunction(); } else { nowBuilding.bodyController.doorNumber = (int)slider.value; nowBuilding.ResetWindowAndDoorNum(); } break; case BodyMenuHandler.BodyWidthSlider_NAME: if (CT) { nowBuilding.bodyController.bodyWidth = slider.value; nowBuilding.ResetBodyFunction(); CT.UpdateBodyFunction(); CT.UpdatePlatformFunction(); } else { nowBuilding.bodyController.bodyWidth = slider.value; nowBuilding.ResetBodyFunction(); } break; case BodyMenuHandler.BodyLengthSlider_NAME: if (CT) { nowBuilding.bodyController.bodyLength = slider.value; nowBuilding.ResetBodyFunction(); CT.UpdateBodyFunction(); CT.UpdatePlatformFunction(); } else { nowBuilding.bodyController.bodyLength = slider.value; nowBuilding.ResetBodyFunction(); } break; } }
/** * 更新基座 */ public void UpdatePlameSliderInfo(Slider slider) { PlatformController platform = Buildings[selectFloor].platformController; BuildingObj nowBuilding = Buildings[selectFloor]; CombineTing CT = nowBuilding.transform.GetComponentInParent <CombineTing>(); switch (slider.name) { case PlamformMenuHandler.WidthSlider_NAME: if (CT) { CT.platformController.platWidth = slider.value; CT.UpdatePlatformFunction(); } else { nowBuilding.ResetPlatformFunction(platform.platLength, slider.value, platform.platHeight, platform.isStair); } break; case PlamformMenuHandler.DepthSlider_NAME: nowBuilding.ResetPlatformFunction(slider.value, platform.platWidth, platform.platHeight, platform.isStair); break; case PlamformMenuHandler.HeightSlider_NAME: if (CT) { float moveOffset = (slider.value - CT.platformController.platHeight) / 2; CT.MoveBuildingBody(new Vector3(0, moveOffset, 0)); for (int i = 0; i < CT.BuildingsList.Count; i++) { CT.BuildingsList[i].MoveBuildingRoof(new Vector3(0, moveOffset, 0)); } CT.platformController.platHeight = slider.value; CT.UpdatePlatformFunction(); } else { float moveOffset = (slider.value - nowBuilding.platformController.platHeight) / 2; nowBuilding.MoveBuildingBody(new Vector3(0, moveOffset, 0)); nowBuilding.MoveBuildingRoof(new Vector3(0, moveOffset, 0)); nowBuilding.ResetPlatformFunction(platform.platLength, platform.platWidth, slider.value, platform.isStair); } break; case PlamformMenuHandler.StairNumSlider_NAME: break; case PlamformMenuHandler.StairLengthSlider_NAME: nowBuilding.ResetStair(slider.value, platform.stairWidth); //***參數未設定好 break; case PlamformMenuHandler.StairWidthSlider_NAME: nowBuilding.ResetStair(platform.stairLength, slider.value); //***參數未設定好 break; default: print("!!! Can't Find Slider Name !!!"); break; } }
public List <BuildingObj> AddBuilding(Vector3 pos, float rotateAngle) { List <BuildingObj> buildings = new List <BuildingObj>(); //檢查是否為組合亭 if (AllBuildings.Count > 0) { List <BuildingObj> selectBuildings = MainController.Instance.AllBuildings[selectBuildingsIndex]; for (int i = 0; i < selectBuildings.Count; i++) { GameObject building = new GameObject("building" + buildingCount++); building.gameObject.AddComponent <BuildingObj>(); Vector3 revisePos = pos; revisePos.y = selectBuildings[i].platformCenter.y; building.GetComponent <BuildingObj>().InitFunction(building, revisePos, sides, selectBuildings[i].platformController.platLength, selectBuildings[i].platformController.platWidth, selectBuildings[i].platformController.platHeight, selectBuildings[i].bodyController.eaveColumnHeight, selectBuildings[i].bodyController.goldColumnHeight, selectBuildings[i].roofController.mainRidgeHeightOffset, selectBuildings[i].roofController.allJijaHeight, Vector3ListAddVector3(selectBuildings[i].roofController.topFloorBorderList, pos), (int)selectBuildings[i].roofController.roofType, selectBuildings[i].platformController.isStair, rotateAngle); buildings.Add(building.GetComponent <BuildingObj>()); BuildingObj LTing = building.GetComponent <BuildingObj>(); //檢查與其他組合亭有無需要合併 for (int j = AllBuildings.Count - 1; j >= 0; j--) { BuildingObj RTing = AllBuildings[j][i]; if (isNeedCombine(LTing, RTing)) { GameObject combinTing = new GameObject("CombinTing"); CombineTing combineTingCtrl = combinTing.AddComponent <CombineTing>(); List <BuildingObj> buildingsList = new List <BuildingObj>(); if (RTing.transform.GetComponentInParent <CombineTing>()) { Debug.Log("Already Has CombineTingoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"); Destroy(combinTing); combinTing = RTing.transform.GetComponentInParent <CombineTing>().gameObject; combineTingCtrl = RTing.transform.GetComponentInParent <CombineTing>(); LTing.transform.parent = combinTing.transform; buildingsList.AddRange(combineTingCtrl.BuildingsList); Destroy(combineTingCtrl.body.gameObject); Destroy(combineTingCtrl.platform.gameObject); } else { LTing.transform.parent = combinTing.transform; RTing.transform.parent = combinTing.transform; buildingsList.Add(RTing); } buildingsList.Add(LTing); combineTingCtrl.InitFunction(buildingsList.ToArray()); AllCT.Add(combineTingCtrl); break; } } } } else { Debug.Log("FirstBuilding"); GameObject building = new GameObject("building" + buildingCount++); building.gameObject.AddComponent <BuildingObj>(); building.GetComponent <BuildingObj>().InitFunction(building, pos, sides, initPlatformLength_DownStair, initPlatformWidth_DownStair, initPlatformHeight_DownStair, initEaveColumnHeight, initGoldColumnHeight, 0, initAllJijaHeight_TopStair, null, (int)roofType, false, rotateAngle); buildings.Add(building.GetComponent <BuildingObj>()); Debug.Log("----------------------------------- ----------------------------------- -----------------------------------"); Debug.Log("AllBuildings.Count : " + AllBuildings.Count); } AllBuildings.Add(buildings); return(buildings); }