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.
537 lines
21 KiB
537 lines
21 KiB
4 years ago
|
import JSZip from "jszip";
|
||
|
import FileSaver from 'file-saver';
|
||
|
import FPS from 'fps-now';
|
||
|
|
||
|
import { BlueprintJS } from './scripts/blueprint.js';
|
||
|
import { EVENT_LOADED, EVENT_NOTHING_2D_SELECTED, EVENT_CORNER_2D_CLICKED, EVENT_WALL_2D_CLICKED, EVENT_ROOM_2D_CLICKED, EVENT_WALL_CLICKED, EVENT_ROOM_CLICKED, EVENT_NO_ITEM_SELECTED, EVENT_ITEM_SELECTED, EVENT_GLTF_READY } from './scripts/core/events.js';
|
||
|
import { Configuration, configDimUnit, viewBounds } from './scripts/core/configuration.js';
|
||
|
import { dimMeter, TEXTURE_NO_PREVIEW } from './scripts/core/constants.js';
|
||
|
import QuickSettings from 'quicksettings';
|
||
|
|
||
|
import { Dimensioning } from './scripts/core/dimensioning.js';
|
||
|
import { ParametricsInterface } from './scripts/ParametricsInterface.js';
|
||
|
|
||
|
import * as floor_textures_json from './floor_textures.json';
|
||
|
import * as wall_textures_json from './wall_textures.json';
|
||
|
// import * as default_room_json from './parametrics_items.json';
|
||
|
// import * as default_room_json from './empty_room.json';
|
||
|
import * as default_room_json from './designWithBoundary.json';
|
||
|
// import * as default_room_json from './designWithoutBoundary.json';
|
||
|
// import * as default_room_json from './LShape.json';
|
||
|
|
||
|
const fps = FPS.of({x: 0, y: 0});
|
||
|
fps.start();
|
||
|
|
||
|
|
||
|
let default_room = JSON.stringify(default_room_json);
|
||
|
let startY = 0;
|
||
|
let panelWidths = 200;
|
||
|
let uxInterfaceHeight = 450;
|
||
|
let subPanelsHeight = 460;
|
||
|
let floor_textures = floor_textures_json['default'];
|
||
|
let floor_texture_keys = Object.keys(floor_textures);
|
||
|
|
||
|
let wall_textures = wall_textures_json['default'];
|
||
|
let wall_texture_keys = Object.keys(wall_textures);
|
||
|
|
||
|
let blueprint3d = null;
|
||
|
|
||
|
let app_parent = document.getElementById('bp3d-js-app');
|
||
|
|
||
|
let configurationHelper = null;
|
||
|
let floorplanningHelper = null;
|
||
|
let roomplanningHelper = null;
|
||
|
|
||
|
|
||
|
let settingsViewer2d = null;
|
||
|
let settingsSelectedCorner = null;
|
||
|
let settingsSelectedWall = null;
|
||
|
let settingsSelectedRoom = null;
|
||
|
|
||
|
let settingsSelectedRoom3D = null;
|
||
|
let settingsSelectedWall3D = null;
|
||
|
|
||
|
let settingsViewer3d = null;
|
||
|
let uxInterface = null;
|
||
|
|
||
|
let parametricContextInterface = null;
|
||
|
let doorsData = {
|
||
|
'Door Type 1': { src: 'assets/doors/DoorType1.png', type: 1 },
|
||
|
'Door Type 2': { src: 'assets/doors/DoorType2.png', type: 2 },
|
||
|
'Door Type 3': { src: 'assets/doors/DoorType3.png', type: 3 },
|
||
|
'Door Type 4': { src: 'assets/doors/DoorType4.png', type: 4 },
|
||
|
'Door Type 5': { src: 'assets/doors/DoorType5.png', type: 5 },
|
||
|
'Door Type 6': { src: 'assets/doors/DoorType6.png', type: 6 },
|
||
|
};
|
||
|
let doorTypes = Object.keys(doorsData);
|
||
|
let opts = {
|
||
|
viewer2d: {
|
||
|
id: 'bp3djs-viewer2d',
|
||
|
viewer2dOptions: {
|
||
|
'corner-radius': 12.5,
|
||
|
'boundary-point-radius': 5.0,
|
||
|
'boundary-line-thickness': 2.0,
|
||
|
'boundary-point-color':'#030303',
|
||
|
'boundary-line-color':'#090909',
|
||
|
pannable: true,
|
||
|
zoomable: true,
|
||
|
scale: false,
|
||
|
rotate: true,
|
||
|
translate: true,
|
||
|
dimlinecolor: '#3E0000',
|
||
|
dimarrowcolor: '#FF0000',
|
||
|
dimtextcolor: '#000000',
|
||
|
pixiAppOptions: {
|
||
|
resolution: 1,
|
||
|
},
|
||
|
pixiViewportOptions: {
|
||
|
passiveWheel: false,
|
||
|
}
|
||
|
},
|
||
|
},
|
||
|
viewer3d: {
|
||
|
id: 'bp3djs-viewer3d',
|
||
|
viewer3dOptions:{
|
||
|
occludedWalls: false,
|
||
|
occludedRoofs: false
|
||
|
}
|
||
|
},
|
||
|
textureDir: "models/textures/",
|
||
|
widget: false,
|
||
|
resize: true,
|
||
|
};
|
||
|
|
||
|
function selectFloorTexture(data) {
|
||
|
if (!data.index) {
|
||
|
data = settingsSelectedRoom3D.getValue('Floor Textures');
|
||
|
}
|
||
|
let floor_texture_pack = floor_textures[data.value];
|
||
|
if(floor_texture_pack.colormap){
|
||
|
settingsSelectedRoom3D.setValue('Floor Texture:', floor_texture_pack.colormap);
|
||
|
}
|
||
|
else{
|
||
|
settingsSelectedRoom3D.setValue('Floor Texture:', TEXTURE_NO_PREVIEW);
|
||
|
}
|
||
|
roomplanningHelper.roomTexturePack = floor_texture_pack;
|
||
|
}
|
||
|
|
||
|
function selectWallTexture(data) {
|
||
|
if (!data.index) {
|
||
|
if (settingsSelectedWall3D._hidden && !settingsSelectedRoom3D._hidden) {
|
||
|
data = settingsSelectedRoom3D.getValue('All Wall Textures');
|
||
|
} else {
|
||
|
data = settingsSelectedWall3D.getValue('Wall Textures');
|
||
|
}
|
||
|
|
||
|
}
|
||
|
let wall_texture_pack = wall_textures[data.value];
|
||
|
let colormap = wall_texture_pack.colormap;
|
||
|
if (settingsSelectedWall3D._hidden && !settingsSelectedRoom3D._hidden) {
|
||
|
if(colormap){
|
||
|
settingsSelectedRoom3D.setValue('All Wall Texture:', colormap);
|
||
|
}
|
||
|
else{
|
||
|
settingsSelectedRoom3D.setValue('All Wall Texture:', TEXTURE_NO_PREVIEW);
|
||
|
}
|
||
|
roomplanningHelper.roomWallsTexturePack = wall_texture_pack;
|
||
|
} else {
|
||
|
if(colormap){
|
||
|
settingsSelectedWall3D.setValue('Wall Texture:', wall_texture_pack.colormap);
|
||
|
}
|
||
|
else{
|
||
|
settingsSelectedWall3D.setValue('Wall Texture:', TEXTURE_NO_PREVIEW);
|
||
|
}
|
||
|
roomplanningHelper.wallTexturePack = wall_texture_pack;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function selectFloorTextureColor(data) {
|
||
|
roomplanningHelper.setRoomFloorColor(data);
|
||
|
}
|
||
|
|
||
|
function selectWallTextureColor(data) {
|
||
|
|
||
|
if (settingsSelectedWall3D._hidden && !settingsSelectedRoom3D._hidden) {
|
||
|
roomplanningHelper.setRoomWallsTextureColor(data);
|
||
|
}
|
||
|
else {
|
||
|
roomplanningHelper.setWallColor(data);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function selectDoorForWall(data) {
|
||
|
if (!data.index) {
|
||
|
data = settingsSelectedWall3D.getValue('Select Door');
|
||
|
}
|
||
|
let selectedDoor = doorsData[data.value];
|
||
|
settingsSelectedWall3D.setValue('Door Preview:', selectedDoor.src);
|
||
|
}
|
||
|
|
||
|
function addDoorForWall() {
|
||
|
let data = settingsSelectedWall3D.getValue('Select Door');
|
||
|
let selectedDoor = doorsData[data.value];
|
||
|
roomplanningHelper.addParametricDoorToCurrentWall(selectedDoor.type);
|
||
|
}
|
||
|
|
||
|
function switchViewer() {
|
||
|
blueprint3d.switchView();
|
||
|
if (blueprint3d.currentView === 2) {
|
||
|
uxInterface.setValue("Current View", "Floor Planning");
|
||
|
settingsViewer3d.hide();
|
||
|
settingsViewer2d.show();
|
||
|
|
||
|
settingsSelectedWall3D.hide();
|
||
|
settingsSelectedRoom3D.hide();
|
||
|
if (parametricContextInterface) {
|
||
|
parametricContextInterface.destroy();
|
||
|
parametricContextInterface = null;
|
||
|
}
|
||
|
|
||
|
} else if (blueprint3d.currentView === 3) {
|
||
|
uxInterface.setValue("Current View", "Room Planning");
|
||
|
settingsViewer2d.hide();
|
||
|
settingsSelectedCorner.hide();
|
||
|
settingsSelectedWall.hide();
|
||
|
settingsSelectedRoom.hide();
|
||
|
settingsViewer3d.show();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function switchViewer2DToDraw() {
|
||
|
blueprint3d.setViewer2DModeToDraw();
|
||
|
}
|
||
|
|
||
|
function switchViewer2DToMove() {
|
||
|
blueprint3d.setViewer2DModeToMove();
|
||
|
}
|
||
|
|
||
|
function switchViewer2DToTransform() {
|
||
|
blueprint3d.switchViewer2DToTransform();
|
||
|
}
|
||
|
|
||
|
function loadBlueprint3DDesign(filedata) {
|
||
|
let reader = new FileReader();
|
||
|
reader.onload = function(event) {
|
||
|
let data = event.target.result;
|
||
|
blueprint3d.model.loadSerialized(data);
|
||
|
};
|
||
|
reader.readAsText(filedata);
|
||
|
}
|
||
|
|
||
|
function loadLockedBlueprint3DDesign(filedata) {
|
||
|
let reader = new FileReader();
|
||
|
reader.onload = function(event) {
|
||
|
let data = event.target.result;
|
||
|
blueprint3d.model.loadLockedSerialized(data);
|
||
|
};
|
||
|
reader.readAsText(filedata);
|
||
|
}
|
||
|
|
||
|
function saveBlueprint3DDesign() {
|
||
|
let data = blueprint3d.model.exportSerialized();
|
||
|
let a = window.document.createElement('a');
|
||
|
let blob = new Blob([data], { type: 'text' });
|
||
|
a.href = window.URL.createObjectURL(blob);
|
||
|
a.download = 'design.blueprint3d';
|
||
|
document.body.appendChild(a);
|
||
|
a.click();
|
||
|
document.body.removeChild(a);
|
||
|
}
|
||
|
|
||
|
function saveBlueprint3D() {
|
||
|
blueprint3d.roomplanner.exportSceneAsGTLF();
|
||
|
}
|
||
|
|
||
|
function exportDesignAsPackage() {
|
||
|
function getWallTextureImages(texobject, pre_image_paths) {
|
||
|
let image_paths = [];
|
||
|
if (!texobject) {
|
||
|
return image_paths;
|
||
|
}
|
||
|
if (texobject.normalmap && !pre_image_paths.includes(texobject.normalmap)) {
|
||
|
image_paths.push(texobject.normalmap);
|
||
|
}
|
||
|
if (texobject.colormap && !pre_image_paths.includes(texobject.colormap)) {
|
||
|
image_paths.push(texobject.colormap);
|
||
|
}
|
||
|
if (texobject.roughnessmap && !pre_image_paths.includes(texobject.roughnessmap)) {
|
||
|
image_paths.push(texobject.roughnessmap);
|
||
|
}
|
||
|
if (texobject.ambientmap && !pre_image_paths.includes(texobject.ambientmap)) {
|
||
|
image_paths.push(texobject.ambientmap);
|
||
|
}
|
||
|
if (texobject.bumpmap && !pre_image_paths.includes(texobject.bumpmap)) {
|
||
|
image_paths.push(texobject.bumpmap);
|
||
|
}
|
||
|
return image_paths;
|
||
|
}
|
||
|
|
||
|
let designFile = blueprint3d.model.exportSerialized();
|
||
|
let jsonDesignFile = JSON.parse(designFile);
|
||
|
let floorplan = jsonDesignFile.floorplan;
|
||
|
let items = jsonDesignFile.items;
|
||
|
let images = [];
|
||
|
let models = [];
|
||
|
let i = 0;
|
||
|
for (i = 0; i < floorplan.walls.length; i++) {
|
||
|
let wall = floorplan.walls[i];
|
||
|
images = images.concat(getWallTextureImages(wall.frontTexture, images));
|
||
|
images = images.concat(getWallTextureImages(wall.backTexture, images));
|
||
|
}
|
||
|
Object.values(floorplan.newFloorTextures).forEach((texturePack) => {
|
||
|
images = images.concat(getWallTextureImages(texturePack, images));
|
||
|
console.log("TEXTURE PACK ", texturePack);
|
||
|
});
|
||
|
// for (i = 0; i < floorplan.newFloorTextures.length; i++) {
|
||
|
// let roomTexture = floorplan.newFloorTextures[i];
|
||
|
// console.log(roomTexture);
|
||
|
|
||
|
// }
|
||
|
for (i = 0; i < items.length; i++) {
|
||
|
let item = items[i];
|
||
|
if (!item.isParametric && !models.includes(item.modelURL)) {
|
||
|
models.push(item.modelURL);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let fetched_image_files = [];
|
||
|
let fetched_model_files = [];
|
||
|
|
||
|
function writeZip() {
|
||
|
if (!fetched_image_files.length === images.length && !fetched_model_files.length === models.length) {
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let zip = new JSZip();
|
||
|
zip.file('design.blueprint3d', designFile);
|
||
|
|
||
|
//Adding the zip files from an url
|
||
|
//Taken from https://medium.com/@joshmarinacci/a-little-fun-with-zip-files-4058812abf92
|
||
|
for (i = 0; i < images.length; i++) {
|
||
|
let image_path = images[i];
|
||
|
const imageBlob = fetch(image_path).then(response => {
|
||
|
if (response.status === 200) {
|
||
|
return response.blob();
|
||
|
}
|
||
|
return Promise.reject(new Error(response.statusText));
|
||
|
});
|
||
|
zip.file(image_path, imageBlob); //, { base64: false }); //, { base64: true }
|
||
|
}
|
||
|
for (i = 0; i < models.length; i++) {
|
||
|
let model_path = models[i];
|
||
|
const gltfBlob = fetch(model_path).then(response => {
|
||
|
if (response.status === 200) {
|
||
|
return response.blob();
|
||
|
}
|
||
|
return Promise.reject(new Error(response.statusText));
|
||
|
});
|
||
|
zip.file(model_path, gltfBlob); //, { base64: false }); //, { base64: true }
|
||
|
}
|
||
|
zip.generateAsync({ type: "blob" }).then(function(content) {
|
||
|
FileSaver.saveAs(content, "YourBlueprintProject.zip");
|
||
|
});
|
||
|
|
||
|
// let a = window.document.createElement('a');
|
||
|
// let blob = new Blob([zip.toBuffer()], { type: 'octet/stream' });
|
||
|
// a.href = window.URL.createObjectURL(blob);
|
||
|
// a.download = 'YourBlueprintProject.zip';
|
||
|
// document.body.appendChild(a);
|
||
|
// a.click();
|
||
|
// document.body.removeChild(a);
|
||
|
}
|
||
|
|
||
|
// document.addEventListener('DOMContentLoaded', function() {
|
||
|
console.log('ON DOCUMENT READY ');
|
||
|
|
||
|
|
||
|
Configuration.setValue(viewBounds, 10000);//In CMS
|
||
|
|
||
|
blueprint3d = new BlueprintJS(opts);
|
||
|
Configuration.setValue(configDimUnit, dimMeter);
|
||
|
|
||
|
configurationHelper = blueprint3d.configurationHelper;
|
||
|
floorplanningHelper = blueprint3d.floorplanningHelper;
|
||
|
roomplanningHelper = blueprint3d.roomplanningHelper;
|
||
|
|
||
|
blueprint3d.model.addEventListener(EVENT_LOADED, function() { console.log('LOAD SERIALIZED JSON ::: '); });
|
||
|
blueprint3d.floorplanner.addFloorplanListener(EVENT_NOTHING_2D_SELECTED, function() {
|
||
|
settingsSelectedCorner.hide();
|
||
|
settingsSelectedWall.hide();
|
||
|
settingsSelectedRoom.hide();
|
||
|
settingsViewer2d.hideControl('Delete');
|
||
|
});
|
||
|
blueprint3d.floorplanner.addFloorplanListener(EVENT_CORNER_2D_CLICKED, function(evt) {
|
||
|
settingsSelectedCorner.show();
|
||
|
settingsSelectedWall.hide();
|
||
|
settingsSelectedRoom.hide();
|
||
|
settingsViewer2d.showControl('Delete');
|
||
|
settingsSelectedCorner.setValue('cornerElevation', Dimensioning.cmToMeasureRaw(evt.item.elevation));
|
||
|
});
|
||
|
blueprint3d.floorplanner.addFloorplanListener(EVENT_WALL_2D_CLICKED, function(evt) {
|
||
|
settingsSelectedCorner.hide();
|
||
|
settingsSelectedWall.show();
|
||
|
settingsSelectedRoom.hide();
|
||
|
settingsViewer2d.showControl('Delete');
|
||
|
settingsSelectedWall.setValue('wallThickness', Dimensioning.cmToMeasureRaw(evt.item.thickness));
|
||
|
});
|
||
|
blueprint3d.floorplanner.addFloorplanListener(EVENT_ROOM_2D_CLICKED, function(evt) {
|
||
|
settingsSelectedCorner.hide();
|
||
|
settingsSelectedWall.hide();
|
||
|
settingsSelectedRoom.show();
|
||
|
settingsSelectedRoom.setValue('roomName', evt.item.name);
|
||
|
});
|
||
|
|
||
|
blueprint3d.roomplanner.addRoomplanListener(EVENT_ITEM_SELECTED, function(evt) {
|
||
|
settingsSelectedWall3D.hide();
|
||
|
settingsSelectedRoom3D.hide();
|
||
|
let itemModel = evt.itemModel;
|
||
|
if (parametricContextInterface) {
|
||
|
parametricContextInterface.destroy();
|
||
|
parametricContextInterface = null;
|
||
|
}
|
||
|
if (itemModel.isParametric) {
|
||
|
parametricContextInterface = new ParametricsInterface(itemModel.parametricClass, blueprint3d.roomplanner);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
blueprint3d.roomplanner.addRoomplanListener(EVENT_NO_ITEM_SELECTED, function() {
|
||
|
settingsSelectedWall3D.hide();
|
||
|
settingsSelectedRoom3D.hide();
|
||
|
if (parametricContextInterface) {
|
||
|
parametricContextInterface.destroy();
|
||
|
parametricContextInterface = null;
|
||
|
}
|
||
|
});
|
||
|
blueprint3d.roomplanner.addRoomplanListener(EVENT_WALL_CLICKED, function(evt) {
|
||
|
settingsSelectedWall3D.show();
|
||
|
settingsSelectedRoom3D.hide();
|
||
|
if (parametricContextInterface) {
|
||
|
parametricContextInterface.destroy();
|
||
|
parametricContextInterface = null;
|
||
|
}
|
||
|
});
|
||
|
blueprint3d.roomplanner.addRoomplanListener(EVENT_ROOM_CLICKED, function(evt) {
|
||
|
settingsSelectedWall3D.hide();
|
||
|
settingsSelectedRoom3D.show();
|
||
|
if (parametricContextInterface) {
|
||
|
parametricContextInterface.destroy();
|
||
|
parametricContextInterface = null;
|
||
|
}
|
||
|
});
|
||
|
blueprint3d.roomplanner.addRoomplanListener(EVENT_GLTF_READY, function(evt) {
|
||
|
let data = evt.gltf;
|
||
|
let a = window.document.createElement('a');
|
||
|
let blob = new Blob([data], { type: 'text' });
|
||
|
a.href = window.URL.createObjectURL(blob);
|
||
|
a.download = 'design.gltf';
|
||
|
document.body.appendChild(a);
|
||
|
a.click();
|
||
|
document.body.removeChild(a);
|
||
|
});
|
||
|
|
||
|
// console.log(default_room);
|
||
|
blueprint3d.model.loadSerialized(default_room);
|
||
|
|
||
|
|
||
|
if (!opts.widget) {
|
||
|
uxInterface = QuickSettings.create(0, 0, 'BlueprintJS', app_parent);
|
||
|
|
||
|
settingsViewer2d = QuickSettings.create(0, 0, 'Viewer 2D', app_parent);
|
||
|
settingsSelectedCorner = QuickSettings.create(0, 0, 'Corner', app_parent);
|
||
|
settingsSelectedWall = QuickSettings.create(0, 0, 'Wall', app_parent);
|
||
|
settingsSelectedRoom = QuickSettings.create(0, 0, 'Room', app_parent);
|
||
|
|
||
|
settingsViewer3d = QuickSettings.create(0, 0, 'Viewer 3D', app_parent);
|
||
|
settingsSelectedWall3D = QuickSettings.create(0, 0, 'Wall', app_parent);
|
||
|
settingsSelectedRoom3D = QuickSettings.create(0, 0, 'Room', app_parent);
|
||
|
|
||
|
|
||
|
uxInterface.addButton('Switch Viewer', switchViewer);
|
||
|
uxInterface.addHTML('Current View', 'Floorplanning');
|
||
|
|
||
|
uxInterface.addFileChooser("Load Design", "Load Design", ".blueprint3d", loadBlueprint3DDesign);
|
||
|
uxInterface.addButton('Save Design', saveBlueprint3DDesign);
|
||
|
uxInterface.addButton('Export as GLTF', saveBlueprint3D);
|
||
|
uxInterface.addButton('Export Project (blueprint-py)', exportDesignAsPackage);
|
||
|
uxInterface.addButton('Reset', blueprint3d.model.reset.bind(blueprint3d.model));
|
||
|
|
||
|
uxInterface.addFileChooser("Load Locked Design", "Load Locked Design", ".blueprint3d", loadLockedBlueprint3DDesign);
|
||
|
|
||
|
settingsViewer2d.addButton('Draw Mode', switchViewer2DToDraw);
|
||
|
settingsViewer2d.addButton('Move Mode', switchViewer2DToMove);
|
||
|
settingsViewer2d.addButton('Transform Mode', switchViewer2DToTransform);
|
||
|
settingsViewer2d.addButton('Delete', floorplanningHelper.deleteCurrentItem.bind(floorplanningHelper));
|
||
|
|
||
|
settingsViewer2d.bindBoolean('snapToGrid', configurationHelper.snapToGrid, configurationHelper);
|
||
|
settingsViewer2d.bindBoolean('directionalDrag', configurationHelper.directionalDrag, configurationHelper);
|
||
|
settingsViewer2d.bindBoolean('dragOnlyX', configurationHelper.dragOnlyX, configurationHelper);
|
||
|
settingsViewer2d.bindBoolean('dragOnlyY', configurationHelper.dragOnlyY, configurationHelper);
|
||
|
settingsViewer2d.bindRange('snapTolerance', 1, 200, configurationHelper.snapTolerance, 1, configurationHelper);
|
||
|
settingsViewer2d.bindRange('gridSpacing', 10, 200, configurationHelper.gridSpacing, 1, configurationHelper);
|
||
|
settingsViewer2d.bindNumber('boundsX', 1, 200, configurationHelper.boundsX, 1, configurationHelper);
|
||
|
settingsViewer2d.bindNumber('boundsY', 1, 200, configurationHelper.boundsY, 1, configurationHelper);
|
||
|
|
||
|
settingsSelectedCorner.bindRange('cornerElevation', 1, 500, floorplanningHelper.cornerElevation, 1, floorplanningHelper);
|
||
|
settingsSelectedWall.bindRange('wallThickness', 0.01, 1, floorplanningHelper.wallThickness, 0.01, floorplanningHelper);
|
||
|
settingsSelectedRoom.bindText('roomName', floorplanningHelper.roomName, floorplanningHelper);
|
||
|
|
||
|
// settingsViewer3d.addDropDown('Floor Textures', floor_texture_keys, selectFloorTexture);
|
||
|
// settingsViewer3d.addImage('Floor Texture:', floor_textures[floor_texture_keys[0]].colormap, null);
|
||
|
// settingsViewer3d.addButton('Apply', selectFloorTexture);
|
||
|
|
||
|
// settingsViewer3d.addDropDown('Wall Textures', wall_texture_keys, selectWallTexture);
|
||
|
// settingsViewer3d.addImage('Wall Texture:', wall_textures[wall_texture_keys[0]].colormap, null);
|
||
|
// settingsViewer3d.addButton('Apply', selectWallTexture);
|
||
|
|
||
|
settingsSelectedRoom3D.addDropDown('Floor Textures', floor_texture_keys, selectFloorTexture);
|
||
|
settingsSelectedRoom3D.addImage('Floor Texture:', floor_textures[floor_texture_keys[0]].colormap || TEXTURE_NO_PREVIEW, null);
|
||
|
settingsSelectedRoom3D.addColor('Floor Texture Color:', floor_textures[floor_texture_keys[0]].color || '#FFFFFF', selectFloorTextureColor);
|
||
|
settingsSelectedRoom3D.addButton('Apply', selectFloorTexture);
|
||
|
|
||
|
settingsSelectedRoom3D.addDropDown('All Wall Textures', wall_texture_keys, selectWallTexture);
|
||
|
settingsSelectedRoom3D.addImage('All Wall Texture:', wall_textures[wall_texture_keys[0]].colormap || TEXTURE_NO_PREVIEW, selectWallTexture);
|
||
|
settingsSelectedRoom3D.addColor('All Wall Texture Color:', wall_textures[wall_texture_keys[0]].color || '#FFFFFF', selectWallTextureColor);
|
||
|
settingsSelectedRoom3D.addButton('Apply', selectWallTexture);
|
||
|
|
||
|
settingsSelectedWall3D.addDropDown('Wall Textures', wall_texture_keys, selectWallTexture);
|
||
|
settingsSelectedWall3D.addImage('Wall Texture:', wall_textures[wall_texture_keys[0]].colormap || TEXTURE_NO_PREVIEW, null);
|
||
|
settingsSelectedWall3D.addColor('Wall Texture Color:', wall_textures[wall_texture_keys[0]].color || '#FFFFFF', selectWallTextureColor);
|
||
|
settingsSelectedWall3D.addButton('Apply', selectWallTexture);
|
||
|
|
||
|
settingsSelectedWall3D.addDropDown('Select Door', doorTypes, selectDoorForWall);
|
||
|
settingsSelectedWall3D.addImage('Door Preview:', doorsData[doorTypes[0]].src, null);
|
||
|
settingsSelectedWall3D.addButton('Add', addDoorForWall);
|
||
|
|
||
|
settingsViewer3d.addHTML('Tips:', '<p>Click and drag to rotate the room in 360\xB0</p><p>Add room items <ul><li>Add parametric doors</li><li>Other items (Coming soon)</li></ul></p><p>Drag and Place items(pink boxes and parametric doors) in the room</p><p>There are 8 different types of items <ul><li>1: FloorItem</li> <li>2: WallItem</li> <li>3: InWallItem</li> <li>7: InWallFloorItem</li> <li>8: OnFloorItem</li> <li>9: WallFloorItem</li><li>0: Item</li> <li>4: RoofItem</li></ul></p>');
|
||
|
|
||
|
|
||
|
uxInterface.setWidth(panelWidths);
|
||
|
uxInterface.setHeight(uxInterfaceHeight);
|
||
|
|
||
|
|
||
|
settingsViewer2d.hideControl('Delete');
|
||
|
|
||
|
settingsViewer2d.setWidth(panelWidths);
|
||
|
settingsViewer3d.setWidth(panelWidths);
|
||
|
|
||
|
|
||
|
settingsViewer2d.setHeight(subPanelsHeight);
|
||
|
settingsViewer3d.setHeight(subPanelsHeight);
|
||
|
|
||
|
|
||
|
|
||
|
uxInterface.setPosition(app_parent.clientWidth - panelWidths, startY);
|
||
|
settingsViewer2d.setPosition(app_parent.clientWidth - panelWidths, startY + uxInterfaceHeight);
|
||
|
settingsViewer3d.setPosition(app_parent.clientWidth - panelWidths, startY + uxInterfaceHeight);
|
||
|
|
||
|
|
||
|
settingsSelectedCorner.hide();
|
||
|
settingsSelectedWall.hide();
|
||
|
settingsSelectedRoom.hide();
|
||
|
|
||
|
settingsViewer3d.hide();
|
||
|
settingsSelectedWall3D.hide();
|
||
|
settingsSelectedRoom3D.hide();
|
||
|
}
|