Skip to content

Commit

Permalink
fix(component): fix component life cycle
Browse files Browse the repository at this point in the history
fix component life cycle
  • Loading branch information
ZenderJK committed Sep 2, 2023
1 parent 80bfd2b commit b273ab4
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 15 deletions.
67 changes: 67 additions & 0 deletions samples/base/Sample_ComponentLife.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import { Engine3D, Scene3D, CameraUtil, View3D, AtmosphericComponent, ComponentBase, Time, AxisObject, Object3DUtil, KelvinUtil, DirectLight, Object3D, HoverCameraController } from "@orillusion/core";
import { GUIHelp } from "@orillusion/debug/GUIHelp";
import { GUIUtil } from "@samples/utils/GUIUtil";

// sample use component
class Sample_ComponentLife {
async run() {
// init engine
await Engine3D.init();
// create new Scene
let scene = new Scene3D();
// add atmospheric sky
scene.addComponent(AtmosphericComponent);

// init camera3D
let mainCamera = CameraUtil.createCamera3D(null, scene);
mainCamera.perspective(60, Engine3D.aspect, 1, 2000.0);
let hoverCameraController = mainCamera.object3D.addComponent(HoverCameraController);
hoverCameraController.setCamera(15, -15, 10);

// create a view with target scene and camera
let view = new View3D();
view.scene = scene;
view.camera = mainCamera;

// start render
Engine3D.startRenderView(view);

// create cube
let cube = Object3DUtil.GetSingleCube(2, 4, 1, 0.7, 1, 0.5);
cube.name = 'cube'
scene.addChild(cube);

// register a component
let component = cube.addComponent(LifeComponent);
}
}


class LifeComponent extends ComponentBase {
public init(param?: any): void {
console.log('init');

}
public start(): void {
console.log('start');
}

public onBeforeUpdate(view?: View3D) {
console.log('onBeforeUpdate');
}

public onCompute(view?: View3D, command?: GPUCommandEncoder) {
console.log('onUpdate');
}

public onUpdate(): void {
console.log('onUpdate');
}

public onLateUpdate(view?: View3D) {
console.log('onLateUpdate');
}
}


new Sample_ComponentLife().run();
26 changes: 12 additions & 14 deletions src/Engine3D.ts
Original file line number Diff line number Diff line change
Expand Up @@ -427,9 +427,19 @@ export class Engine3D {
Time.delta = time - Time.time;
Time.time = time;
Time.frame += 1;
Interpolator.tick(Time.delta);

/* update all transform */
let views = this.views;
let i = 0;
for (i = 0; i < views.length; i++) {
const view = views[i];
view.scene.waitUpdate();
view.camera.resetPerspective(webGPUContext.aspect);
}

this.updateGUIPixelRatio(webGPUContext.canvas.clientWidth, webGPUContext.canvas.clientHeight);

Interpolator.tick(Time.delta);
if (this._beforeRender) this._beforeRender();

/****** auto start with component list *****/
Expand Down Expand Up @@ -460,11 +470,8 @@ export class Engine3D {
};
}
}
webGPUContext.device.queue.submit([command.finish()]);




webGPUContext.device.queue.submit([command.finish()]);

/****** auto update with component list *****/
for (const iterator of ComponentCollect.componentsUpdateList) {
Expand All @@ -483,15 +490,6 @@ export class Engine3D {
this._renderLoop();
}

/* update all transform */
let views = this.views;
let i = 0;
for (i = 0; i < views.length; i++) {
const view = views[i];
view.camera.resetPerspective(webGPUContext.aspect);
// view.scene.transform.updateChildTransform()
// view.scene.transform.localChange = true;
}
// console.log("useCount", Matrix4.useCount);
// let t = performance.now();
WasmMatrix.updateAllContinueTransform(0, Matrix4.useCount, 16);
Expand Down
1 change: 0 additions & 1 deletion src/gfx/renderJob/jobs/RendererJob.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,6 @@ export class RendererJob {
public renderFrame() {
let view = this._view;

this.view.scene.waitUpdate();

GlobalBindGroup.getLightEntries(view.scene).update(view);

Expand Down

0 comments on commit b273ab4

Please sign in to comment.