Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
    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);
        }
Esempio n. 5
0
 void ReleaseRight()
 {
     if (SelectedBlock != null)
     {
         SelectedBlock.SetSelected(false);
         SelectedBlock.ToggleCheck();
         SelectedBlock = null;
     }
     rightBlock = false;
 }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
 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);
         }
     }
 }
Esempio n. 9
0
        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>());
 }
Esempio n. 11
0
 public void BlockSelect(SelectedBlock selected)
 {
     selectedBlock = selected;
 }