|
|
@ -2,13 +2,20 @@ import { SelectSetBase, SelectType } from './SelectSet';
|
|
|
|
import * as THREE from 'three';
|
|
|
|
import * as THREE from 'three';
|
|
|
|
import { Viewer } from '../GraphicsSystem/Viewer';
|
|
|
|
import { Viewer } from '../GraphicsSystem/Viewer';
|
|
|
|
import * as verb from 'verb-nurbs-web';
|
|
|
|
import * as verb from 'verb-nurbs-web';
|
|
|
|
//矩形选区
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 矩形选区
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @export
|
|
|
|
|
|
|
|
* @class SelectBox
|
|
|
|
|
|
|
|
* @extends {SelectSetBase}
|
|
|
|
|
|
|
|
*/
|
|
|
|
export class SelectBox extends SelectSetBase
|
|
|
|
export class SelectBox extends SelectSetBase
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
m_SelectBox: THREE.Box2 = new THREE.Box2();
|
|
|
|
private m_SelectBox: THREE.Box2 = new THREE.Box2();
|
|
|
|
m_RectLines = new Array<verb.core.PolylineData>();
|
|
|
|
private m_RectLines = new Array<verb.core.PolylineData>();
|
|
|
|
m_Frustom: THREE.Frustum = new THREE.Frustum();
|
|
|
|
private m_Frustom: THREE.Frustum = new THREE.Frustum();
|
|
|
|
|
|
|
|
|
|
|
|
constructor(view: Viewer, p1: THREE.Vector2, p2: THREE.Vector2)
|
|
|
|
constructor(view: Viewer, p1: THREE.Vector2, p2: THREE.Vector2)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -48,23 +55,6 @@ export class SelectBox extends SelectSetBase
|
|
|
|
camera.clearViewOffset();
|
|
|
|
camera.clearViewOffset();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
IntersectLine(p1: THREE.Vector3, p2: THREE.Vector3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let line = new verb.core.PolylineData([[p1.x, p1.y, 0], [p2.x, p2.y, 0]], [0, 1]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (let l of this.m_RectLines)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let ins = verb.eval.Intersect.polylines(l, line, 1e-8)
|
|
|
|
|
|
|
|
if (ins.length > 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Select()
|
|
|
|
Select()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// let camera = this.m_Viewer.m_Camera.m_CurCamera;
|
|
|
|
// let camera = this.m_Viewer.m_Camera.m_CurCamera;
|
|
|
@ -92,7 +82,20 @@ export class SelectBox extends SelectSetBase
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
IntersectLine(p1: THREE.Vector3, p2: THREE.Vector3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let line = new verb.core.PolylineData([[p1.x, p1.y, 0], [p2.x, p2.y, 0]], [0, 1]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (let l of this.m_RectLines)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let ins = verb.eval.Intersect.polylines(l, line, 1e-8)
|
|
|
|
|
|
|
|
if (ins.length > 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
IntersectObject(obj: THREE.Object3D): Boolean
|
|
|
|
IntersectObject(obj: THREE.Object3D): Boolean
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let geo = this.GetGeometry(obj);
|
|
|
|
let geo = this.GetGeometry(obj);
|
|
|
|