|
@@ -27,14 +27,13 @@ export class KHR_draco_mesh_compression implements IGLTFLoaderExtension {
|
|
/** The name of this extension. */
|
|
/** The name of this extension. */
|
|
public readonly name = NAME;
|
|
public readonly name = NAME;
|
|
|
|
|
|
- /** The draco compression used to decode vertex data. */
|
|
|
|
|
|
+ /** The draco compression used to decode vertex data or DracoCompression.Default if not defined */
|
|
public dracoCompression?: DracoCompression;
|
|
public dracoCompression?: DracoCompression;
|
|
|
|
|
|
/** Defines whether this extension is enabled. */
|
|
/** Defines whether this extension is enabled. */
|
|
public enabled = DracoCompression.DecoderAvailable;
|
|
public enabled = DracoCompression.DecoderAvailable;
|
|
|
|
|
|
private _loader: GLTFLoader;
|
|
private _loader: GLTFLoader;
|
|
- private _dracoCompressionOwned = false;
|
|
|
|
|
|
|
|
/** @hidden */
|
|
/** @hidden */
|
|
constructor(loader: GLTFLoader) {
|
|
constructor(loader: GLTFLoader) {
|
|
@@ -43,11 +42,7 @@ export class KHR_draco_mesh_compression implements IGLTFLoaderExtension {
|
|
|
|
|
|
/** @hidden */
|
|
/** @hidden */
|
|
public dispose(): void {
|
|
public dispose(): void {
|
|
- if (this.dracoCompression && this._dracoCompressionOwned) {
|
|
|
|
- this.dracoCompression.dispose();
|
|
|
|
- delete this.dracoCompression;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ delete this.dracoCompression;
|
|
delete this._loader;
|
|
delete this._loader;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -93,12 +88,8 @@ export class KHR_draco_mesh_compression implements IGLTFLoaderExtension {
|
|
var bufferView = ArrayItem.Get(extensionContext, this._loader.gltf.bufferViews, extension.bufferView) as IBufferViewDraco;
|
|
var bufferView = ArrayItem.Get(extensionContext, this._loader.gltf.bufferViews, extension.bufferView) as IBufferViewDraco;
|
|
if (!bufferView._dracoBabylonGeometry) {
|
|
if (!bufferView._dracoBabylonGeometry) {
|
|
bufferView._dracoBabylonGeometry = this._loader.loadBufferViewAsync(`#/bufferViews/${bufferView.index}`, bufferView).then((data) => {
|
|
bufferView._dracoBabylonGeometry = this._loader.loadBufferViewAsync(`#/bufferViews/${bufferView.index}`, bufferView).then((data) => {
|
|
- if (!this.dracoCompression) {
|
|
|
|
- this.dracoCompression = new DracoCompression();
|
|
|
|
- this._dracoCompressionOwned = true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return this.dracoCompression.decodeMeshAsync(data, attributes).then((babylonVertexData) => {
|
|
|
|
|
|
+ const dracoCompression = this.dracoCompression || DracoCompression.Default;
|
|
|
|
+ return dracoCompression.decodeMeshAsync(data, attributes).then((babylonVertexData) => {
|
|
const babylonGeometry = new Geometry(babylonMesh.name, this._loader.babylonScene);
|
|
const babylonGeometry = new Geometry(babylonMesh.name, this._loader.babylonScene);
|
|
babylonVertexData.applyToGeometry(babylonGeometry);
|
|
babylonVertexData.applyToGeometry(babylonGeometry);
|
|
return babylonGeometry;
|
|
return babylonGeometry;
|