Skip to content

Commit dd4fb5e

Browse files
author
Léna Voinchet
committed
Fix dummies disappearing when refreshing
1 parent 7c22977 commit dd4fb5e

File tree

2 files changed

+66
-49
lines changed

2 files changed

+66
-49
lines changed

js/scene/objects/SceneObjects.js

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -98,32 +98,32 @@ class SceneObjects{
9898
const newDummy = new Dummy(dummies.length);
9999

100100
//Rotation towards wall
101-
if(sceneManager.trackingMode == "wall-tracking"){
101+
if(sceneManager.trackingMode == "wall-tracking")
102+
{
102103
newDummy.model.rotateY(180);
103-
newDummy.mesh.position.set(0, 1, 1)
104+
newDummy.mesh.position.set(0, 1, 1);
104105
newDummy.updatePosition();
105106
}
106107

107-
//Offset
108-
for(let i = 0; i < dummies.length; i++)
109-
{
110-
if(newDummy.mesh.position.distanceTo(dummies[i].mesh.position) < 1.0)
108+
//Offset
109+
for(let i = 0; i < dummies.length; i++)
111110
{
112-
newDummy.mesh.position.x++;
113-
i = 0;
111+
if(newDummy.mesh.position.distanceTo(dummies[i].mesh.position) < 1.0)
112+
{
113+
newDummy.mesh.position.x++;
114+
i = 0;
115+
}
114116
}
115-
}
116-
console.log(newDummy)
117-
newDummy.updatePosition();
117+
newDummy.updatePosition();
118118

119-
//Add to scene
120-
newDummy.addToScene(sceneManager.scene);
119+
//Add to scene
120+
newDummy.addToScene(sceneManager.scene);
121121

122-
//Management
123-
dummies.push(newDummy);
124-
this.dummiesMeshes.push(newDummy.mesh);
122+
//Management
123+
dummies.push(newDummy);
124+
this.dummiesMeshes.push(newDummy.mesh);
125125

126-
this.populateStorage();
126+
this.populateStorage();
127127
}
128128

129129
this.removeDummies = function()
@@ -443,8 +443,8 @@ class SceneObjects{
443443
datas.objects.dummies.forEach(d => {
444444
this.addDummy();
445445
const dummy = dummies[dummies.length - 1];
446-
dummy.mesh.translateX(d.p_x);
447-
dummy.mesh.translateZ(d.p_y);
446+
dummy.mesh.translateX(d.p_x - dummy.xPos);
447+
dummy.mesh.translateZ(d.p_y - dummy.yPos);
448448
dummy.updatePosition();
449449
});
450450
}
@@ -578,10 +578,26 @@ class SceneObjects{
578578
sceneManager.drawProjection(n);
579579
});
580580
}
581-
SceneObjects.loadFont(isBuilder, () => SceneManager.loadFont(isBuilder, () => sceneManager.initAugmentaScene()));
582581

583-
loadModel(isBuilder, 'male');
584-
loadModel(isBuilder, 'female');
582+
async function loadScene(isBuilder) {
583+
// Wait until models are loaded
584+
await Promise.all([
585+
loadModel(isBuilder, 'male'),
586+
loadModel(isBuilder, 'female')
587+
]);
588+
589+
await new Promise((resolve, reject) => {
590+
SceneObjects.loadFont(isBuilder, () => {
591+
SceneManager.loadFont(isBuilder, () => {
592+
sceneManager.initAugmentaScene();
593+
resolve();
594+
});
595+
});
596+
});
597+
}
598+
599+
loadScene(isBuilder);
600+
585601
}
586602
}
587603

js/scene/objects/props/Dummy.js

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Dummy {
2222
this.yPos = 0;
2323
this.zPos = 0;
2424

25-
this.mesh = buildMesh(this.xPos, this.yPos)
25+
this.mesh = buildMesh(this.xPos, this.yPos);
2626

2727
//this.model = new Object3D();
2828

@@ -91,40 +91,41 @@ class Dummy {
9191
}
9292
}
9393

94-
function loadModel(isBuilder, genre)
95-
{
96-
const onProgress = function ( xhr ) {
97-
98-
if ( xhr.lengthComputable ) {
99-
100-
const percentComplete = xhr.loaded / xhr.total * 100;
101-
console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
102-
103-
}
104-
105-
};
106-
94+
async function loadModel(isBuilder, genre) {
10795
const path = isBuilder ? './designer/' : './';
10896

109-
new MTLLoader()
110-
.setPath( path + 'models/'+ genre +'02/' )
111-
.setRequestHeader({ "Content-Type" : "model/mtl"})
112-
.load( genre +'02.mtl', function ( materials ) {
97+
const materials = await new Promise((resolve, reject) => {
98+
new MTLLoader()
99+
.setPath(path + 'models/' + genre + '02/')
100+
.setRequestHeader({ "Content-Type": "model/mtl" })
101+
.load(genre + '02.mtl', resolve, undefined, reject);
102+
});
113103

114-
materials.preload();
104+
materials.preload();
115105

106+
const object = await new Promise((resolve, reject) => {
116107
new OBJLoader()
117-
.setMaterials( materials )
118-
.setPath( path + 'models/'+ genre +'02/' )
119-
.setRequestHeader({ "Content-Type" : "model/obj"})
120-
.load( genre +'02.obj', function ( object ) {
108+
.setMaterials(materials)
109+
.setPath(path + 'models/' + genre + '02/')
110+
.setRequestHeader({ "Content-Type": "model/obj" })
111+
.load(genre + '02.obj', resolve, undefined, reject);
112+
});
121113

122-
if(genre === 'male') Dummy.maleModel = object;
123-
else if(genre === 'female') Dummy.femaleModel = object;
114+
if (genre === 'male') Dummy.maleModel = object;
115+
else if (genre === 'female') Dummy.femaleModel = object;
124116

125-
}, onProgress );
126-
} );
117+
return object;
127118
}
128119

120+
(async () => {
121+
122+
const [maleModel, femaleModel] = await Promise.all([
123+
loadModel(false, 'male'),
124+
loadModel(false, 'female')
125+
]);
126+
127+
})();
128+
129+
129130
export { Dummy }
130131
export { loadModel }

0 commit comments

Comments
 (0)