Bladeren bron

Minor fixes

master
Palash Bansal 1 jaar geleden
bovenliggende
commit
b5426fd767
No account linked to committer's email address

+ 1
- 1
src/assetmanager/MaterialManager.ts Bestand weergeven

@@ -120,7 +120,7 @@ export class MaterialManager<T = ''> extends EventDispatcher<BaseEvent, T> {
.forEach(map=>
!map.isRenderTargetTexture && map.userData.disposeOnIdle !== false &&
map.dispose && !isInScene(map) && map.dispose())
this.unregisterMaterial(mat) // todo, re-add when material is added again to the scene.
// this.unregisterMaterial(mat) // not unregistering on dispose, that has to be done explicitly. todo: make an easy way to do that.
}

private _materialMaps = new Map<string, Set<ITexture>>()

+ 6
- 1
src/rendering/RenderManager.ts Bestand weergeven

@@ -607,6 +607,7 @@ export class RenderManager<TEvent extends BaseEvent = IRenderManagerEvent, TEven

protected _createTargetClass(clazz: Class<WebGLRenderTarget>, size: number[], options: WebGLRenderTargetOptions): IRenderTarget {
const processNewTarget = this._processNewTarget
const disposeTarget = this.disposeTarget.bind(this)
return new class RenderTarget extends clazz implements IRenderTarget {
isTemporary?: boolean
sizeMultiplier?: number
@@ -666,7 +667,11 @@ export class RenderManager<TEvent extends BaseEvent = IRenderManagerEvent, TEven
super.copy(source as any)
return this
}

// Note - by default unregister need to be false.
dispose(unregister = false) {
if (unregister === true) disposeTarget(this, true)
else super.dispose()
}
}(this, ...size, options)
}


+ 10
- 3
src/rendering/RenderTargetManager.ts Bestand weergeven

@@ -86,11 +86,18 @@ export abstract class RenderTargetManager<E extends BaseEvent = BaseEvent, ET ex
return target
}

disposeTarget(target: IRenderTarget): void {
/**
* Dispose and remove tracked target. Release target in-case of temporary target.
* To just dispose from the GPU memory and keep reference, call `target.dispose()` or `target.dispose(false)`
* @param target
* @param remove
*/
disposeTarget(target: IRenderTarget, remove = true): void {
if (!target) return
if (target.isTemporary) return this.releaseTempTarget(target)
this.removeTrackedTarget(target)
target.dispose()
if (remove) this.removeTrackedTarget(target)
// @ts-expect-error internal, not in types
target.dispose(false) // false is not required but still passing so that it doesnt cause infinite loop in future.
}

getTempTarget<T extends IRenderTarget = IRenderTarget>(op: CreateRenderTargetOptions = {}): T {

+ 1
- 1
src/viewer/ThreeViewer.ts Bestand weergeven

@@ -588,7 +588,7 @@ export class ThreeViewer extends EventDispatcher<IViewerEvent, IViewerEventTypes
;(window as any).threeViewers?.splice((window as any).threeViewers.indexOf(this), 1)

if (this.resizeObserver) this.resizeObserver.unobserve(this._canvas)
else window.removeEventListener('resize', this.resize)
window.removeEventListener('resize', this.resize)

this.dispatchEvent({type: 'dispose'})
}

Laden…
Annuleren
Opslaan