清理代码 采用注入的方式

pull/7/head
cx 7 years ago
parent 4eaa28b848
commit a4294b6021

@ -9,7 +9,6 @@ import { Editor } from '../Editor/Editor';
import { OBB } from '../Geometry/OBB/obb';
import { CoordinateSystem } from '../Geometry/CoordinateSystem';
import { CameraControls } from '../Editor/CameraControls';
import { SelectControls } from '../Editor/SelectControls';
export var app: ApplicationService
export var ed: Editor
export var db: Database
@ -33,7 +32,6 @@ export class ApplicationService
new DebugDatUi();
this.m_Editor = new Editor(this)
new SelectControls(this.m_Viewer, this.m_Editor);
app = this;
ed = this.m_Editor;
db = this.m_Database

@ -2,4 +2,6 @@ export enum InputState
{
None = 0,
Select = 1,
GetPoint = 2,
Entsel = 4,
}

@ -14,8 +14,8 @@ enum CameraControlsEnabled
Pan = 4,
}
//控制状态
enum State
//相机控制状态
enum CameraControlState
{
Null = 0, Pan = 1, Rotate = 2, Scale = 3
}
@ -26,25 +26,18 @@ export class CameraControls
{
m_domElement: HTMLElement;//HTMLDocument
m_window: Window;
//起始点击.
//起始点击
m_StartChickPoint: THREE.Vector3 = new THREE.Vector3();
m_EndChickPoint: THREE.Vector3 = new THREE.Vector3();
m_bKeyCtrlIsDown: boolean;
//状态
m_State: State = State.Null;
m_SelectIng: boolean = false;
m_State: CameraControlState = CameraControlState.Null;
m_Viewer: Viewer;
constructor(viewer: Viewer, domElement?: HTMLElement, docWindow?: Window)
{
this.m_Viewer = viewer;
this.m_domElement = domElement;
if (docWindow)
{
this.m_window = docWindow;
}
this.RegisterEvent();
}
@ -57,7 +50,6 @@ export class CameraControls
this.m_domElement.addEventListener("mouseup", this.onMouseUp, false)
window.addEventListener("keydown", this.onKeyDown, false);
window.addEventListener("keyup", this.onKeyUp, false);
this.m_domElement.addEventListener('wheel', this.onMouseWheel, false);
}
}
@ -72,28 +64,17 @@ export class CameraControls
{
case MouseKey.Left:
{
if (!this.m_SelectIng)
{
ed.m_SelectCss.SetStart(event.clientX, event.clientY)
ed.m_SelectCss.SetEnd(event.clientX, event.clientY)
ed.m_SelectCss.Show()
}
else
{
ed.m_SelectCss.Hide()
}
this.m_SelectIng = !this.m_SelectIng;
break;
}
case MouseKey.Middle:
{
if (this["Shift"])
{
this.m_State = State.Rotate;
this.m_State = CameraControlState.Rotate;
}
else
{
this.m_State = State.Pan;
this.m_State = CameraControlState.Pan;
}
break;
}
@ -106,46 +87,33 @@ export class CameraControls
onMouseUp = (event: MouseEvent) =>
{
event.preventDefault();
this.m_State = State.Null;
this.m_State = CameraControlState.Null;
}
onMouseMove = (event: MouseEvent) =>
{
event.preventDefault();
this.m_EndChickPoint.set(event.offsetX, event.offsetY, 0);
let wpt = this.m_EndChickPoint.clone();
this.m_Viewer.ScreenToWorld(wpt);
let plan = new PlaneExt(new THREE.Vector3(0, 0, 1));
let rs = new THREE.Vector3();
plan.intersectLine(new Line3(wpt, wpt.clone().sub(this.m_Viewer.m_Direction)), rs, true);
//Send
// UiManage.setMouseCoord(wpt);
if (this.m_SelectIng)
{
ed.m_SelectCss.SetEnd(event.clientX, event.clientY)
}
let changeVec: THREE.Vector3 = new THREE.Vector3();
changeVec.subVectors(this.m_EndChickPoint, this.m_StartChickPoint);
this.m_StartChickPoint.copy(this.m_EndChickPoint);
if (this["Shift"] && this.m_State == State.Rotate)
if (this["Shift"] && this.m_State == CameraControlState.Rotate)
{
this.m_Viewer.Rotate(changeVec);
}
switch (this.m_State)
{
case State.Pan:
case CameraControlState.Pan:
{
this.m_Viewer.Pan(changeVec);
break;
}
case State.Rotate:
case CameraControlState.Rotate:
{
break;
}
case State.Scale:
case CameraControlState.Scale:
{
break;
}

@ -0,0 +1,7 @@
//命令状态机.
export class CommandMachine
{
}

@ -13,8 +13,8 @@ import { SelectControls } from './SelectControls';
//TODO: 增加鼠标状态. 鼠标位置.
export class Editor
{
m_SelectCss: SelectMarquee
m_MouseCtrl: MouseControls
m_SelectCtrl: SelectControls
m_App: ApplicationService;
m_InputState: InputState
private m_SelectList: Array<Entity> = [];
@ -23,7 +23,7 @@ export class Editor
{
this.m_App = app;
this.m_MouseCtrl = new MouseControls(app.m_Viewer)
this.m_SelectCss = new SelectMarquee();
this.m_SelectCtrl = new SelectControls(null, this)
}
GetPoint(callback: (pt: THREE.Vector3) => any)
{
@ -56,27 +56,26 @@ export class Editor
}
SelectWindow(p1: THREE.Vector3, p2: THREE.Vector3): Array<Entity>
{
// this.RemoveAllSelect()
// let cs = new CoordinateSystem()
// cs.copyForm(app.m_Viewer.m_Camera.m_CurCamera.matrix)
// cs.m_Postion.copy(p1)
// cs.m_Postion.sub(app.m_Viewer.m_Direction.clone().multiplyScalar(1e8));
this.RemoveAllSelect()
let cs = new CoordinateSystem()
cs.copyForm(app.m_Viewer.m_Camera.m_CurCamera.matrix)
cs.m_Postion.copy(p1)
cs.m_Postion.sub(app.m_Viewer.m_Direction.clone().multiplyScalar(1e8));
// let sc = app.m_Viewer.m_ViewHeight / app.m_Viewer.m_HtmlElement.scrollHeight;
// let obb = new OBB(cs, new THREE.Vector3(this.m_SelectCss.width * sc, this.m_SelectCss.height * sc, 1e10))
// db.m_EntityCollection.forEach(o =>
// {
// let obb2 = o.getOBB()
// var xx = obb.intersectsOBB(obb2)
// if (xx.intersects)
// {
// o.setIsSelct(true)
// this.m_SelectList.push(o)
// }
// })
let sc = app.m_Viewer.m_ViewHeight / app.m_Viewer.m_HtmlElement.scrollHeight;
let obb = new OBB(cs, new THREE.Vector3(this.m_SelectCss.width * sc, this.m_SelectCss.height * sc, 1e10))
db.m_EntityCollection.forEach(o =>
{
let obb2 = o.getOBB()
var xx = obb.intersectsOBB(obb2)
if (xx.intersects)
{
o.setIsSelct(true)
this.m_SelectList.push(o)
}
})
this.UpdateScreen()
// this.UpdateScreen()
return [];
}
SelectAll(): Array<Entity>

@ -5,8 +5,9 @@ import { app } from '../ApplicationServices/Application';
export class MouseControls
{
m_View: Viewer
//当前鼠标的位置
//当前鼠标的位置 屏幕
m_CurMousePointVCS: Vector3 = new Vector3()
//世界坐标系
m_CurMousePointWCS: Vector3 = new Vector3()
constructor(view: Viewer)
{
@ -15,15 +16,15 @@ export class MouseControls
}
private RegisterEvent()
{
let el = this.m_View.m_HtmlElement;
let el = this.m_View.m_Render.domElement;
el.addEventListener("mousemove", (e) => { this.onMouseMove(e) }, false)
el.addEventListener("click", (e) => { this.onMouseClick(e) }, false)
el.addEventListener("mousedown", (e) => { this.onMouseDown(e) }, false)
}
onMouseMove = (e: MouseEvent) =>
{
this.updateWordPoint(e);
}
onMouseClick = (e: MouseEvent) =>
onMouseDown = (e: MouseEvent) =>
{
this.updateWordPoint(e);
}

@ -1,50 +1,48 @@
import { Editor } from './Editor';
import { Viewer } from '../GraphicsSystem/Viewer';
import { begin } from "xaop";
import { end, begin } from 'xaop';
import { SelectMarquee } from '../UI/JsPlugin/SelectMarquee';
import { MouseKey } from '../Common/KeyEnum';
export class SelectControls
{
m_Viewer: Viewer
m_SelectCss: SelectMarquee = new SelectMarquee()
m_Editor: Editor
m_SelectIng: boolean = false;
constructor(view: Viewer, ed: Editor)
{
this.m_Editor = ed;
this.m_Viewer = view;
this.RegisterEvent();
begin(ed.m_MouseCtrl, ed.m_MouseCtrl.onMouseMove, () =>
{
console.log("hello after");
});
}
RegisterEvent()
{
if (this.m_Viewer)
{
let el = this.m_Viewer.m_HtmlElement;
el.addEventListener("click", this.onMouseClick, false)
el.addEventListener("mousemove", this.onMouseMove, false)
}
let ed = this.m_Editor;
end(ed.m_MouseCtrl, ed.m_MouseCtrl.updateWordPoint, this.onMouseMove);
end(ed.m_MouseCtrl, ed.m_MouseCtrl.onMouseDown, this.onMouseDown);
}
onMouseClick = () =>
onMouseDown = (e: MouseEvent) =>
{
if (e.button === MouseKey.Left)
{
let mouseData = this.m_Editor.m_MouseCtrl;
this.m_SelectIng = !this.m_SelectIng;
if (!this.m_SelectIng)
if (this.m_SelectIng)
{
// ed.m_SelectCss.SetStart(event.clientX, event.clientY)
// ed.m_SelectCss.SetEnd(event.clientX, event.clientY)
// ed.m_SelectCss.Show()
let pt = mouseData.m_CurMousePointVCS;
this.m_SelectCss.SetStart(pt.x, pt.y)
this.m_SelectCss.SetEnd(pt.x, pt.y)
this.m_SelectCss.Show()
}
else
{
// ed.m_SelectCss.Hide()
this.m_SelectCss.Hide()
}
}
}
onMouseMove = () =>
{
// ed.m_SelectCss.SetEnd(event.clientX, event.clientY)
let mouseData = this.m_Editor.m_MouseCtrl;
let pt = mouseData.m_CurMousePointVCS;
this.m_SelectCss.SetEnd(pt.x, pt.y)
}
}

@ -1,5 +0,0 @@
declare namespace meld
{
export function on(obj, mathch, func);
}
Loading…
Cancel
Save