MSFT_minecraftMesh.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
  2. import { GLTFLoader } from "../glTFLoader.js";
  3. const NAME = "MSFT_minecraftMesh";
  4. /** @internal */
  5. // eslint-disable-next-line @typescript-eslint/naming-convention
  6. export class MSFT_minecraftMesh {
  7. /** @internal */
  8. constructor(loader) {
  9. /** @internal */
  10. this.name = NAME;
  11. this._loader = loader;
  12. this.enabled = this._loader.isExtensionUsed(NAME);
  13. }
  14. /** @internal */
  15. dispose() {
  16. this._loader = null;
  17. }
  18. /** @internal */
  19. loadMaterialPropertiesAsync(context, material, babylonMaterial) {
  20. return GLTFLoader.LoadExtraAsync(context, material, this.name, (extraContext, extra) => {
  21. if (extra) {
  22. if (!(babylonMaterial instanceof PBRMaterial)) {
  23. throw new Error(`${extraContext}: Material type not supported`);
  24. }
  25. const promise = this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial);
  26. if (babylonMaterial.needAlphaBlending()) {
  27. babylonMaterial.forceDepthWrite = true;
  28. babylonMaterial.separateCullingPass = true;
  29. }
  30. babylonMaterial.backFaceCulling = babylonMaterial.forceDepthWrite;
  31. babylonMaterial.twoSidedLighting = true;
  32. return promise;
  33. }
  34. return null;
  35. });
  36. }
  37. }
  38. GLTFLoader.RegisterExtension(NAME, (loader) => new MSFT_minecraftMesh(loader));
  39. //# sourceMappingURL=MSFT_minecraftMesh.js.map