コード例 #1
0
ファイル: RayCmd.cs プロジェクト: zhudaijie/SharpCAD
        private void OnPointInputReturn(DynInputCtrl sender, DynInputResult retult)
        {
            DynInputResult <LitMath.Vector2> xyRet = retult as DynInputResult <LitMath.Vector2>;

            if (xyRet != null &&
                xyRet.status == DynInputStatus.OK)
            {
                switch (_step)
                {
                case Step.Step1_SpecifyBasePoint:
                {
                    _currXline           = new Ray();
                    _currXline.basePoint = xyRet.value;
                    _currXline.layerId   = this.document.currentLayerId;
                    _currXline.color     = this.document.currentColor;

                    this.GotoStep(Step.Step2_SpecifyOtherPoint);
                }
                break;

                case Step.Step2_SpecifyOtherPoint:
                {
                    LitMath.Vector2 dir = (xyRet.value
                                           - _currXline.basePoint).normalized;
                    if (dir.x != 0 || dir.y != 0)
                    {
                        _currXline.direction = dir;
                        _currXline.layerId   = this.document.currentLayerId;
                        _currXline.color     = this.document.currentColor;
                        _xlines.Add(_currXline);

                        _currXline = _currXline.Clone() as Ray;
                    }

                    this.GotoStep(Step.Step2_SpecifyOtherPoint);
                }
                break;
                }
            }
            else
            {
                if (_xlines.Count > 0)
                {
                    _mgr.FinishCurrentCommand();
                }
                else
                {
                    _mgr.CancelCurrentCommand();
                }
            }
        }
コード例 #2
0
        public override IEventResult OnMouseDown(IMouseButtonEventArgs e)
        {
            switch (_step)
            {
            case Step.Step1_SpecifyBasePoint:
                if (e.IsLeftPressed)
                {
                    _currXline           = presenter.AppendEntity(new Ray(), DBObjectState.Unconfirmed);
                    _currXline.basePoint = this.Pointer.CurrentSnapPoint;
                    _currXline.LayerId   = this.document.currentLayerId;
                    _currXline.Color     = this.document.currentColor;

                    this.GotoStep(Step.Step2_SpecifyOtherPoint);
                }
                break;

            case Step.Step2_SpecifyOtherPoint:
                if (e.IsLeftPressed)
                {
                    CADVector dir = (this.Pointer.CurrentSnapPoint
                                     - _currXline.basePoint).normalized;
                    if (dir.X != 0 || dir.Y != 0)
                    {
                        _currXline.direction = dir;
                        _currXline.LayerId   = this.document.currentLayerId;
                        _currXline.Color     = this.document.currentColor;
                        _xlines.Add(_currXline);

                        _currXline = Drawing.AppendEntity((Ray)_currXline.Clone(), DBObjectState.Unconfirmed);
                        _currXline.Draw();
                        //_currXline = _currXline.Clone() as Ray;
                    }
                }
                break;
            }

            return(EventResult.Handled);
        }
コード例 #3
0
    public override bool RayDetection(Ray ray, out RaycastHit hitInfo)
    {
        hitInfo = new RaycastHit();

        AABB aabb = GetAABB();

        Matrix4x4 m = RTMatrix;

        Ray aabbRay = ray.Clone();

        aabbRay.origin    = m * MathUtil.Vector4(ray.origin, 1);
        aabbRay.direction = m * ray.direction;
        aabbRay.direction.Normalize();

        bool res = aabb.AABBRayDetection(aabbRay);

        if (res)
        {
            return(ray.Raycast(transform, hitInfo));
        }

        return(res);
    }
コード例 #4
0
ファイル: RayCmd.cs プロジェクト: zhudaijie/SharpCAD
        public override EventResult OnMouseDown(MouseEventArgs e)
        {
            switch (_step)
            {
            case Step.Step1_SpecifyBasePoint:
                if (e.Button == MouseButtons.Left)
                {
                    _currXline           = new Ray();
                    _currXline.basePoint = this.pointer.currentSnapPoint;
                    _currXline.layerId   = this.document.currentLayerId;
                    _currXline.color     = this.document.currentColor;

                    this.GotoStep(Step.Step2_SpecifyOtherPoint);
                }
                break;

            case Step.Step2_SpecifyOtherPoint:
                if (e.Button == MouseButtons.Left)
                {
                    LitMath.Vector2 dir = (this.pointer.currentSnapPoint
                                           - _currXline.basePoint).normalized;
                    if (dir.x != 0 || dir.y != 0)
                    {
                        _currXline.direction = dir;
                        _currXline.layerId   = this.document.currentLayerId;
                        _currXline.color     = this.document.currentColor;
                        _xlines.Add(_currXline);

                        _currXline = _currXline.Clone() as Ray;
                    }
                }
                break;
            }

            return(EventResult.Handled);
        }