Sfoglia il codice sorgente

Fix update-version for windows, add camera options in viewer options.

master
Palash Bansal 2 anni fa
parent
commit
85a1882288
Nessun account collegato all'indirizzo email del committer

+ 1
- 1
.eslintrc.cjs Vedi File

@@ -39,7 +39,7 @@ module.exports = {
'comma-dangle': ['error', 'always-multiline'],
'indent': ['error', 4],
'quotes': ['error', 'single'],
'linebreak-style': ['error', 'unix'],
// 'linebreak-style': ['error', 'unix'],
'no-loss-of-precision': 'error',
},
'overrides': [

+ 1
- 1
package.json Vedi File

@@ -19,7 +19,7 @@
"docs": "npx typedoc && markdown-to-html",
"build-plugins": "node scripts/build-plugins.mjs",
"prepare": "npm run build && npm run build-plugins && npm run build-examples",
"update-version": "echo \"export const VERSION = '$npm_package_version'\" > src/viewer/version.ts"
"update-version": "node scripts/update-version.mjs"
},
"clean-package": {
"remove": [

+ 7
- 0
scripts/update-version.mjs Vedi File

@@ -0,0 +1,7 @@
// (echo export const VERSION = '$npm_package_version') > src/viewer/version.ts

// in nodejs

import {writeFileSync} from "node:fs"

writeFileSync("src/viewer/version.ts", `export const VERSION = '${process.env.npm_package_version}'\n`)

+ 1
- 0
src/assetmanager/AssetManager.ts Vedi File

@@ -206,6 +206,7 @@ export class AssetManager extends EventDispatcher<BaseEvent&{data: ImportResult}
// materials: IMaterial[] = []
// textures: ITexture[] = []

// todo move this function to viewer
async loadImported<T extends ValOrArr<ImportResult|undefined> = ImportResult>(imported: T, {autoSetEnvironment = true, autoSetBackground = false, ...options}: AddAssetOptions = {}): Promise<T | never[]> {
const arr: (ImportResult|undefined)[] = Array.isArray(imported) ? imported : [imported]
let ret: T = Array.isArray(imported) ? [] : undefined as any

+ 17
- 8
src/viewer/ThreeViewer.ts Vedi File

@@ -19,7 +19,7 @@ import {
IObjectProcessor,
ITexture,
PerspectiveCamera2,
RootScene,
RootScene, TCameraControlsMode,
} from '../core'
import {ViewerRenderManager} from './ViewerRenderManager'
import {
@@ -52,6 +52,7 @@ import {IViewerPlugin, IViewerPluginSync} from './IViewerPlugin'
import {DropzonePlugin, DropzonePluginOptions} from '../plugins/interaction/DropzonePlugin'
import {uiConfig, uiFolderContainer, UiObjectConfig} from 'uiconfig.js'
import {IRenderTarget} from '../rendering'
import type {ProgressivePlugin} from '../plugins'
import {TonemapPlugin} from '../plugins'
import {VERSION} from './version'

@@ -120,6 +121,13 @@ export interface ThreeViewerOptions {
*/
tonemap?: boolean

camera?: {
controlsMode?: TCameraControlsMode,
position?: Vector3,
target?: Vector3,

}

/**
* Options for the asset manager.
*/
@@ -260,20 +268,21 @@ export class ThreeViewer extends EventDispatcher<IViewerEvent, IViewerEventTypes

// camera

const camera = new PerspectiveCamera2('orbit', this._canvas)
const camera = new PerspectiveCamera2(options.camera?.controlsMode ?? 'orbit', this._canvas)
camera.name = 'Default Camera'
camera.position.set(0, 0, 5)
options.camera?.position ? camera.position.copy(options.camera.position) : camera.position.set(0, 0, 5)
options.camera?.target ? camera.target.copy(options.camera.target) : camera.target.set(0, 0, 0)
camera.setDirty()
camera.userData.autoLookAtTarget = true // only for when controls are disabled / not available

// Update camera controls postFrame if allowed to interact
this.addEventListener('postFrame', () => { // todo: move inside RootScene.
const cam = this._scene.mainCamera
if (cam && cam.canUserInteract) {
// todo
// const d = this.getPluginByType<ProgressivePlugin>('Progressive')?.postFrameConvergedRecordingDelta()
// // if (d && d > 0) delta = d
// if (d !== undefined && d === 0) return // not converged yet.
// // if d < 0 or undefined: not recording, do nothing
const d = this.getPlugin<ProgressivePlugin>('Progressive')?.postFrameConvergedRecordingDelta()
// if (d && d > 0) delta = d
if (d !== undefined && d === 0) return // not converged yet.
// if d < 0 or undefined: not recording, do nothing

cam.controls?.update()
}

Loading…
Annulla
Salva