Skip to content

Commit

Permalink
Added error handling to Canvas when calling theedengine
Browse files Browse the repository at this point in the history
  • Loading branch information
enicolasgomez committed Feb 2, 2024
1 parent 9e40ad1 commit b5b6581
Showing 1 changed file with 26 additions and 3 deletions.
29 changes: 26 additions & 3 deletions geppetto.js/geppetto-ui/src/3d-canvas/Canvas.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ class Canvas extends Component {
super(props);
this.sceneRef = React.createRef();
this.cameraControls = React.createRef();
this.state = { isCanvasReady: false }
this.state = {
isCanvasReady: false,
error: null
}
this.constructorFromProps(props);
this.onResize = this.onResize.bind(this);
this.defaultCameraControlsHandler = this.defaultCameraControlsHandler.bind(this);
Expand Down Expand Up @@ -77,7 +80,9 @@ class Canvas extends Component {
dracoDecoderPath
);
onUpdateStart();
await this.threeDEngine.updateInstances(data);

await this.handleEngineUpdate(data);

this.threeDEngine.updateExternalThreeDObjects(threeDObjects)
this.threeDEngine.updateCamera(cameraOptions);
onUpdateEnd()
Expand All @@ -93,6 +98,16 @@ class Canvas extends Component {

}

async handleEngineUpdate(data) {
try {
const updateResult = await this.threeDEngine.updateInstances(data);
return updateResult;
} catch (error) {
console.log(error);
this.setState({ error: error });
}
}

shouldComponentUpdate (nextProps, nextState, nextContext) {
return nextState.isCanvasReady || this.isResizeRequired() || nextProps !== this.props
}
Expand Down Expand Up @@ -142,7 +157,7 @@ class Canvas extends Component {
this.threeDEngine.setBackgroundColor(backgroundColor);
}
if (hasDifferentProxyInstances(data, prevData)) {
await this.threeDEngine.updateInstances(data)
await this.handleEngineUpdate(data)
}
if (cameraOptions !== prevCameraOptions){
this.threeDEngine.updateCamera(cameraOptions);
Expand Down Expand Up @@ -332,6 +347,14 @@ class Canvas extends Component {
const { cameraControls } = cameraOptions
const cameraControlsHandler = cameraControls.cameraControlsHandler ? cameraControls.cameraControlsHandler : this.defaultCameraControlsHandler
let captureInstance = null
const { error } = this.state;
if (error) {
return (
<div className={classes.container}>
<p>Error: {error}</p>
</div>
);
}
if (captureOptions) {
const { captureControls } = captureOptions
const captureControlsHandler = captureControls && captureControls.captureControlsHandler ? captureControls.captureControlsHandler : this.defaultCaptureControlsHandler
Expand Down

0 comments on commit b5b6581

Please sign in to comment.