|
|
|
@ -26,35 +26,35 @@ export class Cursor
|
|
|
|
|
/**
|
|
|
|
|
* 方向框大小
|
|
|
|
|
*/
|
|
|
|
|
private m_SquareSize = 10;
|
|
|
|
|
private _SquareSize = 10;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 延伸线长度
|
|
|
|
|
*/
|
|
|
|
|
private m_LineLength = 1000;
|
|
|
|
|
private _LineLength = 1000;
|
|
|
|
|
private _3DLineLength = 100;
|
|
|
|
|
|
|
|
|
|
private m_SquareObject: Line;
|
|
|
|
|
private m_OutsideCrossLineObject: LineSegments;
|
|
|
|
|
private m_CrossLineObject: LineSegments;
|
|
|
|
|
private _SquareObject: Line;
|
|
|
|
|
private _OutsideCrossLineObject: LineSegments;
|
|
|
|
|
private _CrossLineObject: LineSegments;
|
|
|
|
|
private _threeDLine: Group = new Group();
|
|
|
|
|
private m_Mode: CursorMode;
|
|
|
|
|
private _Mode: CursorMode;
|
|
|
|
|
private _isTheeeDMode = false;
|
|
|
|
|
constructor()
|
|
|
|
|
{
|
|
|
|
|
//方形框
|
|
|
|
|
this.m_SquareObject = new Line(
|
|
|
|
|
this._SquareObject = new Line(
|
|
|
|
|
BufferGeometryUtils.CreateFromPts(this.SquarePts()),
|
|
|
|
|
ColorMaterial.GetLineMaterial(7));
|
|
|
|
|
|
|
|
|
|
//选择线 +
|
|
|
|
|
this.m_CrossLineObject = new LineSegments(
|
|
|
|
|
this._CrossLineObject = new LineSegments(
|
|
|
|
|
BufferGeometryUtils.CreateFromPts(this.CrossLinePts()),
|
|
|
|
|
ColorMaterial.GetLineMaterial(7)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//选择线 口
|
|
|
|
|
this.m_OutsideCrossLineObject = new LineSegments(
|
|
|
|
|
this._OutsideCrossLineObject = new LineSegments(
|
|
|
|
|
BufferGeometryUtils.CreateFromPts(this.OutsideLinePts()),
|
|
|
|
|
ColorMaterial.GetLineMaterial(7)
|
|
|
|
|
);
|
|
|
|
@ -72,17 +72,17 @@ export class Cursor
|
|
|
|
|
if (bool !== this._isTheeeDMode)
|
|
|
|
|
{
|
|
|
|
|
this._isTheeeDMode = bool;
|
|
|
|
|
if (this.m_Mode === CursorMode.None)
|
|
|
|
|
if (this._Mode === CursorMode.None)
|
|
|
|
|
this.UpdateCursor();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//设置光标模式
|
|
|
|
|
set Mode(mode: CursorMode)
|
|
|
|
|
{
|
|
|
|
|
if (mode === this.m_Mode)
|
|
|
|
|
if (mode === this._Mode)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
this.m_Mode = mode;
|
|
|
|
|
this._Mode = mode;
|
|
|
|
|
this.UpdateCursor();
|
|
|
|
|
}
|
|
|
|
|
UpdateCursor()
|
|
|
|
@ -90,22 +90,22 @@ export class Cursor
|
|
|
|
|
while (this.CursorObject.children.length > 0)
|
|
|
|
|
this.CursorObject.remove(this.CursorObject.children[0]);
|
|
|
|
|
|
|
|
|
|
switch (this.m_Mode)
|
|
|
|
|
switch (this._Mode)
|
|
|
|
|
{
|
|
|
|
|
case CursorMode.None:
|
|
|
|
|
if (this._isTheeeDMode)
|
|
|
|
|
this.CursorObject.add(this.m_SquareObject, this._threeDLine);
|
|
|
|
|
this.CursorObject.add(this._SquareObject, this._threeDLine);
|
|
|
|
|
else
|
|
|
|
|
this.CursorObject.add(...[this.m_SquareObject, this.m_OutsideCrossLineObject]);
|
|
|
|
|
this.CursorObject.add(...[this._SquareObject, this._OutsideCrossLineObject]);
|
|
|
|
|
break;
|
|
|
|
|
case CursorMode.GetEntity:
|
|
|
|
|
this.CursorObject.add(this.m_SquareObject);
|
|
|
|
|
this.CursorObject.add(this._SquareObject);
|
|
|
|
|
break;
|
|
|
|
|
case CursorMode.GetPoint:
|
|
|
|
|
if (this._isTheeeDMode)
|
|
|
|
|
this.CursorObject.add(this._threeDLine);
|
|
|
|
|
else
|
|
|
|
|
this.CursorObject.add(this.m_CrossLineObject);
|
|
|
|
|
this.CursorObject.add(this._CrossLineObject);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -129,22 +129,22 @@ export class Cursor
|
|
|
|
|
*/
|
|
|
|
|
set SquareSize(size: number)
|
|
|
|
|
{
|
|
|
|
|
this.m_SquareSize = size;
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this.m_SquareObject.geometry as BufferGeometry, this.SquarePts());
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this.m_OutsideCrossLineObject.geometry as BufferGeometry, this.OutsideLinePts());
|
|
|
|
|
this._SquareSize = size;
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this._SquareObject.geometry as BufferGeometry, this.SquarePts());
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this._OutsideCrossLineObject.geometry as BufferGeometry, this.OutsideLinePts());
|
|
|
|
|
|
|
|
|
|
this.UpdateEvent();
|
|
|
|
|
}
|
|
|
|
|
get SquareSize()
|
|
|
|
|
{
|
|
|
|
|
return this.m_SquareSize;
|
|
|
|
|
return this._SquareSize;
|
|
|
|
|
}
|
|
|
|
|
//设置选择线的长度
|
|
|
|
|
set CrossLineLength(length: number)
|
|
|
|
|
{
|
|
|
|
|
this.m_LineLength = length;
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this.m_OutsideCrossLineObject.geometry as BufferGeometry, this.OutsideLinePts());
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this.m_CrossLineObject.geometry as BufferGeometry, this.CrossLinePts());
|
|
|
|
|
this._LineLength = length;
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this._OutsideCrossLineObject.geometry as BufferGeometry, this.OutsideLinePts());
|
|
|
|
|
BufferGeometryUtils.UpdatePts(this._CrossLineObject.geometry as BufferGeometry, this.CrossLinePts());
|
|
|
|
|
|
|
|
|
|
this.UpdateEvent();
|
|
|
|
|
}
|
|
|
|
@ -169,17 +169,17 @@ export class Cursor
|
|
|
|
|
//方形点表
|
|
|
|
|
private SquarePts()
|
|
|
|
|
{
|
|
|
|
|
return PointShapeUtils.SquarePts(this.m_SquareSize);
|
|
|
|
|
return PointShapeUtils.SquarePts(this._SquareSize);
|
|
|
|
|
}
|
|
|
|
|
//方形外圈十字直线点表
|
|
|
|
|
private OutsideLinePts()
|
|
|
|
|
{
|
|
|
|
|
return PointShapeUtils.OutsideLinePts(this.m_SquareSize, this.m_LineLength);
|
|
|
|
|
return PointShapeUtils.OutsideLinePts(this._SquareSize, this._LineLength);
|
|
|
|
|
}
|
|
|
|
|
//十字直线点表
|
|
|
|
|
private CrossLinePts()
|
|
|
|
|
{
|
|
|
|
|
return PointShapeUtils.CrossLinePts(this.m_LineLength);
|
|
|
|
|
return PointShapeUtils.CrossLinePts(this._LineLength);
|
|
|
|
|
}
|
|
|
|
|
private CreateCross3DLine()
|
|
|
|
|
{
|
|
|
|
|