UNPKG

mdx-m3-viewer

Version:

A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.

61 lines (50 loc) 2.13 kB
import Model from '../../parsers/mdlx/model'; import SanityTestData from './data'; import { testObjects, cleanNode } from './utils'; import { testHeader, testSequences, testGlobalSequence, testTextures, testMaterials, testGeoset, testGeosetAnimation, testBones, testLight, testAttachment, testPivotPoints, testParticleEmitter, testParticleEmitter2, testParticleEmitterPopcorn, testRibbonEmitter, testEventObject, testCamera, testFaceEffect, testBindPose } from './testers'; /** * Run a sanity test on the model and return the results. */ export default function sanityTest(model: Model) { let data = new SanityTestData(model); // Run the tests. testHeader(data); testSequences(data); testObjects(data, model.globalSequences, testGlobalSequence); testTextures(data); testMaterials(data); testObjects(data, model.textureAnimations); testObjects(data, model.geosets, testGeoset) testObjects(data, model.geosetAnimations, testGeosetAnimation); testBones(data); testObjects(data, model.lights, testLight); testObjects(data, model.helpers); testObjects(data, model.attachments, testAttachment); testPivotPoints(data); testObjects(data, model.particleEmitters, testParticleEmitter); testObjects(data, model.particleEmitters2, testParticleEmitter2); if (model.version > 800) { testObjects(data, model.particleEmittersPopcorn, testParticleEmitterPopcorn); } testObjects(data, model.ribbonEmitters, testRibbonEmitter); testObjects(data, model.eventObjects, testEventObject); testObjects(data, model.cameras, testCamera); testObjects(data, model.collisionShapes); if (model.version > 800) { testFaceEffect(data); testBindPose(data); } let root = data.stack[0]; // Remove nodes that passed the test. cleanNode(root) let { nodes, errors, severe, warnings, unused } = root; // Add top-level objects that are not used. for (let node of nodes) { if (node.type === 'node') { if (node.uses === 0) { unused += 1; } } } return { nodes, errors, severe, warnings, unused }; }