You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.1 KiB
32 lines
1.1 KiB
4 years ago
|
import { Item, UP_VECTOR } from './item.js';
|
||
|
import { Vector2, Vector3 } from 'three';
|
||
|
import { Utils } from '../core/utils.js';
|
||
|
|
||
|
/**
|
||
|
* A Floor Item is an entity to be placed related to a floor.
|
||
|
*/
|
||
|
export class FloorItem extends Item {
|
||
|
constructor(model, metadata, id) {
|
||
|
super(model, metadata, id);
|
||
|
this._freePosition = false;
|
||
|
this.__customIntersectionPlanes = this.__model.floorplan.floorPlanesForIntersection;
|
||
|
}
|
||
|
|
||
|
snapToPoint(point, normal, intersectingPlane, toWall, toFloor, toRoof) {
|
||
|
let normal2d = new Vector2(normal.x, normal.z);
|
||
|
let angle = Utils.angle(UP_VECTOR, normal2d);
|
||
|
this.rotation = new Vector3(0, angle, 0);
|
||
|
point.y = this.halfSize.y + 5;
|
||
|
this.position = point;
|
||
|
}
|
||
|
|
||
|
// /** */
|
||
|
// placeInRoom() {
|
||
|
// if (!this.position_set) {
|
||
|
// var center = this.__model.floorplan.getCenter();
|
||
|
// this.position.x = center.x;
|
||
|
// this.position.z = center.z;
|
||
|
// this.position.y = 0.5 * (this.geometry.boundingBox.max.y - this.geometry.boundingBox.min.y);
|
||
|
// }
|
||
|
// }
|
||
|
}
|