123456789101112131415161718192021222324252627282930313233343536373839 |
- import { ILoaderPlugin } from "./loaderPlugin";
- import { telemetryManager } from "../../telemetryManager";
- import { ViewerModel } from "../..";
- import { Tools, ISceneLoaderPlugin, ISceneLoaderPluginAsync, Material } from "babylonjs";
- import { IGLTFLoaderData, GLTF2 } from "babylonjs-loaders";
- export class MinecraftLoaderPlugin implements ILoaderPlugin {
- private _model: ViewerModel;
- private _minecraftEnabled: boolean;
- public onInit(loader: ISceneLoaderPlugin | ISceneLoaderPluginAsync, model: ViewerModel) {
- this._model = model;
- this._minecraftEnabled = false;
- }
- public onParsed(data: IGLTFLoaderData) {
- if (data && data.json && data.json['meshes'] && data.json['meshes'].length) {
- var meshes = data.json['meshes'] as GLTF2.IMesh[];
- for (var i = 0; i < meshes.length; i++) {
- var mesh = meshes[i];
- if (mesh && mesh.extras && mesh.extras.MSFT_minecraftMesh) {
- this._minecraftEnabled = true;
- break;
- }
- }
- }
- }
- public onMaterialLoaded(material: Material) {
- if (this._minecraftEnabled && material.needAlphaBlending()) {
- material.forceDepthWrite = true;
- material.backFaceCulling = true;
- material.separateCullingPass = true;
- }
- }
- }
|