Source: package/mesh/positioned_mesh.js

import { Vector3, Quaternion, Group, Mesh } from '../../../node_modules/three/build/three.module.js';
import { Reporter } from '../../reporter/reporter.js';
import { checkPropTypes } from '../../lib.js';
import { WrappedMesh } from './wrapped_mesh.js';
import { PositionedComponent } from '../component/positioned_component.js';




/**
 * Mesh that is embedded in a 3D structure and therefore needs spatial information
 */


class PositionedMesh extends PositionedComponent {

    /**
     * @param {Reporter} reporter
     * @param {Object} settings
     * @param {UUID} [settings.id]
     * @param {Vector3} settings.position
     * @param {Quaternion} settings.quaternion
     * @param {WrappedMesh} settings.component - the mesh to situate
     * @param {Boolean} [settings.assignable = false]
     */

    constructor( reporter, settings ) {

        super(
            reporter,
            settings
        );

        checkPropTypes(
            settings,
            {
                component: WrappedMesh
            },
            {}
        );
    }

    static _exportName = {
        singular: 'positionedMesh',
        plural: 'positionedMeshes'
    };


    /** @type {ExportLevel} */

    static _exportLevel = 'inline';

    
    // /** 
    //  * The (assignable) component that a material should be assigned to
    //  * to change this positioned mesh's appearance.
    //  * Value set by block instance.
    //  * @type {PositionedComponent|BlockInstance|Configuration} 
    //  */

    // nearestAssignable;

};

export { PositionedMesh  };