@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
117 lines • 6.77 kB
JavaScript
// https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.pdf
import { assertType } from "./guards.js";
export function isTgdFormatGltfCameraPerspective(data) {
return data.type === "perspective";
}
export function isTgdFormatGltfCameraOrthographic(data) {
return data.type === "orthographic";
}
export function assertTgdFormatGltf(data) {
assertType(data, [
"partial",
{
accessors: [
"array",
{
bufferView: ["?", "number"],
byteOffset: ["?", "number"],
componentType: "number",
normalized: ["?", "boolean"],
count: "number",
type: "string",
name: ["?", "string"],
},
],
meshes: [
"array",
{
name: "string",
primitives: [
"array",
{
attributes: ["map", "number"],
indices: ["?", "number"],
mode: ["?", "number"],
material: ["?", "number"],
},
],
},
],
images: [
"array",
[
"partial",
{
bufferView: "number",
mimeType: "string",
name: "string",
uri: "string",
},
],
],
bufferViews: [
"array",
{
buffer: "number",
byteLength: "number",
byteOffset: ["?", "number"],
byteStride: ["?", "number"],
target: ["?", "number"],
},
],
materials: ["array", typeMaterial],
samplers: [
"array",
[
"partial",
{
minFilter: "number",
magFilter: "number",
wrapS: "number",
wrapT: "number",
name: "string",
},
],
],
textures: [
"array",
[
"partial",
{
sampler: "number",
source: "number",
name: "string",
},
],
],
},
]);
}
const typeTextureInfo = {
index: "number",
texCoord: ["?", "number"],
};
const typePbrMetallicRoughness = [
"partial",
{
baseColorFactor: ["array(4)", "number"],
baseColorTexture: typeTextureInfo,
metallicFactor: "number",
roughnessFactor: "number",
metalicRoughnessTexture: typeTextureInfo,
},
];
const typeMaterial = [
"partial",
{
name: "string",
pbrMetallicRoughness: typePbrMetallicRoughness,
normalTexture: Object.assign(Object.assign({}, typeTextureInfo), { scale: ["?", "number"] }),
occlusionTexture: Object.assign(Object.assign({}, typeTextureInfo), { strength: ["?", "number"] }),
emissiveTexture: typeTextureInfo,
alphaMode: ["literal", "OPAQUE", "MASK", "BLEND"],
alphaCutoff: "number",
doubleSided: "boolean",
},
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJEQUEyRDtBQUUzRCxPQUFPLEVBQVcsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFtS3ZELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsSUFBeUI7SUFFekIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQTtBQUN0QyxDQUFDO0FBZUQsTUFBTSxVQUFVLGlDQUFpQyxDQUM3QyxJQUF5QjtJQUV6QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFBO0FBQ3ZDLENBQUM7QUFnREQsTUFBTSxVQUFVLG1CQUFtQixDQUMvQixJQUFhO0lBRWIsVUFBVSxDQUFDLElBQUksRUFBRTtRQUNiLFNBQVM7UUFDVDtZQUNJLFNBQVMsRUFBRTtnQkFDUCxPQUFPO2dCQUNQO29CQUNJLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7b0JBQzNCLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7b0JBQzNCLGFBQWEsRUFBRSxRQUFRO29CQUN2QixVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO29CQUM1QixLQUFLLEVBQUUsUUFBUTtvQkFDZixJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDO2lCQUN4QjthQUNKO1lBQ0QsTUFBTSxFQUFFO2dCQUNKLE9BQU87Z0JBQ1A7b0JBQ0ksSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLE9BQU87d0JBQ1A7NEJBQ0ksVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQzs0QkFDN0IsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQzs0QkFDeEIsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQzs0QkFDckIsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQzt5QkFDNUI7cUJBQ0o7aUJBQ0o7YUFDSjtZQUNELE1BQU0sRUFBRTtnQkFDSixPQUFPO2dCQUNQO29CQUNJLFNBQVM7b0JBQ1Q7d0JBQ0ksVUFBVSxFQUFFLFFBQVE7d0JBQ3BCLFFBQVEsRUFBRSxRQUFRO3dCQUNsQixJQUFJLEVBQUUsUUFBUTt3QkFDZCxHQUFHLEVBQUUsUUFBUTtxQkFDaEI7aUJBQ0o7YUFDSjtZQUNELFdBQVcsRUFBRTtnQkFDVCxPQUFPO2dCQUNQO29CQUNJLE1BQU0sRUFBRSxRQUFRO29CQUNoQixVQUFVLEVBQUUsUUFBUTtvQkFDcEIsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztvQkFDM0IsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztvQkFDM0IsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztpQkFDMUI7YUFDSjtZQUNELFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7WUFDbEMsUUFBUSxFQUFFO2dCQUNOLE9BQU87Z0JBQ1A7b0JBQ0ksU0FBUztvQkFDVDt3QkFDSSxTQUFTLEVBQUUsUUFBUTt3QkFDbkIsU0FBUyxFQUFFLFFBQVE7d0JBQ25CLEtBQUssRUFBRSxRQUFRO3dCQUNmLEtBQUssRUFBRSxRQUFRO3dCQUNmLElBQUksRUFBRSxRQUFRO3FCQUNqQjtpQkFDSjthQUNKO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLE9BQU87Z0JBQ1A7b0JBQ0ksU0FBUztvQkFDVDt3QkFDSSxPQUFPLEVBQUUsUUFBUTt3QkFDakIsTUFBTSxFQUFFLFFBQVE7d0JBQ2hCLElBQUksRUFBRSxRQUFRO3FCQUNqQjtpQkFDSjthQUNKO1NBQ0o7S0FDSixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxlQUFlLEdBQVk7SUFDN0IsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDO0NBQzVCLENBQUE7QUFFRCxNQUFNLHdCQUF3QixHQUFZO0lBQ3RDLFNBQVM7SUFDVDtRQUNJLGVBQWUsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7UUFDdkMsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxjQUFjLEVBQUUsUUFBUTtRQUN4QixlQUFlLEVBQUUsUUFBUTtRQUN6Qix1QkFBdUIsRUFBRSxlQUFlO0tBQzNDO0NBQ0osQ0FBQTtBQUVELE1BQU0sWUFBWSxHQUFZO0lBQzFCLFNBQVM7SUFDVDtRQUNJLElBQUksRUFBRSxRQUFRO1FBQ2Qsb0JBQW9CLEVBQUUsd0JBQXdCO1FBQzlDLGFBQWEsa0NBQ04sZUFBZSxLQUNsQixLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQ3pCO1FBQ0QsZ0JBQWdCLGtDQUNULGVBQWUsS0FDbEIsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUM1QjtRQUNELGVBQWUsRUFBRSxlQUFlO1FBQ2hDLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNqRCxXQUFXLEVBQUUsUUFBUTtRQUNyQixXQUFXLEVBQUUsU0FBUztLQUN6QjtDQUNKLENBQUEifQ==