@xmcl/model
Version:
Create Three.js model for player and block
53 lines • 1.85 kB
TypeScript
import { BlockModel, PackMeta } from '@xmcl/resourcepack';
import { Object3D } from 'three/src/core/Object3D';
import { TextureLoader } from 'three/src/loaders/TextureLoader';
import { MeshBasicMaterial } from 'three/src/materials/MeshBasicMaterial';
import { Vector3 } from 'three/src/math/Vector3';
import type { Texture } from 'three/src/textures/Texture';
interface TextureData {
url: string;
animation?: PackMeta.Animation;
}
export interface TextureManager {
hasTexture(path: string): boolean;
loadTexture(path: string): Texture;
}
export declare class BasicTextureManager implements TextureManager {
private textures;
private loader;
constructor(textures?: Record<string, TextureData>, loader?: TextureLoader);
hasTexture(path: string): boolean;
loadTexture(path: string): Texture;
}
export declare const DEFAULT_TRANSFORM: BlockModel.Transform;
export declare const DEFAULT_DISPLAY: BlockModel.Display;
export declare const BUILTIN_GENERATED: BlockModel.Resolved;
export declare class BlockModelObject extends Object3D {
animationLoop: boolean;
displayOption: BlockModel.Display;
applyDisplay(option: string): void;
getCenter(): Vector3;
}
export declare class BlockModelFactory {
readonly textureManager: TextureManager;
readonly option: {
clipUVs?: boolean;
modelOnly?: boolean;
};
static TRANSPARENT_MATERIAL: MeshBasicMaterial;
private cachedMaterial;
constructor(textureManager: TextureManager, option?: {
clipUVs?: boolean;
modelOnly?: boolean;
});
/**
* Get threejs `Object3D` for that block model.
*/
getObject(model: BlockModel.Resolved, options?: {
uvlock?: boolean;
y?: number;
x?: number;
}, fix?: number): BlockModelObject;
}
export {};
//# sourceMappingURL=block.d.ts.map