新增场景释放机制和Dispose方法
This commit is contained in:
@@ -8,7 +8,7 @@ import { materialRenderer } from "../common/MaterialRenderer";
|
||||
import { MaterialOut } from "../common/MaterialSerializer";
|
||||
|
||||
export const useScene = defineStore('scene', () => {
|
||||
let _editor: MaterialEditor;
|
||||
let _editor: MaterialEditor | undefined;
|
||||
const _currGeometry = ref<string>('球');
|
||||
const _currTexture = ref<Texture>();
|
||||
const CurrGeometry = computed({
|
||||
@@ -24,7 +24,7 @@ export const useScene = defineStore('scene', () => {
|
||||
console.warn("SceneStore has already been initialized");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 为Material配置一个ObjectId,否则其无法被序列化
|
||||
Material.value.objectId = new ObjectId(undefined, undefined);
|
||||
|
||||
@@ -37,11 +37,22 @@ export const useScene = defineStore('scene', () => {
|
||||
|
||||
const view = _editor.Viewer;
|
||||
window.onresize = () => {
|
||||
view.OnSize(canvas.clientWidth, canvas.clientHeight);
|
||||
view.SetSize(canvas.clientWidth, canvas.clientHeight);
|
||||
view.UpdateRender();
|
||||
}
|
||||
}
|
||||
|
||||
function Dispose() {
|
||||
console.log("Disposing...");
|
||||
Material.value.GoodBye();
|
||||
_editor?.Dispose();
|
||||
_editor = undefined;
|
||||
window.onresize = undefined;
|
||||
|
||||
// 释放Singleton
|
||||
MaterialEditor.ReleaseInstance();
|
||||
}
|
||||
|
||||
function ChangeGeometry(geoName: string) {
|
||||
_currGeometry.value = geoName;
|
||||
let geo = _editor.Geometrys.get(_currGeometry.value);
|
||||
@@ -121,7 +132,8 @@ export const useScene = defineStore('scene', () => {
|
||||
ChangeTextureAsync,
|
||||
UpdateTexture,
|
||||
SerializeMaterialAsync,
|
||||
GenerateMaterialLogoAsync
|
||||
GenerateMaterialLogoAsync,
|
||||
Dispose
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user