public void SwitchDisplayState(EPlaceableObjectState state, BuildingBlockConfig config_file) { LocalPlayer lp = GameFacade.Instance.GetLocalPlayer(); if (state != current_state) { current_state = state; switch (state) { case EPlaceableObjectState.Normal: mesh_renderer.material = config_file.standard; lp.operation_state = EOperationState.Default; EnableCollider = true; //无论如何这里应该把Snaping状态设置为False snaped_slot_count = 0; break; case EPlaceableObjectState.Dropable: mesh_renderer.material = config_file.enable; lp.operation_state = EOperationState.Building_Dropable; EnableCollider = false; break; case EPlaceableObjectState.Conflict: mesh_renderer.material = config_file.confict; lp.operation_state = EOperationState.Building_Confict; EnableCollider = false; break; } } }
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 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 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 void DetachDropedBuilding() { building_object = null; building_config = null; }