import { Vector3D, ParserBase, ResourceDependency } from "@awayjs/core";
import { IMaterial } from "@awayjs/renderer";
import { ImageTexture2D } from "@awayjs/materials";
/**
* Max3DSParser provides a parser for the 3ds data type.
*/
export declare class Max3DSParser extends ParserBase {
private _byteData;
private _textures;
private _materials;
private _unfinalized_objects;
private _cur_obj_end;
private _cur_obj;
private _cur_mat_end;
private _cur_mat;
private _useSmoothingGroups;
/**
* Creates a new Max3DSParser object.
*
* @param useSmoothingGroups Determines whether the parser looks for smoothing groups in the 3ds file or assumes uniform smoothing. Defaults to true.
*/
constructor(useSmoothingGroups?: boolean);
/**
* Indicates whether or not a given file extension is supported by the parser.
* @param extension The file extension of a potential file to be parsed.
* @return Whether or not the given file type is supported.
*/
static supportsType(extension: string): boolean;
/**
* Tests whether a data block can be parsed by the parser.
* @param data The data block to potentially be parsed.
* @return Whether or not the given data is supported.
*/
static supportsData(data: any): boolean;
/**
* @inheritDoc
*/
_iResolveDependency(resourceDependency: ResourceDependency): void;
/**
* @inheritDoc
*/
_iResolveDependencyFailure(resourceDependency: ResourceDependency): void;
/**
* @inheritDoc
*/
_pProceedParsing(): boolean;
_pStartParsing(frameLimit: number): void;
private parseMaterial;
private parseTexture;
private parseVertexList;
private parseFaceList;
private parseSmoothingGroups;
private parseUVList;
private parseFaceMaterialList;
private parseObjectAnimation;
private constructObject;
private prepareData;
private applySmoothGroups;
private finalizeCurrentMaterial;
private readNulTermstring;
private readTransform;
private readColor;
}
/**
*
*/
export declare class FaceVO {
a: number;
b: number;
c: number;
smoothGroup: number;
}
/**
*
*/
export declare class MaterialVO {
name: string;
ambientColor: number;
diffuseColor: number;
specularColor: number;
twoSided: boolean;
colorMap: TextureVO;
specularMap: TextureVO;
material: IMaterial;
}
/**
*
*/
export declare class ObjectVO {
name: string;
type: string;
pivotX: number;
pivotY: number;
pivotZ: number;
transform: Float32Array;
verts: Array;
indices: Array;
uvs: Array;
materialFaces: Object;
materials: Array;
smoothingGroups: Array;
}
/**
*
*/
export declare class TextureVO {
url: string;
texture: ImageTexture2D;
}
/**
*
*/
export declare class VertexVO {
x: number;
y: number;
z: number;
u: number;
v: number;
normal: Vector3D;
tangent: Vector3D;
}
//# sourceMappingURL=Max3DSParser.d.ts.map