Browse Source

readonly select mouseMove cursor

master
修宁 7 months ago
parent
commit
61d066b4c9
  1. 2
      src/designer/Viewport.ts
  2. 8
      src/designer/metaComponents/IMetaProp.ts
  3. 3
      src/designer/metaComponents/NumberInput.vue
  4. 3
      src/designer/metaComponents/SwitchItem.vue
  5. 5
      src/designer/metaComponents/TextInput.vue
  6. 3
      src/designer/metaComponents/UUIDItem.vue
  7. 25
      src/designer/model2DEditor/DragControls.js
  8. 4
      src/designer/model2DEditor/EsDragControls.ts
  9. 2
      src/designer/model2DEditor/tools/SelectInspect.ts
  10. 7
      src/model/itemType/ItemTypeDefine.ts

2
src/designer/Viewport.ts

@ -289,7 +289,7 @@ export default class Viewport {
controlsNew.enableDamping = false controlsNew.enableDamping = false
controlsNew.enableZoom = true controlsNew.enableZoom = true
controlsNew.enableRotate = false controlsNew.enableRotate = false
controlsNew.mouseButtons = { LEFT: THREE.MOUSE.PAN } // 鼠标中键平移 controlsNew.mouseButtons = { LEFT: THREE.MOUSE.PAN, RIGHT: THREE.MOUSE.PAN } // 鼠标中键平移
controlsNew.screenSpacePanning = false // 定义平移时如何平移相机的位置 控制不上下移动 controlsNew.screenSpacePanning = false // 定义平移时如何平移相机的位置 控制不上下移动
controlsNew.listenToKeyEvents(viewerDom) // 监听键盘事件 controlsNew.listenToKeyEvents(viewerDom) // 监听键盘事件
controlsNew.keys = { LEFT: 'KeyA', UP: 'KeyW', RIGHT: 'KeyD', BOTTOM: 'KeyS' } controlsNew.keys = { LEFT: 'KeyA', UP: 'KeyW', RIGHT: 'KeyD', BOTTOM: 'KeyS' }

8
src/designer/metaComponents/IMetaProp.ts

@ -17,6 +17,14 @@ export default defineComponent({
this.refreshValue() this.refreshValue()
} }
}) })
this.$nextTick(() => {
//@ts-ignore
if (typeof this.refreshValue === 'function') {
//@ts-ignore
this.refreshValue()
}
})
}, },
computed: { computed: {
object3D(): THREE.Object3D { object3D(): THREE.Object3D {

3
src/designer/metaComponents/NumberInput.vue

@ -5,7 +5,8 @@
{{ prop.label }} {{ prop.label }}
</div> </div>
</template> </template>
<el-input v-model="value" class="prop-editor" type="number" clearable size="small" /> <el-input v-model="value" class="prop-editor" type="number" clearable size="small"
:readonly="prop.readonly" />
</el-form-item> </el-form-item>
</template> </template>
<script> <script>

3
src/designer/metaComponents/SwitchItem.vue

@ -5,7 +5,8 @@
{{ prop.label }} {{ prop.label }}
</div> </div>
</template> </template>
<el-switch v-model="value" class="prop-editor" clearable size="small" /> <el-switch v-model="value" class="prop-editor" clearable size="small"
:readonly="prop.readonly" />
</el-form-item> </el-form-item>
</template> </template>
<script> <script>

5
src/designer/metaComponents/TextInput.vue

@ -1,11 +1,12 @@
<template> <template>
<el-form-item :label-width="prop.labelWidth"> <el-form-item :label-width="prop.labelWidth">
<template #label> <template #label>
<div :title="prop.label + ' - ' + prop.field" > <div :title="prop.label + ' - ' + prop.field">
{{ prop.label }} {{ prop.label }}
</div> </div>
</template> </template>
<el-input v-model="value" class="prop-editor" type="text" clearable size="small" /> <el-input v-model="value" class="prop-editor" type="text" clearable size="small"
:readonly="prop.readonly" />
</el-form-item> </el-form-item>
</template> </template>
<script> <script>

3
src/designer/metaComponents/UUIDItem.vue

@ -5,7 +5,8 @@
{{ prop.label }} {{ prop.label }}
</div> </div>
</template> </template>
<el-input v-model="value" class="prop-editor" type="text" clearable size="small" /> <el-input v-model="value" class="prop-editor" type="text" clearable size="small"
:readonly="prop.readonly" />
</el-form-item> </el-form-item>
</template> </template>
<script> <script>

25
src/designer/model2DEditor/DragControls.js

@ -30,7 +30,7 @@ class DragControls extends EventDispatcher {
// //
let isMove = false let isMove = false
let isMouseDownClicked = false
const scope = this const scope = this
function activate() { function activate() {
@ -66,33 +66,27 @@ class DragControls extends EventDispatcher {
} }
function onPointerMove(event) { function onPointerMove(event) {
if (!scope.enabled || !scope.enabledMove) return if (!scope.enabled || !scope.enabledMove) return
isMove = true if (isMouseDownClicked) {
_domElement.style.cursor = 'move'
}
isMove = true
updatePointer(event) updatePointer(event)
_raycaster.setFromCamera(_pointer, _camera) _raycaster.setFromCamera(_pointer, _camera)
if (_selected) { if (_selected) {
if (_raycaster.ray.intersectPlane(_plane, _intersection)) { if (_raycaster.ray.intersectPlane(_plane, _intersection)) {
const pos = _intersection.sub(_offset).applyMatrix4(_inverseMatrix) const pos = _intersection.sub(_offset).applyMatrix4(_inverseMatrix)
const newIntersection = calcPositionUseSnap(event, pos) const newIntersection = calcPositionUseSnap(event, pos)
_selected.position.copy(newIntersection) _selected.position.copy(newIntersection)
} }
scope.dispatchEvent({ type: 'drag', object: _selected }) scope.dispatchEvent({ type: 'drag', object: _selected })
return return
} }
// hover support // hover support
if (event.pointerType === 'mouse' || event.pointerType === 'pen') { if (event.pointerType === 'mouse' || event.pointerType === 'pen') {
_intersections.length = 0 _intersections.length = 0
@ -127,12 +121,9 @@ class DragControls extends EventDispatcher {
} else { } else {
if (_hovered !== null) { if (_hovered !== null) {
scope.dispatchEvent({ type: 'hoveroff', object: _hovered }) scope.dispatchEvent({ type: 'hoveroff', object: _hovered })
_domElement.style.cursor = 'auto' _domElement.style.cursor = 'auto'
_hovered = null _hovered = null
} }
} }
@ -163,7 +154,10 @@ class DragControls extends EventDispatcher {
_offset.copy(_intersection).sub(_worldPosition.setFromMatrixPosition(_selected.matrixWorld)) _offset.copy(_intersection).sub(_worldPosition.setFromMatrixPosition(_selected.matrixWorld))
} }
_domElement.style.cursor = 'move' // setTimeout(() => {
// _domElement.style.cursor = 'move'
// }, 20)
isMouseDownClicked = true
} }
scope.dispatchEvent({ type: 'dragstart', object: _selected, e: event }) scope.dispatchEvent({ type: 'dragstart', object: _selected, e: event })
} }
@ -183,6 +177,7 @@ class DragControls extends EventDispatcher {
} }
_domElement.style.cursor = _hovered ? 'pointer' : 'auto' _domElement.style.cursor = _hovered ? 'pointer' : 'auto'
isMouseDownClicked = false
} }
function updatePointer(event) { function updatePointer(event) {

4
src/designer/model2DEditor/EsDragControls.ts

@ -121,6 +121,10 @@ export default class EsDragControls {
} }
if (e.object.userData.selectable) { if (e.object.userData.selectable) {
this.viewport.state.selectedObject = markRaw(e.object) this.viewport.state.selectedObject = markRaw(e.object)
EventBus.$emit('objectChanged', {
viewport: this,
object: e.object
})
} }
} }

