|
@@ -396,7 +396,7 @@ var BABYLON;
|
|
|
serializationGeometries.torusKnots.push(serializeTorusKnot(geometry));
|
|
|
}
|
|
|
else if (geometry instanceof BABYLON.Geometry.Primitives._Primitive) {
|
|
|
- throw new Error("Unknow primitive type");
|
|
|
+ throw new Error("Unknown primitive type");
|
|
|
}
|
|
|
else {
|
|
|
serializationGeometries.vertexData.push(serializeVertexData(geometry));
|
|
@@ -599,6 +599,46 @@ var BABYLON;
|
|
|
serializationObject.layerMask = mesh.layerMask;
|
|
|
return serializationObject;
|
|
|
};
|
|
|
+ var finalizeSingleMesh = function (mesh, serializationObject) {
|
|
|
+ //only works if the mesh is already loaded
|
|
|
+ if (mesh.delayLoadState === BABYLON.Engine.DELAYLOADSTATE_LOADED || mesh.delayLoadState === BABYLON.Engine.DELAYLOADSTATE_NONE) {
|
|
|
+ //serialize material
|
|
|
+ if (mesh.material) {
|
|
|
+ if (mesh.material instanceof BABYLON.StandardMaterial) {
|
|
|
+ serializationObject.materials = serializationObject.materials || [];
|
|
|
+ serializationObject.materials.push(serializeMaterial(mesh.material));
|
|
|
+ }
|
|
|
+ else if (mesh.material instanceof BABYLON.MultiMaterial) {
|
|
|
+ serializationObject.multiMaterials = serializationObject.multiMaterials || [];
|
|
|
+ serializationObject.multiMaterials.push(serializeMultiMaterial(mesh.material));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //serialize geometry
|
|
|
+ var geometry = mesh._geometry;
|
|
|
+ if (geometry) {
|
|
|
+ if (!serializationObject.geometries) {
|
|
|
+ serializationObject.geometries = {};
|
|
|
+ serializationObject.geometries.boxes = [];
|
|
|
+ serializationObject.geometries.spheres = [];
|
|
|
+ serializationObject.geometries.cylinders = [];
|
|
|
+ serializationObject.geometries.toruses = [];
|
|
|
+ serializationObject.geometries.grounds = [];
|
|
|
+ serializationObject.geometries.planes = [];
|
|
|
+ serializationObject.geometries.torusKnots = [];
|
|
|
+ serializationObject.geometries.vertexData = [];
|
|
|
+ }
|
|
|
+ serializeGeometry(geometry, serializationObject.geometries);
|
|
|
+ }
|
|
|
+ // Skeletons
|
|
|
+ if (mesh.skeleton) {
|
|
|
+ serializationObject.skeletons = serializationObject.skeletons || [];
|
|
|
+ serializationObject.skeletons.push(serializeSkeleton(mesh.skeleton));
|
|
|
+ }
|
|
|
+ //serialize the actual mesh
|
|
|
+ serializationObject.meshes = serializationObject.meshes || [];
|
|
|
+ serializationObject.meshes.push(serializeMesh(mesh, serializationObject));
|
|
|
+ }
|
|
|
+ };
|
|
|
var SceneSerializer = (function () {
|
|
|
function SceneSerializer() {
|
|
|
}
|
|
@@ -699,48 +739,15 @@ var BABYLON;
|
|
|
}
|
|
|
return serializationObject;
|
|
|
};
|
|
|
- SceneSerializer.SerializeMesh = function (mesh) {
|
|
|
+ SceneSerializer.SerializeMesh = function (toSerialize /* Mesh || Mesh[] */) {
|
|
|
var serializationObject = {};
|
|
|
- //only works if the mesh is already loaded
|
|
|
- if (mesh.delayLoadState === BABYLON.Engine.DELAYLOADSTATE_LOADED || mesh.delayLoadState === BABYLON.Engine.DELAYLOADSTATE_NONE) {
|
|
|
- //serialize material
|
|
|
- if (mesh.material) {
|
|
|
- if (mesh.material instanceof BABYLON.StandardMaterial) {
|
|
|
- serializationObject.materials = [];
|
|
|
- serializationObject.materials.push(serializeMaterial(mesh.material));
|
|
|
- }
|
|
|
- else if (mesh.material instanceof BABYLON.MultiMaterial) {
|
|
|
- serializationObject.multiMaterials = [];
|
|
|
- serializationObject.multiMaterials.push(serializeMultiMaterial(mesh.material));
|
|
|
- }
|
|
|
- }
|
|
|
- //serialize geometry
|
|
|
- var geometry = mesh._geometry;
|
|
|
- if (geometry) {
|
|
|
- serializationObject.geometries = {};
|
|
|
- serializationObject.geometries.boxes = [];
|
|
|
- serializationObject.geometries.spheres = [];
|
|
|
- serializationObject.geometries.cylinders = [];
|
|
|
- serializationObject.geometries.toruses = [];
|
|
|
- serializationObject.geometries.grounds = [];
|
|
|
- serializationObject.geometries.planes = [];
|
|
|
- serializationObject.geometries.torusKnots = [];
|
|
|
- serializationObject.geometries.vertexData = [];
|
|
|
- serializeGeometry(geometry, serializationObject.geometries);
|
|
|
- }
|
|
|
- // Skeletons
|
|
|
- if (mesh.skeleton) {
|
|
|
- serializationObject.skeletons = [];
|
|
|
- serializationObject.skeletons.push(serializeSkeleton(mesh.skeleton));
|
|
|
- }
|
|
|
- //serialize the actual mesh
|
|
|
- serializationObject.meshes = [];
|
|
|
- serializationObject.meshes.push(serializeMesh(mesh, serializationObject));
|
|
|
- }
|
|
|
+ toSerialize = (toSerialize instanceof Array) ? toSerialize : [toSerialize];
|
|
|
+ toSerialize.forEach(function (mesh) {
|
|
|
+ finalizeSingleMesh(mesh, serializationObject);
|
|
|
+ });
|
|
|
return serializationObject;
|
|
|
};
|
|
|
return SceneSerializer;
|
|
|
})();
|
|
|
BABYLON.SceneSerializer = SceneSerializer;
|
|
|
})(BABYLON || (BABYLON = {}));
|
|
|
-//# sourceMappingURL=babylon.sceneSerializer.js.map
|