Source code

Revision control

Copy as Markdown

Other Tools

'use strict';
// This file introduces constants used to mock fake world for the purposes of hit test.
// Generates FakeXRWorldInit dictionary with given dimensions.
// The generated fake world will have floor and front wall treated as planes,
// side walls treated as meshes, and ceiling treated as points.
// width - X axis, in meters
// height - Y axis, in meters
// length - Z axis, in meters
function createFakeWorld(
width, height, length,
front_wall_and_floor_type = "plane",
side_walls_type = "mesh",
ceiling_type = "point") {
// Vertices:
const BOTTOM_LEFT_FRONT = { x: -width/2, y: 0, z: -length/2, w: 1};
const BOTTOM_RIGHT_FRONT = { x: width/2, y: 0, z: -length/2, w: 1};
const TOP_LEFT_FRONT = { x: -width/2, y: height, z: -length/2, w: 1};
const TOP_RIGHT_FRONT = { x: width/2, y: height, z: -length/2, w: 1};
const BOTTOM_LEFT_BACK = { x: -width/2, y: 0, z: length/2, w: 1};
const BOTTOM_RIGHT_BACK = { x: width/2, y: 0, z: length/2, w: 1};
const TOP_LEFT_BACK = { x: -width/2, y: height, z: length/2, w: 1};
const TOP_RIGHT_BACK = { x: width/2, y: height, z: length/2, w: 1};
// Faces:
const FRONT_WALL_AND_FLOOR_FACES = [
// Front wall:
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT] },
{ vertices: [BOTTOM_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_LEFT_FRONT] },
// Floor:
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK] },
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, BOTTOM_RIGHT_BACK] },
];
const CEILING_FACES = [
// Ceiling:
{ vertices: [TOP_LEFT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
{ vertices: [TOP_LEFT_FRONT, TOP_LEFT_BACK, TOP_RIGHT_BACK] },
];
const SIDE_WALLS_FACES = [
// Left:
{ vertices: [BOTTOM_LEFT_FRONT, TOP_LEFT_FRONT, TOP_LEFT_BACK] },
{ vertices: [BOTTOM_LEFT_FRONT, BOTTOM_LEFT_BACK, TOP_LEFT_BACK] },
// Right:
{ vertices: [BOTTOM_RIGHT_FRONT, TOP_RIGHT_FRONT, TOP_RIGHT_BACK] },
{ vertices: [BOTTOM_RIGHT_FRONT, BOTTOM_RIGHT_BACK, TOP_RIGHT_BACK] },
];
// Regions:
const FRONT_WALL_AND_FLOOR_REGION = {
type: front_wall_and_floor_type,
faces: FRONT_WALL_AND_FLOOR_FACES,
};
const SIDE_WALLS_REGION = {
type: side_walls_type,
faces: SIDE_WALLS_FACES,
};
const CEILING_REGION = {
type: ceiling_type,
faces: CEILING_FACES,
};
return {
hitTestRegions : [
FRONT_WALL_AND_FLOOR_REGION,
SIDE_WALLS_REGION,
CEILING_REGION,
]
};
}
const VALID_FAKE_WORLD = createFakeWorld(5.0, 2.0, 5.0);