public void Save() { //Ac.InitProgress("Saving block data...", SelectedBlock.BlockCount); using (var docLock = Ac.Doc.LockDocument()) using (var trans = Ac.StartTransaction()) { var blockDef = trans.GetBlockDef(SelectedBlock.Name); foreach (var attr in blockDef.Attributes) { // Update BlockDef from 'editable' property value var attrPresenter = SelectedBlock.GetAttribute(attr.Tag); attr.Invisible = !attrPresenter.AttrVisiblePresenter; } var blockRefs = blockDef.GetBlocks(trans); foreach (var blockRef in blockRefs) { blockRef.ResetBlock(); blockRef.Scale = SelectedBlockScale; foreach (var attr in blockRef.Attributes) { var attrPresenter = SelectedBlock.GetAttribute(attr.Tag); attr.Invisible = !attrPresenter.AttrVisiblePresenter; } Ac.ProgressStep(); } trans.SetSavedBlockScale(SelectedBlock.Name, SelectedBlockScale); trans.Commit(); } Ac.ClearProgress(); }
private SelectedBlock GetSelectedBlock() { Ray ray = cam.ScreenPointToRay(new Vector2(Screen.width / 2f, Screen.height / 2f)); RaycastHit hit; if (Physics.Raycast(ray, out hit, range)) { // Created selected block data SelectedBlock block = new SelectedBlock(); block.hasSelectedBlock = true; // Shift hit location to avoid floating point errors Vector3 inside = hit.point - ray.direction * .0001f; Vector3 over = hit.point + ray.direction * .0001f; // Translate hit location to blockworld coords Vector3 subWorldPos = world.transform.InverseTransformPoint(inside); block.xInside = Mathf.FloorToInt(subWorldPos.x); block.yInside = Mathf.FloorToInt(subWorldPos.y); block.zInside = Mathf.FloorToInt(subWorldPos.z); subWorldPos = world.transform.InverseTransformPoint(over); block.xOn = Mathf.FloorToInt(subWorldPos.x); block.yOn = Mathf.FloorToInt(subWorldPos.y); block.zOn = Mathf.FloorToInt(subWorldPos.z); return(block); } return(new SelectedBlock()); }
void RightClick(Vector3 mousePosition) { if (clickBlock) { lrBlock = true; clickBlock = false; if (SelectedBlock) { SelectedBlock.SetSelected(false); SelectedBlock = null; } CheckLR(mousePosition); return; } Ray ray = Camera.main.ScreenPointToRay(mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, float.MaxValue, 1 << LayerMask.NameToLayer("Block"))) { Block block = hit.collider.gameObject.GetComponent <Block>(); block.SetSelected(true); SelectedBlock = block; rightBlock = true; } }
public bool CanCut() { if (TrySubmitChanged != null && SelectedBlock.Is <SeatArrangement>()) { return(TrySubmitChanged(true, null)); } return(true); }
void ReleaseRight() { if (SelectedBlock != null) { SelectedBlock.SetSelected(false); SelectedBlock.ToggleCheck(); SelectedBlock = null; } rightBlock = false; }
private void Update() { if (world == null) { return; } if (selectionBox.transform.parent == null) { selectionBox.transform.SetParent(world.transform); selectionBox.transform.localRotation = Quaternion.identity; selectionBox.transform.localScale = Vector3.one; } if (Time.time - lastPlace < editCooldown) { return; } SelectedBlock sel = GetSelectedBlock(); if (!sel.hasSelectedBlock) { selectionBox.SetActive(false); return; } selectionBox.SetActive(true); if (selectionInside) { selectionBox.transform.localPosition = new Vector3(sel.xOn, sel.yOn, sel.zOn) + Vector3.one * 0.5f; } else { selectionBox.transform.localPosition = new Vector3(sel.xInside, sel.yInside, sel.zInside) + Vector3.one * 0.5f; } if (HasRequestedPlace() && block != null) { if (CanPlaceBlockAt(sel.xInside, sel.yInside, sel.zInside)) { lastPlace = Time.time; world.SetBlock(sel.xInside, sel.yInside, sel.zInside, block); } } else if (HasRequestedBreak()) { lastPlace = Time.time; world.SetBlock(sel.xOn, sel.yOn, sel.zOn, null); } }
public void MoveBallToTarget(Block target) { if (SelectedBlock != null) { if (GetPath(SelectedBlock, target, ref path, SelectedBlock.CurrentBall.Type == Ball.BallType.Ghost)) { foreach (var p in path) { StartCoroutine(p.AnimatingPath(SelectedBlock.CurrentBall.SpriteImg)); } target.SetBall(SelectedBlock.CurrentBall); SelectedBlock.RemoveBall(); CheckMatchAtBlock(target); StartCoroutine(AddPrepareBallsToBoard()); } } SelectedBlock = null; }
void MoveRight(Vector3 mousePosition) { if (rightBlock) { if (SelectedBlock != null) { SelectedBlock.SetSelected(false); SelectedBlock = null; } Ray ray = Camera.main.ScreenPointToRay(mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, float.MaxValue, 1 << LayerMask.NameToLayer("Block"))) { Block block = hit.collider.gameObject.GetComponent <Block>(); SelectedBlock = block; block.SetSelected(true); } } }
private void DeleteSlot(DataAccess.DataModels.Slot obj) { Task.WaitAll(Task.Run(async() => await Load())); var updateblock = _blocksList.Find(param => param.ID == obj.BlockID); if (updateblock.NumberOfSlots != 0) { if (MessageBox.Show("Do you want to delete?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Asterisk) == MessageBoxResult.Yes) { try { Task.WaitAll(Task.Run(async() => await _slotsRepository.DeleteSlotAsync(obj))); updateblock.NumberOfSlots--; Task.WaitAll(Task.Run(async() => await _blocksRepository.UpdateBlockAsync(updateblock))); } catch { MessageBox.Show("This slot has been using!", "Warning", MessageBoxButton.OK, MessageBoxImage.Exclamation); } } } Task.WaitAll(Task.Run(async() => await Load())); SlotsView = new ObservableCollection <DataAccess.DataModels.Slot>(); if (SelectedBlock != null) { SlotsView.AddRange(_slotsList.FindAll(param => param.BlockID == $"HCMUTEPL{SelectedBlock.ToString()}")); } else { SlotsView.AddRange(_slotsList.GetRange(0, _slotsList.Count)); } }
public bool CanDelete() { return(SelectedBlock.Is <SeatEvent>()); }
public void BlockSelect(SelectedBlock selected) { selectedBlock = selected; }