Skip to content

Commit aca19d2

Browse files
committed
fix MeshBuilder host type (incorrectly assumed Mesh for static creation methods)
1 parent 8c74f25 commit aca19d2

File tree

6 files changed

+123
-139
lines changed

6 files changed

+123
-139
lines changed

src/generatedCode.ts

+24-20
Original file line numberDiff line numberDiff line change
@@ -4085,23 +4085,24 @@ export class FiberTorusKnot implements HasPropsHandlers<FiberMeshProps> {
40854085
*
40864086
* This code has been generated
40874087
*/
4088-
export class FiberLineSystem implements HasPropsHandlers<FiberMeshProps> {
4089-
private propsHandlers: PropsHandler<FiberMeshProps>[];
4088+
export class FiberLineSystem implements HasPropsHandlers<FiberLinesMeshProps> {
4089+
private propsHandlers: PropsHandler<FiberLinesMeshProps>[];
40904090

40914091
constructor() {
40924092
this.propsHandlers = [
4093-
new FiberMeshPropsHandler()
4093+
new FiberLinesMeshPropsHandler()
4094+
, new FiberMeshPropsHandler()
40944095
, new FiberAbstractMeshPropsHandler()
40954096
, new FiberTransformNodePropsHandler()
40964097
, new FiberNodePropsHandler()
40974098
];
40984099
}
40994100

4100-
getPropsHandlers(): PropsHandler<FiberMeshProps>[] {
4101+
getPropsHandlers(): PropsHandler<FiberLinesMeshProps>[] {
41014102
return this.propsHandlers;
41024103
}
41034104

4104-
addPropsHandler(propHandler: PropsHandler<FiberMeshProps>): void {
4105+
addPropsHandler(propHandler: PropsHandler<FiberLinesMeshProps>): void {
41054106
this.propsHandlers.push(propHandler);
41064107
}
41074108

@@ -4175,23 +4176,24 @@ export class FiberLineSystem implements HasPropsHandlers<FiberMeshProps> {
41754176
*
41764177
* This code has been generated
41774178
*/
4178-
export class FiberLines implements HasPropsHandlers<FiberMeshProps> {
4179-
private propsHandlers: PropsHandler<FiberMeshProps>[];
4179+
export class FiberLines implements HasPropsHandlers<FiberLinesMeshProps> {
4180+
private propsHandlers: PropsHandler<FiberLinesMeshProps>[];
41804181

41814182
constructor() {
41824183
this.propsHandlers = [
4183-
new FiberMeshPropsHandler()
4184+
new FiberLinesMeshPropsHandler()
4185+
, new FiberMeshPropsHandler()
41844186
, new FiberAbstractMeshPropsHandler()
41854187
, new FiberTransformNodePropsHandler()
41864188
, new FiberNodePropsHandler()
41874189
];
41884190
}
41894191

4190-
getPropsHandlers(): PropsHandler<FiberMeshProps>[] {
4192+
getPropsHandlers(): PropsHandler<FiberLinesMeshProps>[] {
41914193
return this.propsHandlers;
41924194
}
41934195

4194-
addPropsHandler(propHandler: PropsHandler<FiberMeshProps>): void {
4196+
addPropsHandler(propHandler: PropsHandler<FiberLinesMeshProps>): void {
41954197
this.propsHandlers.push(propHandler);
41964198
}
41974199

@@ -4266,23 +4268,24 @@ export class FiberLines implements HasPropsHandlers<FiberMeshProps> {
42664268
*
42674269
* This code has been generated
42684270
*/
4269-
export class FiberDashedLines implements HasPropsHandlers<FiberMeshProps> {
4270-
private propsHandlers: PropsHandler<FiberMeshProps>[];
4271+
export class FiberDashedLines implements HasPropsHandlers<FiberLinesMeshProps> {
4272+
private propsHandlers: PropsHandler<FiberLinesMeshProps>[];
42714273

42724274
constructor() {
42734275
this.propsHandlers = [
4274-
new FiberMeshPropsHandler()
4276+
new FiberLinesMeshPropsHandler()
4277+
, new FiberMeshPropsHandler()
42754278
, new FiberAbstractMeshPropsHandler()
42764279
, new FiberTransformNodePropsHandler()
42774280
, new FiberNodePropsHandler()
42784281
];
42794282
}
42804283

4281-
getPropsHandlers(): PropsHandler<FiberMeshProps>[] {
4284+
getPropsHandlers(): PropsHandler<FiberLinesMeshProps>[] {
42824285
return this.propsHandlers;
42834286
}
42844287

4285-
addPropsHandler(propHandler: PropsHandler<FiberMeshProps>): void {
4288+
addPropsHandler(propHandler: PropsHandler<FiberLinesMeshProps>): void {
42864289
this.propsHandlers.push(propHandler);
42874290
}
42884291

@@ -5168,23 +5171,24 @@ export class FiberTiledGround implements HasPropsHandlers<FiberMeshProps> {
51685171
*
51695172
* This code has been generated
51705173
*/
5171-
export class FiberGroundFromHeightMap implements HasPropsHandlers<FiberMeshProps> {
5172-
private propsHandlers: PropsHandler<FiberMeshProps>[];
5174+
export class FiberGroundFromHeightMap implements HasPropsHandlers<FiberGroundMeshProps> {
5175+
private propsHandlers: PropsHandler<FiberGroundMeshProps>[];
51735176

51745177
constructor() {
51755178
this.propsHandlers = [
5176-
new FiberMeshPropsHandler()
5179+
new FiberGroundMeshPropsHandler()
5180+
, new FiberMeshPropsHandler()
51775181
, new FiberAbstractMeshPropsHandler()
51785182
, new FiberTransformNodePropsHandler()
51795183
, new FiberNodePropsHandler()
51805184
];
51815185
}
51825186

5183-
getPropsHandlers(): PropsHandler<FiberMeshProps>[] {
5187+
getPropsHandlers(): PropsHandler<FiberGroundMeshProps>[] {
51845188
return this.propsHandlers;
51855189
}
51865190

5187-
addPropsHandler(propHandler: PropsHandler<FiberMeshProps>): void {
5191+
addPropsHandler(propHandler: PropsHandler<FiberGroundMeshProps>): void {
51885192
this.propsHandlers.push(propHandler);
51895193
}
51905194

src/generatedProps.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -319,17 +319,17 @@ declare global {
319319
cylinder: FiberMeshProps & FiberCylinderPropsCtor & BabylonNode<BabylonjsCoreMesh>;
320320
torus: FiberMeshProps & FiberTorusPropsCtor & BabylonNode<BabylonjsCoreMesh>;
321321
torusKnot: FiberMeshProps & FiberTorusKnotPropsCtor & BabylonNode<BabylonjsCoreMesh>;
322-
lineSystem: FiberMeshProps & FiberLineSystemPropsCtor & BabylonNode<BabylonjsCoreMesh>;
323-
lines: FiberMeshProps & FiberLinesPropsCtor & BabylonNode<BabylonjsCoreMesh>;
324-
dashedLines: FiberMeshProps & FiberDashedLinesPropsCtor & BabylonNode<BabylonjsCoreMesh>;
322+
lineSystem: FiberLinesMeshProps & FiberLineSystemPropsCtor & BabylonNode<BabylonjsCoreLinesMesh>;
323+
lines: FiberLinesMeshProps & FiberLinesPropsCtor & BabylonNode<BabylonjsCoreLinesMesh>;
324+
dashedLines: FiberLinesMeshProps & FiberDashedLinesPropsCtor & BabylonNode<BabylonjsCoreLinesMesh>;
325325
extrudeShape: FiberMeshProps & FiberExtrudeShapePropsCtor & BabylonNode<BabylonjsCoreMesh>;
326326
extrudeShapeCustom: FiberMeshProps & FiberExtrudeShapeCustomPropsCtor & BabylonNode<BabylonjsCoreMesh>;
327327
lathe: FiberMeshProps & FiberLathePropsCtor & BabylonNode<BabylonjsCoreMesh>;
328328
tiledPlane: FiberMeshProps & FiberTiledPlanePropsCtor & BabylonNode<BabylonjsCoreMesh>;
329329
plane: FiberMeshProps & FiberPlanePropsCtor & BabylonNode<BabylonjsCoreMesh>;
330330
ground: FiberMeshProps & FiberGroundPropsCtor & BabylonNode<BabylonjsCoreMesh>;
331331
tiledGround: FiberMeshProps & FiberTiledGroundPropsCtor & BabylonNode<BabylonjsCoreMesh>;
332-
groundFromHeightMap: FiberMeshProps & FiberGroundFromHeightMapPropsCtor & BabylonNode<BabylonjsCoreMesh>;
332+
groundFromHeightMap: FiberGroundMeshProps & FiberGroundFromHeightMapPropsCtor & BabylonNode<BabylonjsCoreGroundMesh>;
333333
'babylon-polygon': FiberMeshProps & FiberPolygonPropsCtor & BabylonNode<BabylonjsCoreMesh>;
334334
extrudePolygon: FiberMeshProps & FiberExtrudePolygonPropsCtor & BabylonNode<BabylonjsCoreMesh>;
335335
tube: FiberMeshProps & FiberTubePropsCtor & BabylonNode<BabylonjsCoreMesh>;

stories/babylonjs/Hooks/hooks.stories.js

+72-25
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,92 @@ const ContextLogger = (props, context) => {
1515
return null;
1616
}
1717

18-
const RotatingBoxScene = (props) => {
19-
const boxRef = useRef(null);
18+
const size = 2;
19+
const shade = 0;
20+
const rpm = 10;
2021

22+
const RotatingBox = ({position}) => {
23+
const centerTransform = useRef();
2124
useBeforeRender((scene) => {
22-
if (boxRef.current) {
23-
var deltaTimeInMillis = scene.getEngine().getDeltaTime();
24-
25-
const rpm = props.rpm || 10;
26-
boxRef.current.rotation.y += ((rpm / 60) * Math.PI * 2 * (deltaTimeInMillis / 1000));
25+
if (centerTransform.current !== null) {
26+
const deltaTimeInMillis = scene.getEngine().getDeltaTime();
27+
centerTransform.current.rotation.y += ((rpm / 60) * Math.PI * 2 * (deltaTimeInMillis / 1000));
2728
}
2829
})
2930

30-
return (
31-
<>
32-
<freeCamera name='camera1' position={new Vector3(0, 5, -10)} setTarget={[Vector3.Zero()]} />
33-
<hemisphericLight name='light1' intensity={0.7} direction={Vector3.Up()} />
34-
<box ref={boxRef} name='box1' size={2} position={new Vector3(0, 1, 0)}>
35-
<standardMaterial name='boxMat' diffuseColor={Color3.Red()} specularColor={Color3.Black()} />
36-
</box>
37-
<ground name='ground1' width={6} height={6} subdivisions={2} />
38-
</>
39-
)
31+
return (<transformNode ref={centerTransform} position={position} name="transform-node">
32+
<lines
33+
name="red-line"
34+
points={
35+
[
36+
new Vector3.Zero(),
37+
new Vector3(size, 0, 0),
38+
new Vector3(size * 0.95, 0.05 * size, 0),
39+
new Vector3(size, 0, 0),
40+
new Vector3(size * 0.95, -0.05 * size, 0)
41+
]
42+
}
43+
color={new Color3(1, shade, shade)}
44+
/>
45+
<lines
46+
name="green-line"
47+
points={
48+
[
49+
new Vector3.Zero(),
50+
new Vector3(0, size, 0),
51+
new Vector3(-0.05 * size, size * 0.95, 0),
52+
new Vector3(0, size, 0),
53+
new Vector3(0.05 * size, size * 0.95, 0)
54+
]
55+
}
56+
color={new Color3(shade, 1, shade)}
57+
/>
58+
<lines
59+
name="blue-line"
60+
points={
61+
[
62+
new Vector3.Zero(),
63+
new Vector3(0, 0, size),
64+
new Vector3(0, -0.05 * size, size * 0.95),
65+
new Vector3(0, 0, size),
66+
new Vector3(0, 0.05 * size, size * 0.95)
67+
]
68+
}
69+
color={new Color3(shade, shade, 1)}
70+
/>
71+
<box
72+
name="color-box"
73+
faceColors={[
74+
Color3.Blue(),
75+
Color3.Red(),
76+
Color3.Green(),
77+
Color3.White(),
78+
Color3.Yellow(),
79+
Color3.Black()
80+
]}
81+
></box>
82+
</transformNode>)
4083
}
4184

42-
const RenderHooks = (props, context) => {
43-
return (
85+
const RotatingBoxScene = (props) => (
86+
<>
87+
<freeCamera name='camera1' position={new Vector3(0, 5, -10)} setTarget={[Vector3.Zero()]} />
88+
<hemisphericLight name='light1' intensity={0.7} direction={Vector3.Up()} />
89+
<RotatingBox position={new Vector3(1.5, 1.5, -3)} />
90+
<RotatingBox position={new Vector3(-1.5, 1.5, -3)} />
91+
<ground name='ground1' width={6} height={6} subdivisions={2} />
92+
</>
93+
)
94+
95+
export const RenderHooksStory = () => (
96+
<div style={{ flex: 1, display: 'flex' }}>
4497
<Engine antialias adaptToDeviceRatio canvasId='babylonJS' >
4598
<ContextLogger id='engine' />
4699
<Scene>
47100
<ContextLogger id='scene' />
48101
<RotatingBoxScene rpm={20} />
49102
</Scene>
50103
</Engine>
51-
)
52-
}
53-
54-
export const RenderHooksStory = () => (
55-
<div style={{ flex: 1, display: 'flex' }}>
56-
<RenderHooks x={5} />
57104
</div>
58105
)
59106

stories/babylonjs/PostProcess/pipeline.stories.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ export const Pipeline = () => (
99
<div style={{ flex: 1, display: 'flex' }}>
1010
<Engine antialias adaptToDeviceRatio canvasId='babylonJS' >
1111
<Scene>
12-
<arcRotateCamera name='Camera1' radius={10} alpha={Math.PI / 2} beta={(Math.PI / 2)} target={Vector3.Zero()} />
12+
<arcRotateCamera name='Camera1' radius={10} alpha={0.5 + Math.PI / 2} beta={-0.5 + (Math.PI / 2)} target={Vector3.Zero()} />
1313
<hemisphericLight name='light' />
1414
<box name='test' />
1515
<defaultRenderingPipeline hdr chromaticAberrationEnabled grainEnabled>
1616
<chromaticAberrationPostProcess assignFrom='chromaticAberration' aberrationAmount={-100} radialIntensity={0.2} />
17-
<grainPostProcess assignFrom='grain' intensity={50} />
17+
<grainPostProcess assignFrom='grain' intensity={20} />
1818
</defaultRenderingPipeline>
1919
</Scene>
2020
</Engine>

stories/babylonjs/Textures/dynamic-configuration.stories.js stories/babylonjs/Textures/pbr-configuration.stories.js

+3-72
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,11 @@
11
import React, { useCallback, useState } from 'react';
22
import { Vector3, Color3, Texture } from '@babylonjs/core';
33

4-
import { Engine, Scene, HostRegistrationStore, useScene, checkPrimitiveDiff } from 'react-babylonjs';
4+
import { Engine, Scene, useScene } from 'react-babylonjs';
55

66
import '../../style.css';
77

88
export default { title: 'Textures' };
9-
10-
class PrimitivesPropsHandler {
11-
IGNORED_PROPS = 'assignFrom'; // TODO: add other built-in like 'key', etc.
12-
13-
getPropertyUpdates(oldProps, newProps) {
14-
var combined = Object.keys(oldProps).reduce((prev, cur) => {
15-
if (this.IGNORED_PROPS.indexOf(cur) === -1) {
16-
prev[cur] = {
17-
old: oldProps[cur]
18-
}
19-
}
20-
return prev;
21-
}, {});
22-
23-
var combined = Object.keys(newProps).reduce((prev, cur) => {
24-
if (this.IGNORED_PROPS.indexOf(cur) === -1) {
25-
if (prev[cur] !== undefined) {
26-
prev[cur].new = newProps[cur];
27-
} else {
28-
prev[cur] = {
29-
new: newProps[cur]
30-
}
31-
}
32-
}
33-
return prev;
34-
}, combined);
35-
36-
const changedProps = [];
37-
for (var propName in combined) {
38-
checkPrimitiveDiff(combined[propName].old, combined[propName].new, propName, changedProps);
39-
};
40-
return changedProps.length === 0 ? null : changedProps;
41-
}
42-
}
43-
44-
class FiberPBRClearCoatConfiguration {
45-
constructor() {
46-
this.propsHandlers = [
47-
new PrimitivesPropsHandler()
48-
];
49-
}
50-
51-
getPropsHandlers() {
52-
return this.propsHandlers;
53-
}
54-
55-
addPropsHandler(propHandler) {
56-
this.propsHandlers.push(propHandler);
57-
}
58-
}
59-
60-
HostRegistrationStore.Register({
61-
hostElementName: "pbrClearCoatConfiguration",
62-
hostFactory: (scene) => { console.error('registered host factory method not applicable for demo') },
63-
propHandlerInstance: new FiberPBRClearCoatConfiguration(),
64-
createInfo: {
65-
"creationType": "...",
66-
"libraryLocation": "...",
67-
"namespace": "@babylonjs/materials/clearCoat",
68-
"parameters": []
69-
},
70-
metadata: {
71-
"className": "FiberPBRClearCoatConfiguration"
72-
}
73-
})
74-
759
var cubeTexture = null;
7610
var cubeTextureClone = null;
7711
const onSceneMounted = (createdArgs) => {
@@ -84,14 +18,11 @@ const onSceneMounted = (createdArgs) => {
8418
*/
8519
const WithDynamicConfig = ({ roughness }) => {
8620
let environmentUrl = 'assets/textures/environment.dds'
87-
const scene = useScene();
8821
const [texturesLoaded, setTexturesLoaded] = useState(false);
8922

9023
const cubeTextureRef = useCallback(node => {
9124
if (node && texturesLoaded === false) {
92-
scene.debugLayer.show();
9325
setTexturesLoaded(true); // trigger render and props assignment
94-
console.log('cubeTexture', node)
9526
cubeTexture = node;
9627

9728
cubeTextureClone = cubeTexture.clone();
@@ -183,9 +114,9 @@ export const DynamicConfig = () => {
183114
}
184115

185116
DynamicConfig.story = {
186-
name: 'PBR ClearCoat (experiment)',
117+
name: 'PBR set roughness',
187118
parameters:
188119
{
189-
notes: 'Just an experiment - not fixed API.'
120+
notes: 'Experimental API.'
190121
}
191122
}

0 commit comments

Comments
 (0)