|
@@ -1,13 +1,12 @@
|
|
|
-module BABYLON.Internals {
|
|
|
+module BABYLON.Internals {
|
|
|
|
|
|
var parseMaterialById = (id, parsedData, scene, rootUrl) => {
|
|
|
- for (var index = 0; index < parsedData.materials.length; index++) {
|
|
|
+ for (var index = 0, cache = parsedData.materials.length; index < cache; index++) {
|
|
|
var parsedMaterial = parsedData.materials[index];
|
|
|
if (parsedMaterial.id === id) {
|
|
|
return Material.Parse(parsedMaterial, scene, rootUrl);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return null;
|
|
|
};
|
|
|
|
|
@@ -19,12 +18,10 @@
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
if (mesh.parentId && hierarchyIds.indexOf(mesh.parentId) !== -1) {
|
|
|
hierarchyIds.push(mesh.id);
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
return false;
|
|
|
};
|
|
|
|
|
@@ -37,7 +34,8 @@
|
|
|
var loadedMaterialsIds = [];
|
|
|
var hierarchyIds = [];
|
|
|
var index: number;
|
|
|
- for (index = 0; index < parsedData.meshes.length; index++) {
|
|
|
+ var cache: number;
|
|
|
+ for (index = 0, cache = parsedData.meshes.length; index < cache; index++) {
|
|
|
var parsedMesh = parsedData.meshes[index];
|
|
|
|
|
|
if (!meshesNames || isDescendantOf(parsedMesh, meshesNames, hierarchyIds)) {
|
|
@@ -99,17 +97,15 @@
|
|
|
// Material ?
|
|
|
if (parsedMesh.materialId) {
|
|
|
var materialFound = (loadedMaterialsIds.indexOf(parsedMesh.materialId) !== -1);
|
|
|
-
|
|
|
if (!materialFound && parsedData.multiMaterials) {
|
|
|
- for (var multimatIndex = 0; multimatIndex < parsedData.multiMaterials.length; multimatIndex++) {
|
|
|
+ for (var multimatIndex = 0, multimatCache = parsedData.multiMaterials.length; multimatIndex < multimatCache; multimatIndex++) {
|
|
|
var parsedMultiMaterial = parsedData.multiMaterials[multimatIndex];
|
|
|
if (parsedMultiMaterial.id === parsedMesh.materialId) {
|
|
|
- for (var matIndex = 0; matIndex < parsedMultiMaterial.materials.length; matIndex++) {
|
|
|
+ for (var matIndex = 0, matCache = parsedMultiMaterial.materials.length; matIndex < matCache; matIndex++) {
|
|
|
var subMatId = parsedMultiMaterial.materials[matIndex];
|
|
|
loadedMaterialsIds.push(subMatId);
|
|
|
parseMaterialById(subMatId, parsedData, scene, rootUrl);
|
|
|
}
|
|
|
-
|
|
|
loadedMaterialsIds.push(parsedMultiMaterial.id);
|
|
|
Material.ParseMultiMaterial(parsedMultiMaterial, scene);
|
|
|
materialFound = true;
|
|
@@ -129,11 +125,9 @@
|
|
|
// Skeleton ?
|
|
|
if (parsedMesh.skeletonId > -1 && scene.skeletons) {
|
|
|
var skeletonAlreadyLoaded = (loadedSkeletonsIds.indexOf(parsedMesh.skeletonId) > -1);
|
|
|
-
|
|
|
if (!skeletonAlreadyLoaded) {
|
|
|
- for (var skeletonIndex = 0; skeletonIndex < parsedData.skeletons.length; skeletonIndex++) {
|
|
|
+ for (var skeletonIndex = 0, skeletonCache = parsedData.skeletons.length; skeletonIndex < skeletonCache; skeletonIndex++) {
|
|
|
var parsedSkeleton = parsedData.skeletons[skeletonIndex];
|
|
|
-
|
|
|
if (parsedSkeleton.id === parsedMesh.skeletonId) {
|
|
|
skeletons.push(Skeleton.Parse(parsedSkeleton, scene));
|
|
|
loadedSkeletonsIds.push(parsedSkeleton.id);
|
|
@@ -149,7 +143,7 @@
|
|
|
|
|
|
// Connecting parents
|
|
|
var currentMesh: AbstractMesh;
|
|
|
- for (index = 0; index < scene.meshes.length; index++) {
|
|
|
+ for (index = 0, cache = scene.meshes.length; index < cache; index++) {
|
|
|
currentMesh = scene.meshes[index];
|
|
|
if (currentMesh._waitingParentId) {
|
|
|
currentMesh.parent = scene.getLastEntryByID(currentMesh._waitingParentId);
|
|
@@ -158,7 +152,7 @@
|
|
|
}
|
|
|
|
|
|
// freeze world matrix application
|
|
|
- for (index = 0; index < scene.meshes.length; index++) {
|
|
|
+ for (index = 0, cache = scene.meshes.length; index < cache; index++) {
|
|
|
currentMesh = scene.meshes[index];
|
|
|
if (currentMesh._waitingFreezeWorldMatrix) {
|
|
|
currentMesh.freezeWorldMatrix();
|
|
@@ -168,9 +162,8 @@
|
|
|
|
|
|
// Particles
|
|
|
if (parsedData.particleSystems) {
|
|
|
- for (index = 0; index < parsedData.particleSystems.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.particleSystems.length; index < cache; index++) {
|
|
|
var parsedParticleSystem = parsedData.particleSystems[index];
|
|
|
-
|
|
|
if (hierarchyIds.indexOf(parsedParticleSystem.emitterId) !== -1) {
|
|
|
particleSystems.push(ParticleSystem.Parse(parsedParticleSystem, scene, rootUrl));
|
|
|
}
|
|
@@ -219,23 +212,24 @@
|
|
|
}
|
|
|
scene.workerCollisions = !!parsedData.workerCollisions;
|
|
|
|
|
|
- // Lights
|
|
|
var index: number;
|
|
|
- for (index = 0; index < parsedData.lights.length; index++) {
|
|
|
+ var cache: number;
|
|
|
+ // Lights
|
|
|
+ for (index = 0, cache = parsedData.lights.length; index < cache; index++) {
|
|
|
var parsedLight = parsedData.lights[index];
|
|
|
Light.Parse(parsedLight, scene);
|
|
|
}
|
|
|
|
|
|
// Materials
|
|
|
if (parsedData.materials) {
|
|
|
- for (index = 0; index < parsedData.materials.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.materials.length; index < cache; index++) {
|
|
|
var parsedMaterial = parsedData.materials[index];
|
|
|
Material.Parse(parsedMaterial, scene, rootUrl);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (parsedData.multiMaterials) {
|
|
|
- for (index = 0; index < parsedData.multiMaterials.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.multiMaterials.length; index < cache; index++) {
|
|
|
var parsedMultiMaterial = parsedData.multiMaterials[index];
|
|
|
Material.ParseMultiMaterial(parsedMultiMaterial, scene);
|
|
|
}
|
|
@@ -243,7 +237,7 @@
|
|
|
|
|
|
// Skeletons
|
|
|
if (parsedData.skeletons) {
|
|
|
- for (index = 0; index < parsedData.skeletons.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.skeletons.length; index < cache; index++) {
|
|
|
var parsedSkeleton = parsedData.skeletons[index];
|
|
|
Skeleton.Parse(parsedSkeleton, scene);
|
|
|
}
|
|
@@ -255,7 +249,7 @@
|
|
|
// Boxes
|
|
|
var boxes = geometries.boxes;
|
|
|
if (boxes) {
|
|
|
- for (index = 0; index < boxes.length; index++) {
|
|
|
+ for (index = 0, cache = boxes.length; index < cache; index++) {
|
|
|
var parsedBox = boxes[index];
|
|
|
Geometry.Primitives.Box.Parse(parsedBox, scene);
|
|
|
}
|
|
@@ -264,7 +258,7 @@
|
|
|
// Spheres
|
|
|
var spheres = geometries.spheres;
|
|
|
if (spheres) {
|
|
|
- for (index = 0; index < spheres.length; index++) {
|
|
|
+ for (index = 0, cache = spheres.length; index < cache; index++) {
|
|
|
var parsedSphere = spheres[index];
|
|
|
Geometry.Primitives.Sphere.Parse(parsedSphere, scene);
|
|
|
}
|
|
@@ -273,7 +267,7 @@
|
|
|
// Cylinders
|
|
|
var cylinders = geometries.cylinders;
|
|
|
if (cylinders) {
|
|
|
- for (index = 0; index < cylinders.length; index++) {
|
|
|
+ for (index = 0, cache = cylinders.length; index < cache; index++) {
|
|
|
var parsedCylinder = cylinders[index];
|
|
|
Geometry.Primitives.Cylinder.Parse(parsedCylinder, scene);
|
|
|
}
|
|
@@ -282,7 +276,7 @@
|
|
|
// Toruses
|
|
|
var toruses = geometries.toruses;
|
|
|
if (toruses) {
|
|
|
- for (index = 0; index < toruses.length; index++) {
|
|
|
+ for (index = 0, cache = toruses.length; index < cache; index++) {
|
|
|
var parsedTorus = toruses[index];
|
|
|
Geometry.Primitives.Torus.Parse(parsedTorus, scene);
|
|
|
}
|
|
@@ -291,7 +285,7 @@
|
|
|
// Grounds
|
|
|
var grounds = geometries.grounds;
|
|
|
if (grounds) {
|
|
|
- for (index = 0; index < grounds.length; index++) {
|
|
|
+ for (index = 0, cache = grounds.length; index < cache; index++) {
|
|
|
var parsedGround = grounds[index];
|
|
|
Geometry.Primitives.Ground.Parse(parsedGround, scene);
|
|
|
}
|
|
@@ -300,7 +294,7 @@
|
|
|
// Planes
|
|
|
var planes = geometries.planes;
|
|
|
if (planes) {
|
|
|
- for (index = 0; index < planes.length; index++) {
|
|
|
+ for (index = 0, cache = planes.length; index < cache; index++) {
|
|
|
var parsedPlane = planes[index];
|
|
|
Geometry.Primitives.Plane.Parse(parsedPlane, scene);
|
|
|
}
|
|
@@ -309,7 +303,7 @@
|
|
|
// TorusKnots
|
|
|
var torusKnots = geometries.torusKnots;
|
|
|
if (torusKnots) {
|
|
|
- for (index = 0; index < torusKnots.length; index++) {
|
|
|
+ for (index = 0, cache = torusKnots.length; index < cache; index++) {
|
|
|
var parsedTorusKnot = torusKnots[index];
|
|
|
Geometry.Primitives.TorusKnot.Parse(parsedTorusKnot, scene);
|
|
|
}
|
|
@@ -318,7 +312,7 @@
|
|
|
// VertexData
|
|
|
var vertexData = geometries.vertexData;
|
|
|
if (vertexData) {
|
|
|
- for (index = 0; index < vertexData.length; index++) {
|
|
|
+ for (index = 0, cache = vertexData.length; index < cache; index++) {
|
|
|
var parsedVertexData = vertexData[index];
|
|
|
Geometry.Parse(parsedVertexData, scene, rootUrl);
|
|
|
}
|
|
@@ -326,23 +320,22 @@
|
|
|
}
|
|
|
|
|
|
// Meshes
|
|
|
- for (index = 0; index < parsedData.meshes.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.meshes.length; index < cache; index++) {
|
|
|
var parsedMesh = parsedData.meshes[index];
|
|
|
Mesh.Parse(parsedMesh, scene, rootUrl);
|
|
|
}
|
|
|
|
|
|
// Cameras
|
|
|
- for (index = 0; index < parsedData.cameras.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.cameras.length; index < cache; index++) {
|
|
|
var parsedCamera = parsedData.cameras[index];
|
|
|
Camera.Parse(parsedCamera, scene);
|
|
|
}
|
|
|
-
|
|
|
if (parsedData.activeCameraID) {
|
|
|
scene.setActiveCameraByID(parsedData.activeCameraID);
|
|
|
}
|
|
|
|
|
|
// Browsing all the graph to connect the dots
|
|
|
- for (index = 0; index < scene.cameras.length; index++) {
|
|
|
+ for (index = 0, cache = scene.cameras.length; index < cache; index++) {
|
|
|
var camera = scene.cameras[index];
|
|
|
if (camera._waitingParentId) {
|
|
|
camera.parent = scene.getLastEntryByID(camera._waitingParentId);
|
|
@@ -350,7 +343,7 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- for (index = 0; index < scene.lights.length; index++) {
|
|
|
+ for (index = 0, cache = scene.lights.length; index < cache; index++) {
|
|
|
var light = scene.lights[index];
|
|
|
if (light._waitingParentId) {
|
|
|
light.parent = scene.getLastEntryByID(light._waitingParentId);
|
|
@@ -360,19 +353,18 @@
|
|
|
|
|
|
// Sounds
|
|
|
if (AudioEngine && parsedData.sounds) {
|
|
|
- for (index = 0; index < parsedData.sounds.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.sounds.length; index < cache; index++) {
|
|
|
var parsedSound = parsedData.sounds[index];
|
|
|
if (Engine.audioEngine.canUseWebAudio) {
|
|
|
Sound.Parse(parsedSound, scene, rootUrl);
|
|
|
- }
|
|
|
- else {
|
|
|
+ } else {
|
|
|
var emptySound = new Sound(parsedSound.name, null, scene);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Connect parents & children and parse actions
|
|
|
- for (index = 0; index < scene.meshes.length; index++) {
|
|
|
+ for (index = 0, cache = scene.meshes.length; index < cache; index++) {
|
|
|
var mesh = scene.meshes[index];
|
|
|
if (mesh._waitingParentId) {
|
|
|
mesh.parent = scene.getLastEntryByID(mesh._waitingParentId);
|
|
@@ -385,7 +377,7 @@
|
|
|
}
|
|
|
|
|
|
// freeze world matrix application
|
|
|
- for (index = 0; index < scene.meshes.length; index++) {
|
|
|
+ for (index = 0, cache = scene.meshes.length; index < cache; index++) {
|
|
|
var currentMesh = scene.meshes[index];
|
|
|
if (currentMesh._waitingFreezeWorldMatrix) {
|
|
|
currentMesh.freezeWorldMatrix();
|
|
@@ -395,7 +387,7 @@
|
|
|
|
|
|
// Particles Systems
|
|
|
if (parsedData.particleSystems) {
|
|
|
- for (index = 0; index < parsedData.particleSystems.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.particleSystems.length; index < cache; index++) {
|
|
|
var parsedParticleSystem = parsedData.particleSystems[index];
|
|
|
ParticleSystem.Parse(parsedParticleSystem, scene, rootUrl);
|
|
|
}
|
|
@@ -403,7 +395,7 @@
|
|
|
|
|
|
// Lens flares
|
|
|
if (parsedData.lensFlareSystems) {
|
|
|
- for (index = 0; index < parsedData.lensFlareSystems.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.lensFlareSystems.length; index < cache; index++) {
|
|
|
var parsedLensFlareSystem = parsedData.lensFlareSystems[index];
|
|
|
LensFlareSystem.Parse(parsedLensFlareSystem, scene, rootUrl);
|
|
|
}
|
|
@@ -411,9 +403,8 @@
|
|
|
|
|
|
// Shadows
|
|
|
if (parsedData.shadowGenerators) {
|
|
|
- for (index = 0; index < parsedData.shadowGenerators.length; index++) {
|
|
|
+ for (index = 0, cache = parsedData.shadowGenerators.length; index < cache; index++) {
|
|
|
var parsedShadowGenerator = parsedData.shadowGenerators[index];
|
|
|
-
|
|
|
ShadowGenerator.Parse(parsedShadowGenerator, scene);
|
|
|
}
|
|
|
}
|
|
@@ -428,6 +419,3 @@
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|