修复:框选时,如果选择框的长或宽等于0,那么退化成线选择,避免选择错误

pull/2336/MERGE
ChenX 1 year ago
parent b031c1c819
commit 18894834ab

@ -15,6 +15,7 @@ import { PointPickOneObject } from './PointPick';
import { SelectSetBase } from './SelectBase';
import { SelectBox, SelectType } from './SelectBox';
import { Filter } from './SelectFilter';
import { SelectLine } from './SelectLine';
import { SelectPick } from './SelectPick';
import { SelectSet } from './SelectSet';
@ -185,7 +186,17 @@ export class SelectControls implements EditorService
SelectByCss()
{
let isLineSelect = this._SelectCss.start.x === this._SelectCss.end.x || this._SelectCss.start.y === this._SelectCss.end.y;
let iViewer: IViewer = this._Viewer.GetIViewer([this._SelectCss.start, this._SelectCss.end]);
if (isLineSelect)
{
let selectLine = new SelectLine(iViewer, this._SelectCss.start, this._SelectCss.end);
selectLine.Select(undefined, this.Filter);
return selectLine;
}
let selectBox = new SelectBox(iViewer, this._SelectCss.start, this._SelectCss.end);
if (this._SelectType !== SelectType.None)
selectBox._SelectType = this._SelectType;

@ -1,20 +1,16 @@
import { Frustum, Matrix4, Object3D, OrthographicCamera, PerspectiveCamera, Vector2, Vector3 } from 'three';
import { PreViewer } from '../GraphicsSystem/PreViewer';
import { Viewer } from '../GraphicsSystem/Viewer';
import { SelectSetBase } from './SelectBase';
import { Matrix4, Object3D, OrthographicCamera, PerspectiveCamera, Vector2, Vector3 } from 'three';
import { doIntersect } from "../Geometry/DoIntersect";
import { IViewer } from '../GraphicsSystem/IView';
import { SelectSetBase } from './SelectBase';
export class SelectLine extends SelectSetBase
{
private m_StartPt: Vector2;
private m_EndPt: Vector2;
_Frustum: Frustum = new Frustum();
constructor(view: Viewer | PreViewer, startP: Vector2, endP: Vector2)
constructor(view: IViewer,
private _StartPt: Vector2,
private _EndPt: Vector2,
)
{
super(view);
this.m_StartPt = startP;
this.m_EndPt = endP;
this._bIsPerCamera = view.Camera instanceof PerspectiveCamera;
let camera = this._Viewer.Camera;
@ -29,7 +25,7 @@ export class SelectLine extends SelectSetBase
IntersectLine(p1: Vector3, p2: Vector3): boolean
{
return doIntersect(p1, p2, this.m_StartPt, this.m_EndPt);
return doIntersect(p1, p2, this._StartPt, this._EndPt);
}
CheckSelect(obj: Object3D): boolean

Loading…
Cancel
Save