|
@@ -43,21 +43,23 @@ var SiteModel = {
|
|
|
|
|
|
this.history = new History({
|
|
|
applyData: (data)=>{
|
|
|
- if(data.entity.parent && data.entity.visible){
|
|
|
+ if(data.entity.parent && data.entity.selected ){
|
|
|
data = Potree.Common.CloneObject(data) //避免使用后更改数据又被使用
|
|
|
data.entity.reDraw()
|
|
|
data.entity.initData(data)
|
|
|
- data.entity.addMidMarkers()
|
|
|
+ data.isNew || data.entity.addMidMarkers()
|
|
|
+ data.entity.isNew = data.isNew
|
|
|
data.entity.dispatchEvent('changeByHistory')
|
|
|
return true
|
|
|
}
|
|
|
},
|
|
|
getData:(entity)=>{
|
|
|
- if(entity.isNew)return
|
|
|
+ //if(entity.isNew)return
|
|
|
return {
|
|
|
entity,
|
|
|
points: entity.points.map(e=>e.clone()),
|
|
|
- ifDraw: true
|
|
|
+ ifDraw: true,
|
|
|
+ isNew : entity.isNew,
|
|
|
}
|
|
|
}
|
|
|
})
|
|
@@ -322,7 +324,7 @@ var SiteModel = {
|
|
|
|
|
|
|
|
|
startInsertion:function(buildType, parent, sid, name, callback, cancelFun){
|
|
|
-
|
|
|
+
|
|
|
let zMin, zMax, entity, resume
|
|
|
let mapViewport = viewer.mapViewer.viewports[0]
|
|
|
|
|
@@ -335,7 +337,7 @@ var SiteModel = {
|
|
|
entity.reDraw(0)
|
|
|
entity.isNew = true //当作新的来画
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(!resume){
|
|
|
if(buildType == 'hole' || buildType == 'room'){
|
|
|
zMin = parent.zMin
|
|
@@ -388,9 +390,10 @@ var SiteModel = {
|
|
|
|
|
|
|
|
|
let endDragFun = (e) => {
|
|
|
- if (e.button == THREE.MOUSE.LEFT ) {
|
|
|
+ if (e.button == THREE.MOUSE.LEFT ) {
|
|
|
+ this.history.beforeChange(entity)
|
|
|
var marker = entity.addMarker({point:entity.points[entity.points.length - 1].clone()})
|
|
|
-
|
|
|
+ this.history.afterChange(entity)
|
|
|
//entity.editStateChange(true) //重新激活reticule状态
|
|
|
entity.continueDrag(marker, e)
|
|
|
} else if (e.button === THREE.MOUSE.RIGHT ) {
|
|
@@ -465,8 +468,7 @@ var SiteModel = {
|
|
|
};
|
|
|
|
|
|
|
|
|
- let Exit = (e)=>{ //强制结束
|
|
|
-
|
|
|
+ let Exit = (e)=>{ //强制结束
|
|
|
entity.removeEventListener('unselect', Exit);
|
|
|
|
|
|
if(viewer.inputHandler.drag){//还未触发drop的话
|
|
@@ -476,8 +478,8 @@ var SiteModel = {
|
|
|
viewer: viewer,
|
|
|
pressDistance:0,
|
|
|
button : THREE.MOUSE.RIGHT
|
|
|
- });
|
|
|
- viewer.inputHandler.drag = null
|
|
|
+ });
|
|
|
+ viewer.inputHandler.drag.object.isDragging = false
|
|
|
}else{
|
|
|
end({remain:true})
|
|
|
}
|
|
@@ -487,8 +489,9 @@ var SiteModel = {
|
|
|
|
|
|
viewer.dispatchEvent( 'cancel_insertions' );//取消之前的
|
|
|
viewer.addEventListener('cancel_insertions', Exit);
|
|
|
- entity.addEventListener('unselect', Exit);
|
|
|
-
|
|
|
+ setTimeout(()=>{
|
|
|
+ entity.isNew && entity.addEventListener('unselect', Exit);
|
|
|
+ },1)//因为刚创建会unselect一下所以延迟
|
|
|
|
|
|
|
|
|
var marker = entity.addMarker({point:new THREE.Vector3(0, 0, 0)})
|
|
@@ -503,7 +506,23 @@ var SiteModel = {
|
|
|
marker.isDragging = true
|
|
|
viewer.inputHandler.startDragging(marker , {dragViewport:mapViewport, endDragFun, notPressMouse:true} ); //notPressMouse代表不是通过按下鼠标来拖拽. dragViewport指定了只能在地图上拖拽
|
|
|
viewer.dispatchEvent('startBuildEntity')
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ let changeByHistory = (e)=>{
|
|
|
+ if(!entity.isNew)return
|
|
|
+
|
|
|
+ let marker = entity.markers[entity.points.length-1]
|
|
|
+ viewer.inputHandler.startDragging(marker , {dragViewport:mapViewport, endDragFun, notPressMouse:true} );
|
|
|
+
|
|
|
+ var I = viewer.inputHandler.intersect && (viewer.inputHandler.intersect.orthoIntersect || viewer.inputHandler.intersect.location)
|
|
|
+ if(I){
|
|
|
+ entity.dragChange(I.clone(), entity.points.length-1 ) //使最后一个点在鼠标处
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ entity.addEventListener('changeByHistory',changeByHistory)
|
|
|
+
|
|
|
return entity;
|
|
|
|
|
|
|