MSFT_minecraftMesh.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /// <reference path="../../../../../dist/preview release/babylon.d.ts"/>
  2. module BABYLON.GLTF2.Extensions {
  3. const NAME = "MSFT_minecraftMesh";
  4. /** @hidden */
  5. export class MSFT_minecraftMesh implements IGLTFLoaderExtension {
  6. public readonly name = NAME;
  7. public enabled = true;
  8. private _loader: GLTFLoader;
  9. constructor(loader: GLTFLoader) {
  10. this._loader = loader;
  11. }
  12. public dispose() {
  13. delete this._loader;
  14. }
  15. public loadMaterialPropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: Material): Nullable<Promise<void>> {
  16. return GLTFLoader.LoadExtraAsync<boolean>(context, material, this.name, (extraContext, extra) => {
  17. if (extra) {
  18. if (!(babylonMaterial instanceof PBRMaterial)) {
  19. throw new Error(`${extraContext}: Material type not supported`);
  20. }
  21. const promise = this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial);
  22. if (babylonMaterial.needAlphaBlending()) {
  23. babylonMaterial.forceDepthWrite = true;
  24. babylonMaterial.separateCullingPass = true;
  25. }
  26. babylonMaterial.backFaceCulling = babylonMaterial.forceDepthWrite;
  27. babylonMaterial.twoSidedLighting = true;
  28. return promise;
  29. }
  30. return null;
  31. });
  32. }
  33. }
  34. GLTFLoader.RegisterExtension(NAME, loader => new MSFT_minecraftMesh(loader));
  35. }