auto-git:
[unlink] tests/domain/box-brush-face-editing.command.test.js [unlink] tests/domain/build-runtime-scene.test.js [unlink] tests/domain/create-box-brush.command.test.js [unlink] tests/domain/create-empty-scene-document.test.js [unlink] tests/domain/duplicate-selection.command.test.js [unlink] tests/domain/editor-store.test.js [unlink] tests/domain/entity.command.test.js [unlink] tests/domain/interaction-links.validation.test.js [unlink] tests/domain/model-import.test.js [unlink] tests/domain/model-instance.command.test.js [unlink] tests/domain/player-start.command.test.js [unlink] tests/domain/rapier-collision-world.test.js [unlink] tests/domain/runtime-audio-system.test.js [unlink] tests/domain/runtime-interaction-system.test.js [unlink] tests/domain/runtime-scene-validation.test.js [unlink] tests/domain/scene-document-validation.test.js [unlink] tests/domain/transform-session.command.test.js [unlink] tests/domain/world-settings.command.test.js [unlink] tests/domain/world-settings.test.js [unlink] tests/e2e/app-smoke.e2e.js [unlink] tests/e2e/box-brush-authoring.e2e.js [unlink] tests/e2e/entities-foundation.e2e.js [unlink] tests/e2e/face-material-authoring.e2e.js [unlink] tests/e2e/first-room-workflow.e2e.js [unlink] tests/e2e/import-draco-model-asset.e2e.js [unlink] tests/e2e/import-external-model-asset.e2e.js [unlink] tests/e2e/import-model-asset.e2e.js [unlink] tests/e2e/local-lights-and-background.e2e.js [unlink] tests/e2e/orthographic-views.e2e.js [unlink] tests/e2e/runner-v1.e2e.js [unlink] tests/e2e/runtime-click-interaction.e2e.js [unlink] tests/e2e/runtime-trigger-teleport.e2e.js [unlink] tests/e2e/viewport-quad-layout.e2e.js [unlink] tests/e2e/viewport-test-helpers.js [unlink] tests/e2e/whitebox-component-selection.e2e.js [unlink] tests/e2e/world-environment.e2e.js [unlink] tests/geometry/box-brush-geometry.test.js [unlink] tests/geometry/box-face-uvs.test.js [unlink] tests/geometry/model-instance-collider-generation.test.js [unlink] tests/helpers/model-collider-fixtures.js [unlink] tests/serialization/local-draft-storage.test.js [unlink] tests/serialization/project-asset-storage.test.js [unlink] tests/serialization/scene-document-json.test.js [unlink] tests/setup/vitest.setup.js [unlink] tests/unit/audio-assets.test.js [unlink] tests/unit/entity-instances.test.js [unlink] tests/unit/package-scripts.test.js [unlink] tests/unit/transform-foundation.integration.test.js [unlink] tests/unit/viewport-canvas.test.js [unlink] tests/unit/viewport-entity-markers.test.js [unlink] tests/unit/viewport-focus.test.js [unlink] tests/unit/viewport-layout.test.js [unlink] tests/unit/viewport-view-modes.test.js
This commit is contained in:
@@ -1,84 +0,0 @@
|
||||
import { Box3, Group, Mesh, MeshBasicMaterial } from "three";
|
||||
import { createProjectAssetStorageKey } from "../../src/assets/project-assets";
|
||||
function countMeshes(group) {
|
||||
let count = 0;
|
||||
group.traverse((object) => {
|
||||
if (object.isMesh === true) {
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
return count;
|
||||
}
|
||||
function countNodes(group) {
|
||||
let count = 0;
|
||||
group.traverse(() => {
|
||||
count += 1;
|
||||
});
|
||||
return count;
|
||||
}
|
||||
function createBoundingBox(group) {
|
||||
const bounds = new Box3().setFromObject(group);
|
||||
if (bounds.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
min: {
|
||||
x: bounds.min.x,
|
||||
y: bounds.min.y,
|
||||
z: bounds.min.z
|
||||
},
|
||||
max: {
|
||||
x: bounds.max.x,
|
||||
y: bounds.max.y,
|
||||
z: bounds.max.z
|
||||
},
|
||||
size: {
|
||||
x: bounds.max.x - bounds.min.x,
|
||||
y: bounds.max.y - bounds.min.y,
|
||||
z: bounds.max.z - bounds.min.z
|
||||
}
|
||||
};
|
||||
}
|
||||
export function createFixtureModelAssetRecord(id, template, sourceName = `${id}.glb`) {
|
||||
template.updateMatrixWorld(true);
|
||||
return {
|
||||
id,
|
||||
kind: "model",
|
||||
sourceName,
|
||||
mimeType: "model/gltf-binary",
|
||||
storageKey: createProjectAssetStorageKey(id),
|
||||
byteLength: 128,
|
||||
metadata: {
|
||||
kind: "model",
|
||||
format: "glb",
|
||||
sceneName: sourceName,
|
||||
nodeCount: countNodes(template),
|
||||
meshCount: countMeshes(template),
|
||||
materialNames: [],
|
||||
textureNames: [],
|
||||
animationNames: [],
|
||||
boundingBox: createBoundingBox(template),
|
||||
warnings: []
|
||||
}
|
||||
};
|
||||
}
|
||||
export function createFixtureLoadedModelAsset(asset, template) {
|
||||
template.updateMatrixWorld(true);
|
||||
return {
|
||||
assetId: asset.id,
|
||||
storageKey: asset.storageKey,
|
||||
metadata: asset.metadata,
|
||||
template,
|
||||
animations: []
|
||||
};
|
||||
}
|
||||
export function createFixtureLoadedModelAssetFromGeometry(assetId, geometry) {
|
||||
const template = new Group();
|
||||
template.add(new Mesh(geometry, new MeshBasicMaterial()));
|
||||
template.updateMatrixWorld(true);
|
||||
const asset = createFixtureModelAssetRecord(assetId, template);
|
||||
return {
|
||||
asset,
|
||||
loadedAsset: createFixtureLoadedModelAsset(asset, template)
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user