Преглед изворни кода

Add trackUndo param in PickingPlugin.setSelectedObject, add Delete Object to object ui, version bump

master
Palash Bansal пре 11 месеци
родитељ
комит
19ebf26e24
No account linked to committer's email address

+ 2
- 2
package-lock.json Прегледај датотеку

@@ -1,12 +1,12 @@
{
"name": "threepipe",
"version": "0.0.48",
"version": "0.0.49",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "threepipe",
"version": "0.0.48",
"version": "0.0.49",
"license": "Apache-2.0",
"dependencies": {
"@types/three": "https://github.com/repalash/three-ts-types/releases/download/v0.158.1004/package.tgz",

+ 1
- 1
package.json Прегледај датотеку

@@ -1,6 +1,6 @@
{
"name": "threepipe",
"version": "0.0.48",
"version": "0.0.49",
"description": "A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.",
"main": "dist/index.js",
"module": "dist/index.mjs",

+ 14
- 0
src/core/object/IObjectUi.ts Прегледај датотеку

@@ -189,6 +189,20 @@ export function makeIObject3DUiConfig(this: IObject3D, isMesh?:boolean): UiObjec
return this.pivotToBoundsCenter?.(true) // return value is the undo function
},
},
{
type: 'button',
label: 'Delete Object',
tags: ['context-menu'],
value: async()=>{
const res = await ThreeViewer.Dialog.confirm('Delete Object: Are you sure you want to delete this object?')
if (!res) return
const parent = this.parent
this.dispose(true)
return ()=>{ // undo
if (parent) parent.add(this)
}
},
},
{
type: 'folder',
label: 'Rotate model',

+ 4
- 4
src/plugins/interaction/PickingPlugin.ts Прегледај датотеку

@@ -86,13 +86,13 @@ export class PickingPlugin extends AViewerPluginSync<PickingPluginEventMap> {
return this._picker?.selectedObject as T || undefined
}

setSelectedObject(object: IObject3D|undefined, focusCamera = false) { // todo: listen to object disposed
setSelectedObject(object: IObject3D|undefined, focusCamera = false, trackUndo = true) { // todo: listen to object disposed
const disabled = this.isDisabled()
if (disabled && !object) return
if (!this._picker) return
const t = this.autoFocus
this.autoFocus = false
this._picker.selectedObject = object || null
this._picker.setSelected(object || null, trackUndo)
this.autoFocus = t
if (!disabled && object && (t || focusCamera)) this.focusObject(object)
}
@@ -203,7 +203,7 @@ export class PickingPlugin extends AViewerPluginSync<PickingPluginEventMap> {
s?.traverseAncestors((o) => {
if (o === this._viewer?.scene) inScene = true
})
if (!inScene) this.setSelectedObject(undefined)
if (!inScene) this.setSelectedObject(undefined, false, false)
}

protected _viewerListeners = {
@@ -219,7 +219,7 @@ export class PickingPlugin extends AViewerPluginSync<PickingPluginEventMap> {
private _onObjectSelectEvent: EventListener2<'select', ISceneEventMap, IScene> = (e)=>{
if (e.source === PickingPlugin.PluginType) return
if (e.object === undefined && e.value === undefined) console.error('e.object or e.value must be set for picking, can be null to unselect')
else this.setSelectedObject(e.object || e.value, this.autoFocus || e.focusCamera)
else this.setSelectedObject(e.object || e.value, this.autoFocus || e.focusCamera, true)
}

private _selectedObjectChanged: EventListener2<'selectedObjectChanged', ObjectPickerEventMap, ObjectPicker> = (e: any) => {

+ 4
- 4
src/three/utils/ObjectPicker.ts Прегледај датотеку

@@ -99,17 +99,17 @@ export class ObjectPicker extends EventDispatcher<ObjectPickerEventMap> {
}

set selectedObject(object) {
this._setSelected(object)
this.setSelected(object)
}

private _setSelected(object: IObject3D|null, record = true) {
setSelected(object: IObject3D|null, record = true) {
if (!this._selected.length && !object || this._selected.length === 1 && this._selected[0] === object) return
const current = [...this._selected]
this._selected = object ? Array.isArray(object) ? [...object] : [object] : []
this.dispatchEvent({type: 'selectedObjectChanged', object: this.selectedObject})
record && this.undoManager?.record({
undo: () => this._setSelected(current.length ? current[0] : null, false),
redo: () => this._setSelected(object, false),
undo: () => this.setSelected(current.length ? current[0] : null, false),
redo: () => this.setSelected(object, false),
})
}


+ 1
- 1
src/viewer/version.ts Прегледај датотеку

@@ -1 +1 @@
export const VERSION = '0.0.48'
export const VERSION = '0.0.49'

Loading…
Откажи
Сачувај