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(); } } }
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); }
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); }
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); }