UNPKG

gtajesgenga-ami.js

Version:

1. [Hello AMI](#hello-ami) 2. [Features](#features) 3. [Usage](#yarn) 4. [Developer corner](#developer-corner) 5. [Change log](#change-log) 6. [Credits](#credits) 7. [Citations](#citations)

124 lines (115 loc) 2.96 kB
/** * Validate basic structures. * * @example * //Returns true * VJS.Core.Validators.matrix4(new THREE.Matrix4()); * * //Returns false * VJS.Core.Validators.matrix4(new THREE.Vector3()); * * @module core/validators */ export default class Validators { /** * Validates a matrix as a THREEJS.Matrix4 * link * @param {Object} objectToTest - The object to be tested. * @return {boolean} True if valid Matrix4, false if NOT. */ static matrix4(objectToTest) { if ( !( objectToTest !== null && typeof objectToTest !== 'undefined' && objectToTest.hasOwnProperty('elements') && objectToTest.elements.length === 16 && typeof objectToTest.identity === 'function' && typeof objectToTest.copy === 'function' && typeof objectToTest.determinant === 'function' ) ) { return false; } return true; } /** * Validates a vector as a THREEJS.Vector3 * @param {Object} objectToTest - The object to be tested. * @return {boolean} True if valid Vector3, false if NOT. */ static vector3(objectToTest) { if ( !( objectToTest !== null && typeof objectToTest !== 'undefined' && objectToTest.hasOwnProperty('x') && objectToTest.hasOwnProperty('y') && objectToTest.hasOwnProperty('z') && !objectToTest.hasOwnProperty('w') ) ) { return false; } return true; } /** * Validates a box. * * @example * // a box is defined as * let box = { * center: THREE.Vector3, * halfDimensions: THREE.Vector3 * } * * @param {Object} objectToTest - The object to be tested. * @return {boolean} True if valid box, false if NOT. */ static box(objectToTest) { if ( !( objectToTest !== null && typeof objectToTest !== 'undefined' && objectToTest.hasOwnProperty('center') && this.vector3(objectToTest.center) && objectToTest.hasOwnProperty('halfDimensions') && this.vector3(objectToTest.halfDimensions) && objectToTest.halfDimensions.x >= 0 && objectToTest.halfDimensions.y >= 0 && objectToTest.halfDimensions.z >= 0 ) ) { return false; } return true; } /** * Validates a ray. * * @example * // a ray is defined as * let ray = { * postion: THREE.Vector3, * direction: THREE.Vector3 * } * * @param {Object} objectToTest - The object to be tested. * @return {boolean} True if valid ray, false if NOT. */ static ray(objectToTest) { if ( !( objectToTest !== null && typeof objectToTest !== 'undefined' && objectToTest.hasOwnProperty('position') && this.vector3(objectToTest.position) && objectToTest.hasOwnProperty('direction') && this.vector3(objectToTest.direction) ) ) { return false; } return true; } }