2
src/designer/model2DEditor/tools/SelectInspect.ts

@ -25,7 +25,7 @@ export default class SelectInspect implements ITool {
*/ */
rectMaterial: THREE.MeshBasicMaterial = new THREE.MeshBasicMaterial({ rectMaterial: THREE.MeshBasicMaterial = new THREE.MeshBasicMaterial({
color: 0x000000, color: 0x000000,
opacity: 0.5, opacity: 0.3,
transparent: true transparent: true
}) })

7
src/model/itemType/ItemTypeDefine.ts

@ -33,8 +33,9 @@ export function getAllItemTypes(): ItemTypeDefineOption[] {
* "点" * "点"
*/ */
export const BASIC_META_OF_POINT: ItemTypeMeta = [ export const BASIC_META_OF_POINT: ItemTypeMeta = [
{ field: 'uuid', editor: 'UUID', label: 'uuid' }, { field: 'uuid', editor: 'UUID', label: 'uuid', readonly: true },
{ field: 'name', editor: 'TextInput', label: '名称'}, { field: 'name', editor: 'TextInput', label: '名称' },
{ field: 'userData.label', editor: 'TextInput', label: '标签' },
{ editor: 'Transform' }, { editor: 'Transform' },
{ field: 'color', editor: 'Color', label: '颜色' }, { field: 'color', editor: 'Color', label: '颜色' },
{ editor: '-' }, { editor: '-' },
@ -97,6 +98,8 @@ export type ItemTypeMeta = ItemTypeMetaItem[]
export type ItemTypeMetaItem = { export type ItemTypeMetaItem = {
field?: string field?: string
label?: string label?: string
labelWidth?: number
readonly?: boolean
editor: '-' | editor: '-' |
'TextInput' | 'Number' | 'Switch' | 'Select' | 'ButtonGroup' | 'TextInput' | 'Number' | 'Switch' | 'Select' | 'ButtonGroup' |
'UUID' | 'Color' | 'Transform' | 'IN_OUT_CENTER' 'UUID' | 'Color' | 'Transform' | 'IN_OUT_CENTER'

Loading…
Cancel
Save