diff --git a/src/app/babylon/controller/data-manager.ts b/src/app/babylon/controller/data-manager.ts index 1d3b41f..be125dc 100644 --- a/src/app/babylon/controller/data-manager.ts +++ b/src/app/babylon/controller/data-manager.ts @@ -283,10 +283,9 @@ export class DataManager { key: string ): string { let result = - institutionKey.toLocaleLowerCase() - '/' + - ServeManager.ngAssetsPath + + institutionKey.toLocaleLowerCase() + '/' + + ServeManager.ngAssetsPath + buildingKey.toLocaleLowerCase() + '/' + key + @@ -302,7 +301,6 @@ export class DataManager { institutionKey.toLocaleLowerCase() + '/' + ServeManager.ngAssetsPath + - '/' + buildingKey.toLocaleLowerCase() + '/' + ConfigManager.c_reaPath_facilityProperty + diff --git a/src/app/babylon/controller/serve-manager.ts b/src/app/babylon/controller/serve-manager.ts index 882f507..7bb055c 100644 --- a/src/app/babylon/controller/serve-manager.ts +++ b/src/app/babylon/controller/serve-manager.ts @@ -33,9 +33,8 @@ export class ServeManager { ) => void, onError?: (key: string, error: any) => void) { this.buildingBISrv.getBuildingBasicInfos(key) .subscribe(data => { - if (onSuccess) { - onSuccess(key, data); + onSuccess(key, JSON.parse((data as any).result)); } }, error => { console.error("From serve" + key + "===" + error); @@ -49,14 +48,14 @@ export class ServeManager { saveInstitutionData(institutionData: any, key: string = 'test', onSuccess?: (key: string, result: string ) => void, onError?: (key: string, error: string) => void) { - let data = classToPlain(institutionData); + let l_data = classToPlain(institutionData); - console.log("保存单位", data); - this.buildingBISrv.postBuildingBasicInfos(key, data) + console.log("保存单位", l_data); + this.buildingBISrv.postBuildingBasicInfos(key, l_data) .subscribe(data => { - ModeManager.log("保存单位成功:" + key); + console.log("保存单位成功:" + key, l_data); if (onSuccess) { - onSuccess(key, data); + onSuccess(key, data.result); } if (key != "InsList") { //ThreeDimensionalHomeComponent.instance.openSnackBar("保存单位成功"); @@ -96,7 +95,7 @@ export class ServeManager { .subscribe(data => { ModeManager.log(data); if (onSuccess) { - onSuccess(institutionID, data); + onSuccess(institutionID, JSON.parse((data as any).result)); } }, (error) => { if (error instanceof HttpErrorResponse) { @@ -133,7 +132,7 @@ export class ServeManager { .subscribe(data => { ModeManager.log("保存标绘信息成功:" + allMarkPlanData.institutionID); if (onSuccess) { - onSuccess(allMarkPlanData.institutionID, data); + onSuccess(allMarkPlanData.institutionID, data.result); } // ThreeDimensionalHomeComponent.instance.openSnackBar("保存标绘信息成功"); // alert("保存标绘信息成功"); @@ -153,6 +152,7 @@ export class ServeManager { //队列性,批量上传 uploadFile(index: number, files: File[], resPath_out, onOneSuccess: (name: string, path: string, file: File) => void, onEnd: () => void) { if (index < files.length) { + //console.log("上传文件", files[index].name); ServeManager.instance.openFileSelect(files[index], resPath_out, (name: string, path: string, file: File) => { onOneSuccess(name, path, file); this.uploadFile(index + 1, files, resPath_out, onOneSuccess, onEnd); @@ -196,6 +196,7 @@ export class ServeManager { let dataObj = data as any; let fileName = dataObj.fileName; let filePath: string = dataObj.objectName;//此路径不全,前面缺少ObjectsService.baseUrl,这部分不可序列化,要在运行时拼接 + //console.log("上传完成,地址为", filePath); filePath = filePath.replace(fileName, "");//去掉结尾的文件名 //filePath = ObjectsService.baseUrl + filePath; ServeManager.instance.onGetPostFileResult(fileName, filePath, file); @@ -222,8 +223,9 @@ export class ServeManager { * @param file */ postFileByMul(file: File) { - ServeManager.instance.objectsSrv.postFile_MultipartUpload(ServeManager.ngAssetsPath + this.postFilePath, file).then((value) => { + ServeManager.instance.objectsSrv.postFile_MultipartUpload(this.postFilePath, file).then((value) => { let dataObj = value as any; + console.log("分块上传完成", dataObj.filePath); dataObj.filePath = dataObj.filePath.replace(dataObj.name, ""); //去掉结尾的文件名 ServeManager.instance.onGetPostFileResult(dataObj.fileName, dataObj.filePath, file); }); diff --git a/src/app/babylon/model/data/institution/facility/all-facility-data.ts b/src/app/babylon/model/data/institution/facility/all-facility-data.ts index b6decfa..cd55fe6 100644 --- a/src/app/babylon/model/data/institution/facility/all-facility-data.ts +++ b/src/app/babylon/model/data/institution/facility/all-facility-data.ts @@ -55,6 +55,7 @@ export class AllFacilityData { //新建设备信息 static newFacilityData(type: FacilityType, posType: FacilityPosType, allFacilityData: AllFacilityData, isModel: boolean = true): ModelData_facility { + return; let name = ConfigManager.getFacilityTypeName(type); let result = new ModelData_facility(type.toString(), type, name, DataManager.getResName_facility(type) + ".gltf", new TransformData(), posType, isModel); switch (posType) { diff --git a/src/app/babylon/tool/babylon-tool.ts b/src/app/babylon/tool/babylon-tool.ts index 73fcd5d..b340304 100644 --- a/src/app/babylon/tool/babylon-tool.ts +++ b/src/app/babylon/tool/babylon-tool.ts @@ -129,7 +129,7 @@ export class BabylonTool { path = ConfigManager.c_resPath_assetsRoot + rootUrl; } else { - path = ObjectsService.baseUrl + path; //根据环境,动态改变桶名 + path = ObjectsService.getFullPath(path); //根据环境,动态改变桶名 } console.log("异步加载模型" + path + sceneFilename); diff --git a/src/app/babylon/view/building-window/building-window.ts b/src/app/babylon/view/building-window/building-window.ts index de90e15..9d85784 100644 --- a/src/app/babylon/view/building-window/building-window.ts +++ b/src/app/babylon/view/building-window/building-window.ts @@ -1,4 +1,5 @@ +import { PlanComponent } from "src/app/pages/plan/plan.component"; import { DataManager } from "../../controller/data-manager"; import { InfoManager } from "../../controller/info-manager"; import { SceneManager } from "../../controller/scene-manager"; @@ -26,7 +27,7 @@ export class BuildingWindow extends UIBase { currentBuidngItem: BuildingUIItem; //当前正在操作的建筑 - // three: ThreeDimensionalHomeComponent;//前端组件 + three: PlanComponent;//前端组件 @@ -97,9 +98,9 @@ export class BuildingWindow extends UIBase { let resPath_out = DataManager.getResPath_building( DataManager.institutionData.normalData.key.toLowerCase(), normalData.key.toLocaleLowerCase(), - buildingData.normalData.key + "outDoor" ); - // console.log("新资源路径" + resPath_out); + console.log("新资源路径" + resPath_out); let buildingWindow = this; let manifestFile: File = null; @@ -211,7 +212,7 @@ export class BuildingWindow extends UIBase { - // this.three = ThreeDimensionalHomeComponent.instance; + this.three = PlanComponent.instance; // this.three.getAllBuilding(this); } diff --git a/src/app/babylon/view/facility-window/facility-window.ts b/src/app/babylon/view/facility-window/facility-window.ts index 08e88d1..b09bb1f 100644 --- a/src/app/babylon/view/facility-window/facility-window.ts +++ b/src/app/babylon/view/facility-window/facility-window.ts @@ -156,7 +156,7 @@ export class FacilityWindow extends UIBase { let instance = this; //为了避免多个模型同时加载、导致indexDB创建冲突,所以先加载一个,保证indexDB创建完成 - BabylonTool.importMeshSync(null, "assets/facilities/outdoor/gd/", "GD.gltf", undefined, "GD_indexDB", (meshes) => { + BabylonTool.importMeshSync(null, "mesh/indexdb/gd/", "GD.gltf", undefined, "GD_indexDB", (meshes) => { meshes[0].dispose(); for (let i = 0; i < facilities.length; i++) { diff --git a/src/app/pages/plan/plan.component.html b/src/app/pages/plan/plan.component.html index bfe24c5..39368d4 100644 --- a/src/app/pages/plan/plan.component.html +++ b/src/app/pages/plan/plan.component.html @@ -7,12 +7,12 @@

- +
-
+ +
+
+
+ + - -
+ + + + 名称 + + + + + + 请选择模型类型 + + + + + + + - 名称 - - + 上传文件 + + 上传文件 +

选择文件:

diff --git a/src/app/pages/plan/plan.component.scss b/src/app/pages/plan/plan.component.scss index 7457f99..10b263a 100644 --- a/src/app/pages/plan/plan.component.scss +++ b/src/app/pages/plan/plan.component.scss @@ -5,6 +5,7 @@ position: relative; canvas{ width: 100%; height: 100%; border: none; outline: none; } } +.anticon { font-size: 16px; cursor: pointer; } //字体图标 //文本溢出 .overflowText{ overflow: hidden; @@ -64,6 +65,7 @@ border-bottom: 1px solid rgba(255, 255, 255, 0.1); .modelTitle { font-size: 14px; } label { display: block; } + .anticon { margin: 0 3px; } //字体图标 } .selectLeftBuilding { background-color: #2196f3; } //选中样式 } @@ -71,4 +73,26 @@ .isShowLeftBuilding{ //隐藏 动态效果 margin-left: -300px; transition: margin-left 0.5s; +} + +//右上角快捷栏 +.rightTopFast{ + width: 60px; + height: 38px; + position: absolute; + right: 1px; + top: 1%; + overflow: hidden; + box-sizing: border-box; + display: flex; + >div { height: 38px; border-radius: 5px; } + button { + width: 36px; + height: 36px; + border: none; + outline: none; + background-color: transparent; + color: #fff; + cursor: pointer; + } } \ No newline at end of file diff --git a/src/app/pages/plan/plan.component.ts b/src/app/pages/plan/plan.component.ts index 83cea65..5fabf25 100644 --- a/src/app/pages/plan/plan.component.ts +++ b/src/app/pages/plan/plan.component.ts @@ -7,13 +7,18 @@ import { ModeManager } from 'src/app/babylon/controller/mode-manager'; import { ServeManager } from 'src/app/babylon/controller/serve-manager'; import { BuildingBasicInfosService } from 'src/app/service/babylon/building-basic-infos.service'; import { ObjectsService } from 'src/app/service/objects.service'; +import { ToolbarWindow } from 'src/app/babylon/view/toolbar-window/toobar-window'; +import { BuildingStatus } from 'src/app/babylon/controller/status/building-status'; +import { BuildingUIItem } from 'src/app/babylon/view/building-window/building-ui-item'; +import { BuildingType } from 'src/app/babylon/model/data/institution/building/building-data'; +import { BuildingWindow } from 'src/app/babylon/view/building-window/building-window'; @Component({ selector: 'app-plan', templateUrl: './plan.component.html', - styleUrls: ['./plan.component.scss','./publicPop.scss'] + styleUrls: ['./plan.component.scss', './publicPop.scss'] }) export class PlanComponent implements OnInit { @@ -36,6 +41,7 @@ export class PlanComponent implements OnInit { loginStatus.getInstitutionListFromServe((result: InsitutionDataSimple[], data: any) => { if (ModeManager.institutionDemoKey == ModeManager.c_demoKey_null) { //无指定测试单位,则为正式启动,根据当前单位key寻找 let key = 'ceshi'; + console.log("获取数据", data); let find = data.find(item => { return item.key === key }) if (find) { //如果在data中找到了对应的单位key,则表示已经有三维数据,直接进入 console.log("找到已有单位" + key); @@ -65,40 +71,82 @@ export class PlanComponent implements OnInit { } //开发模式 选择单位 弹窗 - modelInit(InsList) { - console.log(InsList) - } + modelInit(InsList) { } - buildingUIItems: any[] = []; //左侧 建筑list + buildingUIItems: BuildingUIItem[] = []; //左侧 建筑list beforeOneBuildingID: string = null; //选中 左侧建筑ID - isShowBuildingPop: boolean = false; //显隐 新增/编辑左侧建筑弹窗 - isShowLeftBuilding: boolean = true; //显隐 建筑 - toggleLeftBuilding(e) { this.isShowLeftBuilding = e }; //显隐 建筑 + modelBuilding: modelBuilding = new modelBuilding(); //创建/编辑 建筑ngModel数据 + addBuildingPop: boolean = false; //显隐 新增左侧建筑弹窗 + editBuildingPop: BuildingUIItem = null; //显隐 编辑左侧建筑弹窗 + isShowLeftBuilding: boolean = true; //显隐 建筑list + toggleLeftBuilding(e) { this.isShowLeftBuilding = e }; //显隐 建筑list + + uploadList: File[] = []; //多选上传文件 + //选择文件 + selectFile(e) { + if (e.target.files.length) { + this.uploadList = [] //多选上传 + Object.keys(e.target.files).forEach(item => { this.uploadList.push(e.target.files[item]) }) + } + } //选择建筑 selectLeftBuilding(e) { - + let item: BuildingUIItem = e; + this.beforeOneBuildingID = item.getBuildingID() + item.select(); } - //创建建筑 - addModelBuilding() { - console.log('add') + //创建/编辑建筑 + addModelBuilding(e: modelBuilding) { + if (this.addBuildingPop) { //新增 + let order = this.buildingUIItems.length + 1; + this.beforeOneSatus = StatusManager.getStatus(BuildingStatus); + let buildingWindow: BuildingWindow = this.beforeOneSatus.buildingWindow; + let newBuildingData = this.beforeOneSatus.createOneBuildingInData(e.name, e.name, e.modelType); + buildingWindow.changeModel(this.uploadList, newBuildingData); + buildingWindow.createOneBuildingItem(newBuildingData, order); + this.modelBuilding = new modelBuilding(); + this.buildingUIItems = this.beforeOneSatus.buildingWindow.buildingUIItems; //更新 建筑列表list + this.addBuildingPop = false; //关闭弹窗 + } else if (this.editBuildingPop) { //编辑 + this.editBuildingPop.setBuildingName(e.name); + this.editBuildingPop.changeModel(this.uploadList); + this.editBuildingPop = null; //关闭弹窗 + } } - //编辑建筑 - editModelBuilding(event, e) { + //打开编辑建筑 弹窗 + editModelBuilding(event, e: BuildingUIItem) { event.stopPropagation() + this.modelBuilding.name = JSON.parse(JSON.stringify(e.getBuildingName())) + this.modelBuilding.modelType = JSON.parse(JSON.stringify(e.getBuildingType())) + this.editBuildingPop = e; //打开弹窗 } //删除建筑 - deleteModelBuilding(event, e) { + deleteModelBuilding(event, e: BuildingUIItem) { event.stopPropagation() let isTrue = confirm('您确定要删除吗') if (isTrue) { - + this.beforeOneSatus = StatusManager.getStatus(BuildingStatus); + let buildingWindow: BuildingWindow = this.beforeOneSatus.buildingWindow; + buildingWindow.deleteBuilding(e) + this.buildingUIItems = this.beforeOneSatus.buildingWindow.buildingUIItems; //更新 建筑列表list } } + //保存 + preserve() { + ToolbarWindow.instance.onBtnSave(); + } + } + +//创建/编辑 建筑dataType +export class modelBuilding { + name: string = ""; + modelType: BuildingType = BuildingType.Normal; +} diff --git a/src/app/pages/plan/publicPop.scss b/src/app/pages/plan/publicPop.scss index b6f81bd..4ca89fc 100644 --- a/src/app/pages/plan/publicPop.scss +++ b/src/app/pages/plan/publicPop.scss @@ -1,30 +1,24 @@ -.keyMargin { +//上传CAD弹窗 inputfile +.uploadBackGround { + width: 125px; + padding: 0 25px; + height: 30px; + line-height: 30px; + position: relative; + cursor: pointer; + color: #0275e7; + font-size: 14px; + background: #fafafa; + border: 1px solid #0275e7; + border-radius: 5px; + overflow: hidden; + display: inline-block; +} +.uploadBackGround input { + position: absolute; width: 100%; - margin-bottom: 10px; - text-align: center; - .mat-form-field { width: 100%; } - //上传CAD弹窗 inputfile - .uploadBackGround { - width: 125px; - padding: 0 25px; - height: 30px; - line-height: 30px; - position: relative; - cursor: pointer; - color: #0275e7; - font-size: 14px; - background: #fafafa; - border: 1px solid #0275e7; - border-radius: 5px; - overflow: hidden; - display: inline-block; - } - .uploadBackGround input { - position: absolute; - width: 100%; - right: 0; - top: 0; - opacity: 0; - cursor: pointer - } + right: 0; + top: 0; + opacity: 0; + cursor: pointer } \ No newline at end of file diff --git a/src/app/service/babylon/building-basic-infos.service.ts b/src/app/service/babylon/building-basic-infos.service.ts index 799c9bb..4cb08fc 100644 --- a/src/app/service/babylon/building-basic-infos.service.ts +++ b/src/app/service/babylon/building-basic-infos.service.ts @@ -7,6 +7,10 @@ import { catchError, retry } from 'rxjs/operators'; providedIn: 'root' }) export class BuildingBasicInfosService { + + readonly c_get = "/Get"; + readonly c_post = "/PostOrPut"; + //获取单位信息的api baseUrl = 'api/Services/3D/BuildingBasicInfo'; @@ -24,7 +28,7 @@ export class BuildingBasicInfosService { * 获取三维信息 */ getBuildingBasicInfos(name: string): Observable { - return this.http.get(this.baseUrl + '?name=' + name); + return this.http.get(this.baseUrl + this.c_get + '?name=' + name); } /** * 保存三维信息 @@ -32,7 +36,11 @@ export class BuildingBasicInfosService { * @param data */ postBuildingBasicInfos(name: string, data: any): Observable { - return this.http.post(this.baseUrl + '?name=' + name, data) + let params = { + name: name, + content: JSON.stringify(data), + } + return this.http.post(this.baseUrl + this.c_post, {}, { params }) .pipe( catchError((err) => this.handleError(err)) ); @@ -45,7 +53,7 @@ export class BuildingBasicInfosService { getMarkData(name: string): Observable { // name = "bb"; let id = { "name": name }; - return this.http.get(this.markUrl, { params: id }).pipe( //'?name=' + return this.http.get(this.markUrl + this.c_get, { params: id }).pipe( //'?name=' catchError((err) => this.handleError(err)) ); } @@ -56,7 +64,11 @@ export class BuildingBasicInfosService { * @param data */ postMarkData(name: string, data: any): Observable { - return this.http.post(this.markUrl + '?name=' + name, data) + let params = { + name: name, + content: JSON.stringify(data), + } + return this.http.post(this.markUrl + this.c_post, {}, { params }) .pipe( catchError((err) => this.handleError(err)) ); @@ -85,3 +97,10 @@ export class BuildingBasicInfosService { error); } } + +/** + * 服务器返回的结果 + */ +class HttpResult { + +} \ No newline at end of file diff --git a/src/app/service/objects.service.ts b/src/app/service/objects.service.ts index 3ef0e38..af4280a 100644 --- a/src/app/service/objects.service.ts +++ b/src/app/service/objects.service.ts @@ -29,7 +29,6 @@ export class ObjectsService { static readonly c_apiRoot = "/api/Objects/";//普通上传的API根路径 static apiRoot_Multipart = "/api/";//分块上传的API根路径 - /** * 当前所处环境(打包前根据需要设置) */ @@ -40,13 +39,23 @@ export class ObjectsService { */ static baseUrl; + /** + * 组装完整路径 + * @param extensionPath 局部路径,也是序列化下来的那部分路径(从桶名的下一级开始) + * 例子1(三维预案的模型): extensionPath = ceshi/assets/主体/outDoor/a.gltf 返回值: /api/Objects/{桶名}/ceshi/assets/主体/outDoor/a.gltf, + * 例子2(非三维部分的图片):extensionPath = ceshi/web/a.rgb 返回值: /api/Objects/{桶名}/ceshi/web/a.rgb, + */ + static getFullPath(extensionPath: string) { + return ObjectsService.baseUrl + extensionPath; + } + /** * 根据所处环境不同,设置不同的桶名 */ obsRootByEnv = new Map([ [EnvironmentType.DevelopEditor, "sinochemweb/"], //开发与编辑 [EnvironmentType.Test, "sinochem3d/"],//测试 - [EnvironmentType.Production, "prod/"],//生产环境(根据需要设置) + [EnvironmentType.Production, "sinochem3d/"],//生产环境(根据需要设置)最好是与测试环境的桶名相同 ]); @@ -62,9 +71,6 @@ export class ObjectsService { return this.obsRootByEnv.get(ObjectsService.currentEnvironmentType); } - - - /** * 普通上传,单个文件上限5M */ @@ -72,12 +78,9 @@ export class ObjectsService { let formData = new FormData() formData.append("file", file, file.name) let data = { keepOriginalName: 'true' } - return this.http.post(ObjectsService.baseUrl + extensionPath, formData, { params: data }); + return this.http.post(ObjectsService.getFullPath(extensionPath), formData, { params: data }); } - - - //分块上传 postFile_MultipartUpload(extensionPath: string, file: File): Promise { // let formData = new FormData() diff --git a/src/assets/mesh/indexdb/gd/GD.bin b/src/assets/mesh/indexdb/gd/GD.bin new file mode 100644 index 0000000..5011d2b Binary files /dev/null and b/src/assets/mesh/indexdb/gd/GD.bin differ diff --git a/src/assets/mesh/indexdb/gd/GD.gltf b/src/assets/mesh/indexdb/gd/GD.gltf new file mode 100644 index 0000000..c99c72d --- /dev/null +++ b/src/assets/mesh/indexdb/gd/GD.gltf @@ -0,0 +1,183 @@ +{ + "asset": { + "version": "2.0", + "generator": "babylon.js glTF exporter for 3dsmax 2020 v20201214.2" + }, + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ] + } + ], + "nodes": [ + { + "mesh": 0, + "translation": [ + 33.9399452, + 158.461441, + 35.7631378 + ], + "rotation": [ + 0.5688382, + 2.48647058e-8, + 0.8224495, + 3.59504071e-8 + ], + "scale": [ + 0.385688841, + 0.385688871, + 1.14512515 + ], + "name": "GaoDu", + "extras": { + "mr displacement use global settings": true, + "mr displacement view dependent": true, + "mr displacement method": 6, + "mr displacement smoothing on": true, + "mr displacement edge length": 2, + "mr displacement max displace": 20, + "mr displacement parametric subdivision level": 5 + } + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 1, + "TANGENT": 2, + "NORMAL": 3, + "TEXCOORD_0": 4 + }, + "indices": 0, + "material": 0, + "mode": 4, + "extensions": { + "KHR_draco_mesh_compression": { + "bufferView": 0, + "attributes": { + "POSITION": 0, + "TANGENT": 1, + "NORMAL": 2, + "TEXCOORD_0": 3 + } + } + } + } + ], + "name": "GaoDu" + } + ], + "accessors": [ + { + "componentType": 5123, + "count": 20832, + "type": "SCALAR", + "name": "accessorIndices" + }, + { + "componentType": 5126, + "count": 19248, + "max": [ + 35.525958153932585, + 411.2544466350758, + 0.6266869361514412 + ], + "min": [ + -38.73667433507572, + -411.2543856350757, + -0.5775719690757206 + ], + "type": "VEC3", + "name": "accessorPositions" + }, + { + "componentType": 5126, + "count": 19248, + "type": "VEC4", + "name": "accessorTangents" + }, + { + "componentType": 5126, + "count": 19248, + "type": "VEC3", + "name": "accessorNormals" + }, + { + "componentType": 5126, + "count": 19248, + "type": "VEC2", + "name": "accessorUVs" + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteOffset": 0, + "byteLength": 307722 + } + ], + "buffers": [ + { + "name": "GD", + "byteLength": 307724, + "uri": "GD.bin" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 0.450053632, + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ] + }, + "name": "GD", + "emissiveFactor": [ + 0, + 0, + 0 + ], + "alphaMode": "OPAQUE", + "doubleSided": false + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "GD.jpg" + } + ], + "images": [ + { + "name": "GD", + "uri": "GD.jpg" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "extensionsRequired": [ + "KHR_draco_mesh_compression" + ], + "extensionsUsed": [ + "KHR_draco_mesh_compression" + ] +} diff --git a/src/assets/mesh/indexdb/gd/GD.gltf.manifest b/src/assets/mesh/indexdb/gd/GD.gltf.manifest new file mode 100644 index 0000000..1781cb5 --- /dev/null +++ b/src/assets/mesh/indexdb/gd/GD.gltf.manifest @@ -0,0 +1,5 @@ +{ + "version" : 1, + "enableSceneOffline" : true, + "enableTexturesOffline" : true +} \ No newline at end of file diff --git a/src/assets/mesh/indexdb/gd/GD.jpg b/src/assets/mesh/indexdb/gd/GD.jpg new file mode 100644 index 0000000..fba64de Binary files /dev/null and b/src/assets/mesh/indexdb/gd/GD.jpg differ diff --git a/src/theme.less b/src/theme.less index 16faba0..8a2309a 100644 --- a/src/theme.less +++ b/src/theme.less @@ -6,7 +6,7 @@ @border-color-base: #8aacce; -@select-background: #002552; +@select-background: transparent; .ant-select-single:not(.ant-select-customize-input) .ant-select-selector, .ant-picker,