|
@@ -871,52 +871,16 @@ var BABYLON;
|
|
|
* @param type the type of simplification to run.
|
|
|
* successCallback optional success callback to be called after the simplification finished processing all settings.
|
|
|
*/
|
|
|
- Mesh.prototype.simplify = function (settings, parallelProcessing, type, successCallback) {
|
|
|
- var _this = this;
|
|
|
+ Mesh.prototype.simplify = function (settings, parallelProcessing, simplificationType, successCallback) {
|
|
|
if (parallelProcessing === void 0) { parallelProcessing = true; }
|
|
|
- if (type === void 0) { type = 0 /* QUADRATIC */; }
|
|
|
- var getSimplifier = function () {
|
|
|
- switch (type) {
|
|
|
- case 0 /* QUADRATIC */:
|
|
|
- default:
|
|
|
- return new BABYLON.QuadraticErrorSimplification(_this);
|
|
|
- }
|
|
|
- };
|
|
|
- if (parallelProcessing) {
|
|
|
- //parallel simplifier
|
|
|
- settings.forEach(function (setting) {
|
|
|
- var simplifier = getSimplifier();
|
|
|
- simplifier.simplify(setting, function (newMesh) {
|
|
|
- _this.addLODLevel(setting.distance, newMesh);
|
|
|
- //check if it is the last
|
|
|
- if (setting.quality === settings[settings.length - 1].quality && successCallback) {
|
|
|
- //all done, run the success callback.
|
|
|
- successCallback();
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
- else {
|
|
|
- //single simplifier.
|
|
|
- var simplifier = getSimplifier();
|
|
|
- var runDecimation = function (setting, callback) {
|
|
|
- simplifier.simplify(setting, function (newMesh) {
|
|
|
- _this.addLODLevel(setting.distance, newMesh);
|
|
|
- //run the next quality level
|
|
|
- callback();
|
|
|
- });
|
|
|
- };
|
|
|
- BABYLON.AsyncLoop.Run(settings.length, function (loop) {
|
|
|
- runDecimation(settings[loop.index], function () {
|
|
|
- loop.executeNext();
|
|
|
- });
|
|
|
- }, function () {
|
|
|
- //execution ended, run the success callback.
|
|
|
- if (successCallback) {
|
|
|
- successCallback();
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ if (simplificationType === void 0) { simplificationType = BABYLON.SimplificationType.QUADRATIC; }
|
|
|
+ this.getScene().simplificationQueue.addTask({
|
|
|
+ settings: settings,
|
|
|
+ parallelProcessing: parallelProcessing,
|
|
|
+ mesh: this,
|
|
|
+ simplificationType: simplificationType,
|
|
|
+ successCallback: successCallback
|
|
|
+ });
|
|
|
};
|
|
|
// Statics
|
|
|
Mesh.CreateRibbon = function (name, pathArray, closeArray, closePath, offset, scene, updatable, sideOrientation) {
|