public void OnBeginPress() { Debug.Log("Drop Building Block"); LocalPlayer lp = GameFacade.Instance.GetLocalPlayer(); WorldManager world_mgr = GameFacade.Instance.GetWorldManager(); Transform parent = world_mgr.FindTransform("BuildingBlocks"); if (parent != null) { PlacingBuildingDetector pbd = lp.building_block_params.placing_building_detector; //先改变父节点 BuildingObject bo = pbd.building_object; BuildingBlockConfig bbi = pbd.building_config; if (bo != null && bbi != null) { //修改物件的父节点 bo.transform.SetParent(parent); //在取消联系。 lp.building_block_params.placing_building_detector.DetachDropedBuilding(); //改变Shader bo.SwitchDisplayState(EPlaceableObjectState.Normal, bbi); //消耗库存 lp.CostSwiftSlotItem(); } } }
public void SnapToSlot(BuildingSnapSlot source_slot, BuildingSnapSlot target_slot) { if (snaped_slot_count == 0) { //暂时放弃控制权。 transform.SetParent(GameFacade.Instance.GetWorldManager().building_root); BuildingObject target_bo = target_slot.building_owner; //rotation float y = target_bo.transform.eulerAngles.y; float this_y = transform.eulerAngles.y; float delta_y = y - this_y; while (delta_y > 90) { delta_y -= 90; } while (delta_y < -90) { delta_y += 90; } Rotate(delta_y); //position Vector3 delta = target_slot.transform.position - source_slot.transform.position; transform.position += delta; transform.localScale = Vector3.one; old_snap_pos = detector_transform.position; } snaped_slot_count++; Debug.Log("Current Snaped Count is " + snaped_slot_count); }
public void AttachPendingDropBuilding(BuildingObject bo, BuildingBlockConfig bbi) { building_object = bo; building_object.transform.SetParent(this.transform); building_object.transform.localPosition = Vector3.zero; building_object.transform.localEulerAngles = Vector3.zero; building_config = bbi; }
public void OnPressing() { LocalPlayer lp = GameFacade.Instance.GetLocalPlayer(); BuildingBlockParams bbp = lp.building_block_params; BuildingObject bo = lp.building_block_params.placing_building_detector.building_object; if (bo.SnapCount == 0) { bbp.Rotate(); } }
public bool OnTakeOut(UGUIInventoryItemConfig item_config, LocalPlayer local_player) { if (item_config.GetType() == typeof(BuildingBlockConfig)) { GameObject gobj = GameObject.Instantiate(item_config.prefab); BuildingBlockParams bbp = local_player.building_block_params; BuildingObject bo = gobj.GetComponent <BuildingObject>(); BuildingBlockConfig bbi = item_config as BuildingBlockConfig; if (bo != null && bbi != null) { bbp.placing_building_detector.AttachPendingDropBuilding(bo, bbi); bbp.building_block_orb_distance = bbi.drop_orb_distance; } } return(false); }
public BuildingObjectData(BuildingObject bo) { bo.SaveBasicInfo(this); }
public void DetachDropedBuilding() { building_object = null; building_config = null; }