Initial import of NODEDC BIM Viewer
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
import {Controller} from "../Controller.js";
|
||||
|
||||
/** @private */
|
||||
class FirstPersonMode extends Controller {
|
||||
|
||||
constructor(parent, cfg) {
|
||||
|
||||
super(parent, cfg);
|
||||
|
||||
if (!cfg.buttonElement) {
|
||||
throw "Missing config: buttonElement";
|
||||
}
|
||||
|
||||
const buttonElement = cfg.buttonElement;
|
||||
const cameraControl = this.viewer.cameraControl;
|
||||
const cameraControlNavModeMediator = cfg.cameraControlNavModeMediator;
|
||||
|
||||
cameraControl.navMode = "orbit";
|
||||
cameraControl.followPointer = true;
|
||||
|
||||
this.on("enabled", (enabled) => {
|
||||
if (!enabled) {
|
||||
buttonElement.classList.add("disabled");
|
||||
} else {
|
||||
buttonElement.classList.remove("disabled");
|
||||
}
|
||||
});
|
||||
|
||||
this.on("active", (active) => {
|
||||
if (active) {
|
||||
buttonElement.classList.add("active");
|
||||
} else {
|
||||
buttonElement.classList.remove("active");
|
||||
}
|
||||
});
|
||||
|
||||
this.on("active", (active) => {
|
||||
cameraControlNavModeMediator.setFirstPersonModeActive(active);
|
||||
if (active) {
|
||||
cameraControl.followPointer = true;
|
||||
cameraControl.pivoting = false;
|
||||
} else {
|
||||
cameraControl.pivoting = true;
|
||||
}
|
||||
});
|
||||
|
||||
buttonElement.addEventListener("click", (event) => {
|
||||
if (this.getEnabled()) {
|
||||
const active = this.getActive();
|
||||
this.setActive(!active);
|
||||
}
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
this.bimViewer.on("reset", ()=>{
|
||||
this.setActive(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export {FirstPersonMode};
|
||||
Reference in New Issue
Block a user