From 9f5130a4f2447d4e54ad0ff6ebd69698b38995e2 Mon Sep 17 00:00:00 2001 From: ival <610568032@qq.com> Date: Fri, 26 Jul 2019 13:32:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=A7=BB=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 18 + src/api/chat.js | 241 + src/api/jlmap3d/load3ddata.js | 77 + src/api/jmap/lesson.js | 74 +- src/api/login.js | 97 +- src/api/management/mapskin.js | 72 +- src/api/quest.js | 40 + src/api/runplan.js | 379 ++ src/api/simulation.js | 370 ++ src/api/simulationRecord.js | 67 + src/api/table.js | 9 + src/api/test.js | 9 - src/api/user.js | 99 - src/assets/downSection.png | Bin 0 -> 4925 bytes src/assets/home/demon1.jpg | Bin 0 -> 68094 bytes src/assets/home/demon2.jpg | Bin 0 -> 29477 bytes src/assets/home/home1.jpg | Bin 0 -> 36582 bytes src/assets/home/home1.png | Bin 0 -> 174590 bytes src/assets/home/home2.jpg | Bin 0 -> 30785 bytes src/assets/home/home2.png | Bin 0 -> 134813 bytes src/assets/home/home3.jpg | Bin 0 -> 32088 bytes src/assets/home/home3.png | Bin 0 -> 125083 bytes src/assets/home/home4.png | Bin 0 -> 151776 bytes src/assets/home/plan1.png | Bin 0 -> 103874 bytes src/assets/home/plan2.png | Bin 0 -> 25353 bytes src/assets/home/plan3.png | Bin 0 -> 30108 bytes src/assets/home/tring1.png | Bin 0 -> 181631 bytes src/assets/home/tring2.png | Bin 0 -> 117791 bytes src/assets/home/tring3.jpg | Bin 0 -> 182378 bytes src/assets/home/tring4.jpg | Bin 0 -> 77945 bytes src/assets/home/tring5.jpg | Bin 0 -> 113322 bytes src/assets/home/tring6.jpg | Bin 0 -> 155948 bytes src/assets/jl3d/mmi.png | Bin 0 -> 15590 bytes src/assets/logo.png | Bin 0 -> 10099 bytes src/assets/logo.svg | 1 + src/assets/logo1.png | Bin 0 -> 8608 bytes src/assets/logo_.png | Bin 0 -> 11827 bytes src/assets/pay_images/AliPayLogo.png | Bin 0 -> 31449 bytes src/assets/pay_images/AliPayLogoInfo.png | Bin 0 -> 6569 bytes src/assets/pay_images/PayFail.png | Bin 0 -> 69757 bytes src/assets/pay_images/PaySuccess.png | Bin 0 -> 75866 bytes src/assets/pay_images/WePayLogo.png | Bin 0 -> 10480 bytes src/assets/pay_images/WePayLogoInfo.png | Bin 0 -> 7171 bytes src/assets/upSection.png | Bin 0 -> 5057 bytes src/directives.js | 283 ++ src/jlmap3d/component/Helper.js | 30 + src/jlmap3d/component/Materialload.js | 36 + src/jlmap3d/config/Camera.js | 7 + src/jlmap3d/config/Render.js | 6 + src/jlmap3d/config/Scene.js | 16 + src/jlmap3d/connect/TrainingConnect.js | 685 +++ src/jlmap3d/connect/TrainingConnectTest.js | 452 ++ src/jlmap3d/control/FirstControls.js | 390 ++ src/jlmap3d/control/OrbitControls.js | 1100 +++++ src/jlmap3d/control/OribitControlstest.js | 1016 ++++ src/jlmap3d/edit/Jlmap3ddata.js | 164 + src/jlmap3d/edit/action/pathaction.js | 389 ++ src/jlmap3d/edit/action/sectionaction.js | 120 + src/jlmap3d/edit/action/signalaction.js | 108 + src/jlmap3d/edit/action/stationaction.js | 69 + src/jlmap3d/edit/action/switchaction.js | 68 + src/jlmap3d/edit/action/trainaction.js | 68 + src/jlmap3d/edit/actionmanage.js | 40 + src/jlmap3d/edit/connect/getmodels.js | 134 + src/jlmap3d/edit/connect/testconnect.js | 10 + src/jlmap3d/edit/control/DragControls.js | 286 ++ src/jlmap3d/edit/control/OrbitControlsEdit.js | 1076 +++++ src/jlmap3d/edit/control/TransformControls.js | 1460 ++++++ src/jlmap3d/edit/testmodel/LinkList.js | 31 + src/jlmap3d/edit/testmodel/RealSectionList.js | 184 + .../edit/testmodel/RealSectionModel.js | 8 + src/jlmap3d/edit/testmodel/SectionList.js | 185 + src/jlmap3d/edit/testmodel/SectionModel.js | 26 + src/jlmap3d/edit/testmodel/SignalList.js | 145 + src/jlmap3d/edit/testmodel/SignalModel.js | 36 + .../edit/testmodel/StationStandList.js | 183 + .../edit/testmodel/StationStandModel.js | 35 + src/jlmap3d/edit/testmodel/SwitchList.js | 29 + src/jlmap3d/edit/testmodel/SwitchModel.js | 22 + src/jlmap3d/edit/testmodel/TrainList.js | 107 + src/jlmap3d/edit/testmodel/TrainListTest.js | 175 + src/jlmap3d/edit/testmodel/TrainModel.js | 8 + src/jlmap3d/edit/utils/SetObj.js | 209 + src/jlmap3d/edit/utils/drawhelp.js | 70 + src/jlmap3d/jl3ddata.js | 14 + src/jlmap3d/jl3drender.js | 0 src/jlmap3d/jl3dsimulation/jl3dsimulation.js | 394 ++ .../moveupdate/DrivingConnect.js | 688 +++ .../jl3dsimulation/moveupdate/UpdateTrain.js | 275 ++ .../jl3dsimulation/simulationloader.js | 193 + src/jlmap3d/jlmap3d.js | 340 ++ src/jlmap3d/jlmap3dedit.js | 262 ++ src/jlmap3d/main/export/OBJExporter.js | 262 ++ src/jlmap3d/main/inflate.min.js | 15 + src/jlmap3d/main/lib/stats.min.js | 5 + src/jlmap3d/main/loaders/AssetLoader.js | 418 ++ src/jlmap3d/main/loaders/DDSLoader.js | 272 ++ src/jlmap3d/main/loaders/FBXLoader.js | 4134 +++++++++++++++++ src/jlmap3d/main/loaders/FBXLoader2.js | 3861 +++++++++++++++ src/jlmap3d/main/loaders/MTLLoader.js | 583 +++ src/jlmap3d/main/loaders/OBJLoader.js | 797 ++++ .../main/loaders/model/Assetmaterial.js | 23 + src/jlmap3d/main/loaders/model/Assetmodel.js | 27 + src/jlmap3d/main/three.min.js | 971 ++++ src/jlmap3d/model/ModelLoad.js | 190 + src/jlmap3d/model/RealSectionList.js | 117 + src/jlmap3d/model/RealSectionModel.js | 8 + src/jlmap3d/model/SectionList.js | 176 + src/jlmap3d/model/SectionModel.js | 24 + src/jlmap3d/model/SignalList.js | 112 + src/jlmap3d/model/SignalModel.js | 11 + src/jlmap3d/model/StationStandList.js | 360 ++ src/jlmap3d/model/StationStandModel.js | 34 + src/jlmap3d/model/SwitchList.js | 13 + src/jlmap3d/model/SwitchModel.js | 24 + src/jlmap3d/model/TrainList.js | 208 + src/jlmap3d/model/TrainModel.js | 8 + src/jlmap3d/utils/ReStart.js | 55 + src/jlmap3d/utils/UpdateTrain.js | 175 + src/jlmap3d/utils/UpdateTrainTest.js | 144 + src/main.js | 3 +- src/permission.js | 2 +- src/router/index.js | 887 +++- src/scripts/ConstConfig.js | 91 +- src/scripts/DeviceTypeDic.js | 15 + src/scripts/DictionaryData.js | 2 +- src/scripts/FaultDic.js | 28 + src/scripts/OperationConfig.js | 1281 +++++ .../CancelLimitOperationConverter.js | 45 + .../converter/MixinOperationConverter.js | 43 + .../converter/SectionOperationConverter.js | 439 ++ .../SignalRouteOperationConverter.js | 644 +++ .../StationControlOperationConverter.js | 257 + .../converter/StationOperationConverter.js | 201 + .../StationStandOperationConverter.js | 438 ++ .../converter/SwitchOperationConverter.js | 494 ++ .../converter/TrainOperationConverter.js | 306 ++ src/scripts/plugin/converter/manager.js | 39 + src/scripts/plugin/operateConvert2Command.js | 67 + src/scripts/plugin/trainingOperateHandler.js | 142 + src/store/index.js | 13 +- src/store/modules/app.js | 23 +- src/store/modules/exam.js | 100 + src/store/modules/runplan.js | 140 + src/store/modules/socket.js | 390 ++ src/store/modules/trainingList.js | 66 + src/store/modules/user.js | 3 +- src/utils/Blob.js | 179 + src/utils/HZRecorder.js | 204 + src/utils/animation.js | 13 + src/utils/chatFomat.js | 33 + src/utils/date.js | 40 + src/utils/loaddata.js | 36 + src/utils/screen.js | 52 + src/views/components/filterCity/index.vue | 221 + src/views/components/limits/distribute.vue | 203 + src/views/components/limits/index.vue | 140 + src/views/components/limits/transfer.vue | 209 + src/views/components/pay/commit.vue | 192 + src/views/components/pay/confirm.vue | 295 ++ src/views/components/pay/finish.vue | 78 + src/views/components/pay/index.vue | 125 + src/views/components/quickMenu/index.vue | 448 ++ src/views/components/systemTime/digit.vue | 112 + src/views/components/systemTime/index.vue | 80 + src/views/components/systemTime/point.vue | 43 + src/views/components/systemTime/separator.vue | 51 + src/views/demonstration/deomonList/index.vue | 121 + src/views/demonstration/deomonTopic/index.vue | 77 + src/views/demonstration/detail/index.vue | 358 ++ src/views/demonstration/home.vue | 104 + src/views/demonstration/index.vue | 78 + src/views/demonstration/list/demonList.vue | 138 + src/views/display/demon/addQuest.vue | 137 + src/views/display/demon/chartView.vue | 678 +++ src/views/display/demon/chatBox.vue | 532 +++ src/views/display/demon/faultChoose.vue | 162 + src/views/display/demon/runPlanLoad.vue | 67 + src/views/display/demon/runPlanView.vue | 351 ++ src/views/display/demon/setTime.vue | 113 + src/views/display/index.vue | 540 +++ src/views/display/menuDemon.vue | 250 + src/views/display/menuExam.vue | 295 ++ src/views/display/menuLesson.vue | 274 ++ src/views/display/menuPlan.vue | 145 + src/views/display/menuReplay.vue | 176 + src/views/display/menuSchema.vue | 155 + src/views/display/menuScreen.vue | 156 + src/views/display/menuScript.vue | 188 + src/views/display/menuSystemTime.vue | 78 + src/views/display/scriptRecord/addAction.vue | 108 + .../display/scriptRecord/addBehavior.vue | 200 + src/views/display/scriptRecord/getAction.vue | 110 + .../display/scriptRecord/getBehavior.vue | 135 + .../display/scriptRecord/roleSection.vue | 194 + .../display/scriptRecord/targetCondition.vue | 243 + src/views/display/tipExamList.vue | 391 ++ src/views/display/tipQuestDetail.vue | 204 + src/views/display/tipScriptRecord.vue | 310 ++ src/views/display/tipTrainingDetail.vue | 268 ++ src/views/exam/detail/courseDetail.vue | 171 + src/views/exam/detail/examDetail.vue | 294 ++ src/views/exam/detail/questionDetail.vue | 163 + src/views/exam/home.vue | 106 + src/views/exam/index.vue | 108 + src/views/exam/list/examList.vue | 145 + src/views/exam/list/questionList.vue | 124 + src/views/exam/result.vue | 140 + src/views/index.js | 974 ++++ src/views/jlmap3d/edit/action.vue | 168 + src/views/jlmap3d/edit/assets.vue | 208 + src/views/jlmap3d/edit/index.vue | 36 + src/views/jlmap3d/edit/map3dlist.vue | 306 ++ src/views/jlmap3d/edit/menu.vue | 84 + src/views/jlmap3d/edit/property.vue | 200 + src/views/jlmap3d/index.vue | 256 + src/views/jlmap3d/jlmap3dedit.vue | 216 + src/views/jlmap3d/show/configmenu.vue | 83 + src/views/jlmap3d/show/menu.vue | 165 + src/views/jlmap3d/show/msg.vue | 180 + src/views/jlmap3d/show/property.vue | 124 + .../jlmap3d/simulation/jl3dsimulation.vue | 303 ++ .../jlmap3d/simulation/sceneview/mmi.css | 78 + src/views/jlmap3d/simulation/sceneview/mmi.js | 127 + .../jlmap3d/simulation/sceneview/mmiimage.js | 94 + .../jlmap3d/simulation/sceneview/mmiview.vue | 374 ++ .../jlmap3d/simulation/sceneview/tmsview.vue | 54 + src/views/jointTraining/chartView.vue | 493 ++ src/views/jointTraining/chatWindow.vue | 673 +++ src/views/jointTraining/index.vue | 336 ++ src/views/jointTraining/menuDemon.vue | 468 ++ .../jointTraining/menuDraft/chooseRole.vue | 88 + .../jointTraining/menuDraft/operateMenu.vue | 135 + src/views/jointTraining/menuSchema.vue | 157 + .../lessoncategory/category/operateMenu.vue | 115 + .../lesson/lessoncategory/category/tree.vue | 170 + .../lessoncategory/edit/chapter/index.vue | 286 ++ .../lessoncategory/edit/chapter/list.vue | 239 + .../lessoncategory/edit/create/index.vue | 91 + .../lessoncategory/edit/lesson/index.vue | 266 ++ .../lessoncategory/edit/lesson/publish.vue | 136 + .../lessoncategory/edit/sorttree/index.vue | 138 + src/views/lesson/lessoncategory/index.vue | 129 + src/views/lesson/scriptmanage/create.vue | 107 + src/views/lesson/scriptmanage/list.vue | 188 + src/views/lesson/taskmanage/createTask.vue | 100 + src/views/lesson/taskmanage/list.vue | 181 + src/views/lesson/trainingRule/addBatch.vue | 115 + src/views/lesson/trainingRule/addEdit.vue | 300 ++ src/views/lesson/trainingRule/detail/edit.vue | 178 + .../lesson/trainingRule/detail/index.vue | 184 + src/views/lesson/trainingRule/list.vue | 271 ++ src/views/lesson/trainingcategory/edit.vue | 303 ++ src/views/lesson/trainingcategory/index.vue | 61 + src/views/lesson/trainingcategory/tree.vue | 110 + src/views/lesson/trainingmanage/draft.vue | 317 ++ src/views/lesson/trainingmanage/index.vue | 286 ++ .../lesson/trainingrecord/category/draft.vue | 302 ++ .../trainingrecord/category/operateMenu.vue | 126 + .../lesson/trainingrecord/category/tree.vue | 132 + src/views/lesson/trainingrecord/index.vue | 111 + .../lesson/trainingrecord/manage/index.vue | 114 + .../manage/stepmanage/index.vue | 85 + .../manage/stepmanage/stationlist/index.vue | 76 + .../manage/stepmanage/stepinfo/index.vue | 49 + .../manage/stepmanage/stepinfo/list.vue | 40 + .../manage/stepmanage/stepinfo/step.vue | 222 + src/views/management/dictionary/edit.vue | 155 + src/views/management/dictionary/index.vue | 138 + .../management/dictionaryDetail/edit.vue | 159 + .../management/dictionaryDetail/index.vue | 166 + .../management/existingSimulation/index.vue | 206 + .../management/userControl/correlationMap.vue | 85 + src/views/management/userControl/edit.vue | 101 + src/views/management/userControl/index.vue | 146 + src/views/management/userExam/edit.vue | 107 + src/views/management/userExam/index.vue | 150 + src/views/management/userSimulation/add.vue | 201 + src/views/management/userSimulation/edit.vue | 109 + src/views/management/userSimulation/index.vue | 171 + src/views/management/userTraining/add.vue | 186 + .../management/userTraining/addTraining.vue | 92 + src/views/management/userTraining/edit.vue | 108 + src/views/management/userTraining/index.vue | 146 + src/views/map/mapdraft/mapmanage/edit.vue | 2 +- src/views/map/mapdraft/mapmanage/publish.vue | 2 +- src/views/map/product/draft.vue | 304 ++ src/views/map/product/list.vue | 168 + src/views/map/runplan/chart.vue | 364 ++ src/views/map/runplan/draft/setting.vue | 80 + src/views/map/runplan/index.vue | 67 + src/views/map/runplan/manage/check.vue | 59 + src/views/map/runplan/manage/create.vue | 319 ++ src/views/map/runplan/manage/import.vue | 110 + src/views/map/runplan/manage/list.vue | 141 + src/views/map/runplan/manage/operateMenu.vue | 197 + src/views/map/runplan/manage/publish.vue | 78 + src/views/map/skinStyle/draft.vue | 266 ++ src/views/map/skinStyle/index.vue | 154 + src/views/orderauthor/author/detail.vue | 97 + src/views/orderauthor/author/draft.vue | 236 + src/views/orderauthor/author/index.vue | 265 ++ src/views/orderauthor/commodity/draft.vue | 407 ++ src/views/orderauthor/commodity/index.vue | 242 + src/views/orderauthor/order/addGoods.vue | 212 + src/views/orderauthor/order/canDistribute.vue | 54 + src/views/orderauthor/order/draft.vue | 569 +++ src/views/orderauthor/order/list.vue | 333 ++ src/views/orderauthor/permission/detail.vue | 200 + .../permission/draft/choosePermission.vue | 219 + .../orderauthor/permission/draft/ruleForm.vue | 245 + src/views/orderauthor/permission/index.vue | 285 ++ src/views/package/draft/canDistribute.vue | 51 + src/views/package/draft/editRule.vue | 328 ++ src/views/package/draft/ruleForm.vue | 310 ++ src/views/package/index.vue | 232 + src/views/package/selectRole/list.vue | 122 + src/views/planMonitor/detail.vue | 205 + src/views/planMonitor/editTool/index.vue | 487 ++ src/views/planMonitor/editTool/menuBar.vue | 728 +++ src/views/planMonitor/editTool/menuTool.vue | 172 + .../editTool/menus/addPlanningTrain.vue | 92 + .../editTool/menus/addSmoothRunTime.vue | 140 + .../planMonitor/editTool/menus/addTask.vue | 317 ++ .../editTool/menus/components/dataTable.vue | 203 + .../editTool/menus/createEmptyPlan.vue | 90 + .../planMonitor/editTool/menus/deleteTask.vue | 91 + .../editTool/menus/duplicateTrain.vue | 90 + .../editTool/menus/editPlanningTrain.vue | 232 + .../editTool/menus/editSmoothRunTime.vue | 113 + .../editTool/menus/editStationBetweenTime.vue | 45 + .../planMonitor/editTool/menus/lookup.vue | 45 + .../editTool/menus/modifyingBeginTime.vue | 64 + .../editTool/menus/modifyingRouting.vue | 85 + .../menus/modifyingStationIntervalTime.vue | 183 + .../editTool/menus/modifyingTask.vue | 423 ++ .../planMonitor/editTool/menus/offLine.vue | 68 + .../editTool/menus/openRunPlan.vue | 105 + .../editTool/menus/parameter/baseLoop.vue | 65 + .../menus/parameter/baseParameter.vue | 72 + .../menus/parameter/baseParkingDepot.vue | 44 + .../editTool/menus/parameter/baseRouting.vue | 53 + .../editTool/menus/parameter/baseStation.vue | 44 + .../editTool/menus/parameter/index.vue | 95 + .../parameter/modifyingDepotProperty.vue | 73 + .../parameter/modifyingStationProperty.vue | 113 + .../modifyingStationStandProperty.vue | 73 + .../editTool/menus/quickLoopsIncrease.vue | 45 + .../editTool/menus/quickTaskIncrease.vue | 45 + .../editTool/menus/routingSelection.vue | 45 + .../editTool/menus/selectDeleteRoute.vue | 45 + .../editTool/menus/selectPrintArea.vue | 45 + .../planMonitor/editTool/menus/systermOut.vue | 62 + .../menus/updateStationIntervalTime.vue | 116 + src/views/planMonitor/editTool/schedule.vue | 519 +++ src/views/planMonitor/editTool/statusBar.vue | 100 + src/views/planMonitor/editTool/titleBar.vue | 74 + src/views/planMonitor/home.vue | 98 + src/views/planMonitor/index.vue | 77 + src/views/planMonitor/planmanage/planList.vue | 132 + src/views/publish/examRule/draft/editRule.vue | 301 ++ src/views/publish/examRule/draft/examFrom.vue | 272 ++ src/views/publish/examRule/draft/index.vue | 165 + src/views/publish/examRule/draft/rule.vue | 291 ++ src/views/publish/examRule/index.vue | 321 ++ src/views/publish/productStatus/index.vue | 180 + src/views/publish/publishLesson/index.vue | 187 + src/views/publish/publishMap/draft.vue | 160 + src/views/publish/publishMap/index.vue | 258 + .../runPlanCommon/chooseTemplatePlan.vue | 123 + src/views/publish/runPlanCommon/draft.vue | 182 + src/views/publish/runPlanCommon/index.vue | 121 + src/views/publish/runPlanEveryDay/index.vue | 139 + src/views/publish/runPlanTemplate/index.vue | 161 + src/views/publish/simulationScript/index.vue | 141 + src/views/replay/index.vue | 146 + src/views/screenMonitor/detail/index.vue | 256 + src/views/screenMonitor/home.vue | 101 + src/views/screenMonitor/index.vue | 87 + src/views/screenMonitor/list/demonList.vue | 131 + src/views/teach/category/tree.vue | 207 + src/views/teach/detail/index.vue | 163 + src/views/teach/home.vue | 105 + src/views/teach/index.vue | 83 + src/views/teach/practical/index.vue | 129 + src/views/trainRoom/addPerson.vue | 158 + src/views/trainRoom/index.vue | 846 ++++ src/views/trainRoom/operateMenu.vue | 83 + src/views/trainRoom/trainChat.vue | 351 ++ 389 files changed, 76296 insertions(+), 329 deletions(-) create mode 100644 index.html create mode 100644 src/api/chat.js create mode 100644 src/api/jlmap3d/load3ddata.js create mode 100644 src/api/quest.js create mode 100644 src/api/runplan.js create mode 100644 src/api/simulation.js create mode 100644 src/api/simulationRecord.js create mode 100644 src/api/table.js delete mode 100644 src/api/test.js delete mode 100644 src/api/user.js create mode 100644 src/assets/downSection.png create mode 100644 src/assets/home/demon1.jpg create mode 100644 src/assets/home/demon2.jpg create mode 100644 src/assets/home/home1.jpg create mode 100644 src/assets/home/home1.png create mode 100644 src/assets/home/home2.jpg create mode 100644 src/assets/home/home2.png create mode 100644 src/assets/home/home3.jpg create mode 100644 src/assets/home/home3.png create mode 100644 src/assets/home/home4.png create mode 100644 src/assets/home/plan1.png create mode 100644 src/assets/home/plan2.png create mode 100644 src/assets/home/plan3.png create mode 100644 src/assets/home/tring1.png create mode 100644 src/assets/home/tring2.png create mode 100644 src/assets/home/tring3.jpg create mode 100644 src/assets/home/tring4.jpg create mode 100644 src/assets/home/tring5.jpg create mode 100644 src/assets/home/tring6.jpg create mode 100644 src/assets/jl3d/mmi.png create mode 100644 src/assets/logo.png create mode 100644 src/assets/logo.svg create mode 100644 src/assets/logo1.png create mode 100644 src/assets/logo_.png create mode 100644 src/assets/pay_images/AliPayLogo.png create mode 100644 src/assets/pay_images/AliPayLogoInfo.png create mode 100644 src/assets/pay_images/PayFail.png create mode 100644 src/assets/pay_images/PaySuccess.png create mode 100644 src/assets/pay_images/WePayLogo.png create mode 100644 src/assets/pay_images/WePayLogoInfo.png create mode 100644 src/assets/upSection.png create mode 100644 src/directives.js create mode 100644 src/jlmap3d/component/Helper.js create mode 100644 src/jlmap3d/component/Materialload.js create mode 100644 src/jlmap3d/config/Camera.js create mode 100644 src/jlmap3d/config/Render.js create mode 100644 src/jlmap3d/config/Scene.js create mode 100644 src/jlmap3d/connect/TrainingConnect.js create mode 100644 src/jlmap3d/connect/TrainingConnectTest.js create mode 100644 src/jlmap3d/control/FirstControls.js create mode 100644 src/jlmap3d/control/OrbitControls.js create mode 100644 src/jlmap3d/control/OribitControlstest.js create mode 100644 src/jlmap3d/edit/Jlmap3ddata.js create mode 100644 src/jlmap3d/edit/action/pathaction.js create mode 100644 src/jlmap3d/edit/action/sectionaction.js create mode 100644 src/jlmap3d/edit/action/signalaction.js create mode 100644 src/jlmap3d/edit/action/stationaction.js create mode 100644 src/jlmap3d/edit/action/switchaction.js create mode 100644 src/jlmap3d/edit/action/trainaction.js create mode 100644 src/jlmap3d/edit/actionmanage.js create mode 100644 src/jlmap3d/edit/connect/getmodels.js create mode 100644 src/jlmap3d/edit/connect/testconnect.js create mode 100644 src/jlmap3d/edit/control/DragControls.js create mode 100644 src/jlmap3d/edit/control/OrbitControlsEdit.js create mode 100644 src/jlmap3d/edit/control/TransformControls.js create mode 100644 src/jlmap3d/edit/testmodel/LinkList.js create mode 100644 src/jlmap3d/edit/testmodel/RealSectionList.js create mode 100644 src/jlmap3d/edit/testmodel/RealSectionModel.js create mode 100644 src/jlmap3d/edit/testmodel/SectionList.js create mode 100644 src/jlmap3d/edit/testmodel/SectionModel.js create mode 100644 src/jlmap3d/edit/testmodel/SignalList.js create mode 100644 src/jlmap3d/edit/testmodel/SignalModel.js create mode 100644 src/jlmap3d/edit/testmodel/StationStandList.js create mode 100644 src/jlmap3d/edit/testmodel/StationStandModel.js create mode 100644 src/jlmap3d/edit/testmodel/SwitchList.js create mode 100644 src/jlmap3d/edit/testmodel/SwitchModel.js create mode 100644 src/jlmap3d/edit/testmodel/TrainList.js create mode 100644 src/jlmap3d/edit/testmodel/TrainListTest.js create mode 100644 src/jlmap3d/edit/testmodel/TrainModel.js create mode 100644 src/jlmap3d/edit/utils/SetObj.js create mode 100644 src/jlmap3d/edit/utils/drawhelp.js create mode 100644 src/jlmap3d/jl3ddata.js create mode 100644 src/jlmap3d/jl3drender.js create mode 100644 src/jlmap3d/jl3dsimulation/jl3dsimulation.js create mode 100644 src/jlmap3d/jl3dsimulation/moveupdate/DrivingConnect.js create mode 100644 src/jlmap3d/jl3dsimulation/moveupdate/UpdateTrain.js create mode 100644 src/jlmap3d/jl3dsimulation/simulationloader.js create mode 100644 src/jlmap3d/jlmap3d.js create mode 100644 src/jlmap3d/jlmap3dedit.js create mode 100644 src/jlmap3d/main/export/OBJExporter.js create mode 100644 src/jlmap3d/main/inflate.min.js create mode 100644 src/jlmap3d/main/lib/stats.min.js create mode 100644 src/jlmap3d/main/loaders/AssetLoader.js create mode 100644 src/jlmap3d/main/loaders/DDSLoader.js create mode 100644 src/jlmap3d/main/loaders/FBXLoader.js create mode 100644 src/jlmap3d/main/loaders/FBXLoader2.js create mode 100644 src/jlmap3d/main/loaders/MTLLoader.js create mode 100644 src/jlmap3d/main/loaders/OBJLoader.js create mode 100644 src/jlmap3d/main/loaders/model/Assetmaterial.js create mode 100644 src/jlmap3d/main/loaders/model/Assetmodel.js create mode 100644 src/jlmap3d/main/three.min.js create mode 100644 src/jlmap3d/model/ModelLoad.js create mode 100644 src/jlmap3d/model/RealSectionList.js create mode 100644 src/jlmap3d/model/RealSectionModel.js create mode 100644 src/jlmap3d/model/SectionList.js create mode 100644 src/jlmap3d/model/SectionModel.js create mode 100644 src/jlmap3d/model/SignalList.js create mode 100644 src/jlmap3d/model/SignalModel.js create mode 100644 src/jlmap3d/model/StationStandList.js create mode 100644 src/jlmap3d/model/StationStandModel.js create mode 100644 src/jlmap3d/model/SwitchList.js create mode 100644 src/jlmap3d/model/SwitchModel.js create mode 100644 src/jlmap3d/model/TrainList.js create mode 100644 src/jlmap3d/model/TrainModel.js create mode 100644 src/jlmap3d/utils/ReStart.js create mode 100644 src/jlmap3d/utils/UpdateTrain.js create mode 100644 src/jlmap3d/utils/UpdateTrainTest.js create mode 100644 src/scripts/DeviceTypeDic.js create mode 100644 src/scripts/FaultDic.js create mode 100644 src/scripts/OperationConfig.js create mode 100644 src/scripts/plugin/converter/CancelLimitOperationConverter.js create mode 100644 src/scripts/plugin/converter/MixinOperationConverter.js create mode 100644 src/scripts/plugin/converter/SectionOperationConverter.js create mode 100644 src/scripts/plugin/converter/SignalRouteOperationConverter.js create mode 100644 src/scripts/plugin/converter/StationControlOperationConverter.js create mode 100644 src/scripts/plugin/converter/StationOperationConverter.js create mode 100644 src/scripts/plugin/converter/StationStandOperationConverter.js create mode 100644 src/scripts/plugin/converter/SwitchOperationConverter.js create mode 100644 src/scripts/plugin/converter/TrainOperationConverter.js create mode 100644 src/scripts/plugin/converter/manager.js create mode 100644 src/scripts/plugin/operateConvert2Command.js create mode 100644 src/scripts/plugin/trainingOperateHandler.js create mode 100644 src/store/modules/exam.js create mode 100644 src/store/modules/runplan.js create mode 100644 src/store/modules/socket.js create mode 100644 src/store/modules/trainingList.js create mode 100644 src/utils/Blob.js create mode 100644 src/utils/HZRecorder.js create mode 100644 src/utils/animation.js create mode 100644 src/utils/chatFomat.js create mode 100644 src/utils/date.js create mode 100644 src/utils/loaddata.js create mode 100644 src/utils/screen.js create mode 100644 src/views/components/filterCity/index.vue create mode 100644 src/views/components/limits/distribute.vue create mode 100644 src/views/components/limits/index.vue create mode 100644 src/views/components/limits/transfer.vue create mode 100644 src/views/components/pay/commit.vue create mode 100644 src/views/components/pay/confirm.vue create mode 100644 src/views/components/pay/finish.vue create mode 100644 src/views/components/pay/index.vue create mode 100644 src/views/components/quickMenu/index.vue create mode 100644 src/views/components/systemTime/digit.vue create mode 100644 src/views/components/systemTime/index.vue create mode 100644 src/views/components/systemTime/point.vue create mode 100644 src/views/components/systemTime/separator.vue create mode 100644 src/views/demonstration/deomonList/index.vue create mode 100644 src/views/demonstration/deomonTopic/index.vue create mode 100644 src/views/demonstration/detail/index.vue create mode 100644 src/views/demonstration/home.vue create mode 100644 src/views/demonstration/index.vue create mode 100644 src/views/demonstration/list/demonList.vue create mode 100644 src/views/display/demon/addQuest.vue create mode 100644 src/views/display/demon/chartView.vue create mode 100644 src/views/display/demon/chatBox.vue create mode 100644 src/views/display/demon/faultChoose.vue create mode 100644 src/views/display/demon/runPlanLoad.vue create mode 100644 src/views/display/demon/runPlanView.vue create mode 100644 src/views/display/demon/setTime.vue create mode 100644 src/views/display/index.vue create mode 100644 src/views/display/menuDemon.vue create mode 100644 src/views/display/menuExam.vue create mode 100644 src/views/display/menuLesson.vue create mode 100644 src/views/display/menuPlan.vue create mode 100644 src/views/display/menuReplay.vue create mode 100644 src/views/display/menuSchema.vue create mode 100644 src/views/display/menuScreen.vue create mode 100644 src/views/display/menuScript.vue create mode 100644 src/views/display/menuSystemTime.vue create mode 100644 src/views/display/scriptRecord/addAction.vue create mode 100644 src/views/display/scriptRecord/addBehavior.vue create mode 100644 src/views/display/scriptRecord/getAction.vue create mode 100644 src/views/display/scriptRecord/getBehavior.vue create mode 100644 src/views/display/scriptRecord/roleSection.vue create mode 100644 src/views/display/scriptRecord/targetCondition.vue create mode 100644 src/views/display/tipExamList.vue create mode 100644 src/views/display/tipQuestDetail.vue create mode 100644 src/views/display/tipScriptRecord.vue create mode 100644 src/views/display/tipTrainingDetail.vue create mode 100644 src/views/exam/detail/courseDetail.vue create mode 100644 src/views/exam/detail/examDetail.vue create mode 100644 src/views/exam/detail/questionDetail.vue create mode 100644 src/views/exam/home.vue create mode 100644 src/views/exam/index.vue create mode 100644 src/views/exam/list/examList.vue create mode 100644 src/views/exam/list/questionList.vue create mode 100644 src/views/exam/result.vue create mode 100644 src/views/index.js create mode 100644 src/views/jlmap3d/edit/action.vue create mode 100644 src/views/jlmap3d/edit/assets.vue create mode 100644 src/views/jlmap3d/edit/index.vue create mode 100644 src/views/jlmap3d/edit/map3dlist.vue create mode 100644 src/views/jlmap3d/edit/menu.vue create mode 100644 src/views/jlmap3d/edit/property.vue create mode 100644 src/views/jlmap3d/index.vue create mode 100644 src/views/jlmap3d/jlmap3dedit.vue create mode 100644 src/views/jlmap3d/show/configmenu.vue create mode 100644 src/views/jlmap3d/show/menu.vue create mode 100644 src/views/jlmap3d/show/msg.vue create mode 100644 src/views/jlmap3d/show/property.vue create mode 100644 src/views/jlmap3d/simulation/jl3dsimulation.vue create mode 100644 src/views/jlmap3d/simulation/sceneview/mmi.css create mode 100644 src/views/jlmap3d/simulation/sceneview/mmi.js create mode 100644 src/views/jlmap3d/simulation/sceneview/mmiimage.js create mode 100644 src/views/jlmap3d/simulation/sceneview/mmiview.vue create mode 100644 src/views/jlmap3d/simulation/sceneview/tmsview.vue create mode 100644 src/views/jointTraining/chartView.vue create mode 100644 src/views/jointTraining/chatWindow.vue create mode 100644 src/views/jointTraining/index.vue create mode 100644 src/views/jointTraining/menuDemon.vue create mode 100644 src/views/jointTraining/menuDraft/chooseRole.vue create mode 100644 src/views/jointTraining/menuDraft/operateMenu.vue create mode 100644 src/views/jointTraining/menuSchema.vue create mode 100644 src/views/lesson/lessoncategory/category/operateMenu.vue create mode 100644 src/views/lesson/lessoncategory/category/tree.vue create mode 100644 src/views/lesson/lessoncategory/edit/chapter/index.vue create mode 100644 src/views/lesson/lessoncategory/edit/chapter/list.vue create mode 100644 src/views/lesson/lessoncategory/edit/create/index.vue create mode 100644 src/views/lesson/lessoncategory/edit/lesson/index.vue create mode 100644 src/views/lesson/lessoncategory/edit/lesson/publish.vue create mode 100644 src/views/lesson/lessoncategory/edit/sorttree/index.vue create mode 100644 src/views/lesson/lessoncategory/index.vue create mode 100644 src/views/lesson/scriptmanage/create.vue create mode 100644 src/views/lesson/scriptmanage/list.vue create mode 100644 src/views/lesson/taskmanage/createTask.vue create mode 100644 src/views/lesson/taskmanage/list.vue create mode 100644 src/views/lesson/trainingRule/addBatch.vue create mode 100644 src/views/lesson/trainingRule/addEdit.vue create mode 100644 src/views/lesson/trainingRule/detail/edit.vue create mode 100644 src/views/lesson/trainingRule/detail/index.vue create mode 100644 src/views/lesson/trainingRule/list.vue create mode 100644 src/views/lesson/trainingcategory/edit.vue create mode 100644 src/views/lesson/trainingcategory/index.vue create mode 100644 src/views/lesson/trainingcategory/tree.vue create mode 100644 src/views/lesson/trainingmanage/draft.vue create mode 100644 src/views/lesson/trainingmanage/index.vue create mode 100644 src/views/lesson/trainingrecord/category/draft.vue create mode 100644 src/views/lesson/trainingrecord/category/operateMenu.vue create mode 100644 src/views/lesson/trainingrecord/category/tree.vue create mode 100644 src/views/lesson/trainingrecord/index.vue create mode 100644 src/views/lesson/trainingrecord/manage/index.vue create mode 100644 src/views/lesson/trainingrecord/manage/stepmanage/index.vue create mode 100644 src/views/lesson/trainingrecord/manage/stepmanage/stationlist/index.vue create mode 100644 src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/index.vue create mode 100644 src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/list.vue create mode 100644 src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/step.vue create mode 100644 src/views/management/dictionary/edit.vue create mode 100644 src/views/management/dictionary/index.vue create mode 100644 src/views/management/dictionaryDetail/edit.vue create mode 100644 src/views/management/dictionaryDetail/index.vue create mode 100644 src/views/management/existingSimulation/index.vue create mode 100644 src/views/management/userControl/correlationMap.vue create mode 100644 src/views/management/userControl/edit.vue create mode 100644 src/views/management/userControl/index.vue create mode 100644 src/views/management/userExam/edit.vue create mode 100644 src/views/management/userExam/index.vue create mode 100644 src/views/management/userSimulation/add.vue create mode 100644 src/views/management/userSimulation/edit.vue create mode 100644 src/views/management/userSimulation/index.vue create mode 100644 src/views/management/userTraining/add.vue create mode 100644 src/views/management/userTraining/addTraining.vue create mode 100644 src/views/management/userTraining/edit.vue create mode 100644 src/views/management/userTraining/index.vue create mode 100644 src/views/map/product/draft.vue create mode 100644 src/views/map/product/list.vue create mode 100644 src/views/map/runplan/chart.vue create mode 100644 src/views/map/runplan/draft/setting.vue create mode 100644 src/views/map/runplan/index.vue create mode 100644 src/views/map/runplan/manage/check.vue create mode 100644 src/views/map/runplan/manage/create.vue create mode 100644 src/views/map/runplan/manage/import.vue create mode 100644 src/views/map/runplan/manage/list.vue create mode 100644 src/views/map/runplan/manage/operateMenu.vue create mode 100644 src/views/map/runplan/manage/publish.vue create mode 100644 src/views/map/skinStyle/draft.vue create mode 100644 src/views/map/skinStyle/index.vue create mode 100644 src/views/orderauthor/author/detail.vue create mode 100644 src/views/orderauthor/author/draft.vue create mode 100644 src/views/orderauthor/author/index.vue create mode 100644 src/views/orderauthor/commodity/draft.vue create mode 100644 src/views/orderauthor/commodity/index.vue create mode 100644 src/views/orderauthor/order/addGoods.vue create mode 100644 src/views/orderauthor/order/canDistribute.vue create mode 100644 src/views/orderauthor/order/draft.vue create mode 100644 src/views/orderauthor/order/list.vue create mode 100644 src/views/orderauthor/permission/detail.vue create mode 100644 src/views/orderauthor/permission/draft/choosePermission.vue create mode 100644 src/views/orderauthor/permission/draft/ruleForm.vue create mode 100644 src/views/orderauthor/permission/index.vue create mode 100644 src/views/package/draft/canDistribute.vue create mode 100644 src/views/package/draft/editRule.vue create mode 100644 src/views/package/draft/ruleForm.vue create mode 100644 src/views/package/index.vue create mode 100644 src/views/package/selectRole/list.vue create mode 100644 src/views/planMonitor/detail.vue create mode 100644 src/views/planMonitor/editTool/index.vue create mode 100644 src/views/planMonitor/editTool/menuBar.vue create mode 100644 src/views/planMonitor/editTool/menuTool.vue create mode 100644 src/views/planMonitor/editTool/menus/addPlanningTrain.vue create mode 100644 src/views/planMonitor/editTool/menus/addSmoothRunTime.vue create mode 100644 src/views/planMonitor/editTool/menus/addTask.vue create mode 100644 src/views/planMonitor/editTool/menus/components/dataTable.vue create mode 100644 src/views/planMonitor/editTool/menus/createEmptyPlan.vue create mode 100644 src/views/planMonitor/editTool/menus/deleteTask.vue create mode 100644 src/views/planMonitor/editTool/menus/duplicateTrain.vue create mode 100644 src/views/planMonitor/editTool/menus/editPlanningTrain.vue create mode 100644 src/views/planMonitor/editTool/menus/editSmoothRunTime.vue create mode 100644 src/views/planMonitor/editTool/menus/editStationBetweenTime.vue create mode 100644 src/views/planMonitor/editTool/menus/lookup.vue create mode 100644 src/views/planMonitor/editTool/menus/modifyingBeginTime.vue create mode 100644 src/views/planMonitor/editTool/menus/modifyingRouting.vue create mode 100644 src/views/planMonitor/editTool/menus/modifyingStationIntervalTime.vue create mode 100644 src/views/planMonitor/editTool/menus/modifyingTask.vue create mode 100644 src/views/planMonitor/editTool/menus/offLine.vue create mode 100644 src/views/planMonitor/editTool/menus/openRunPlan.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/baseLoop.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/baseParameter.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/baseParkingDepot.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/baseRouting.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/baseStation.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/index.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/modifyingDepotProperty.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/modifyingStationProperty.vue create mode 100644 src/views/planMonitor/editTool/menus/parameter/modifyingStationStandProperty.vue create mode 100644 src/views/planMonitor/editTool/menus/quickLoopsIncrease.vue create mode 100644 src/views/planMonitor/editTool/menus/quickTaskIncrease.vue create mode 100644 src/views/planMonitor/editTool/menus/routingSelection.vue create mode 100644 src/views/planMonitor/editTool/menus/selectDeleteRoute.vue create mode 100644 src/views/planMonitor/editTool/menus/selectPrintArea.vue create mode 100644 src/views/planMonitor/editTool/menus/systermOut.vue create mode 100644 src/views/planMonitor/editTool/menus/updateStationIntervalTime.vue create mode 100644 src/views/planMonitor/editTool/schedule.vue create mode 100644 src/views/planMonitor/editTool/statusBar.vue create mode 100644 src/views/planMonitor/editTool/titleBar.vue create mode 100644 src/views/planMonitor/home.vue create mode 100644 src/views/planMonitor/index.vue create mode 100644 src/views/planMonitor/planmanage/planList.vue create mode 100644 src/views/publish/examRule/draft/editRule.vue create mode 100644 src/views/publish/examRule/draft/examFrom.vue create mode 100644 src/views/publish/examRule/draft/index.vue create mode 100644 src/views/publish/examRule/draft/rule.vue create mode 100644 src/views/publish/examRule/index.vue create mode 100644 src/views/publish/productStatus/index.vue create mode 100644 src/views/publish/publishLesson/index.vue create mode 100644 src/views/publish/publishMap/draft.vue create mode 100644 src/views/publish/publishMap/index.vue create mode 100644 src/views/publish/runPlanCommon/chooseTemplatePlan.vue create mode 100644 src/views/publish/runPlanCommon/draft.vue create mode 100644 src/views/publish/runPlanCommon/index.vue create mode 100644 src/views/publish/runPlanEveryDay/index.vue create mode 100644 src/views/publish/runPlanTemplate/index.vue create mode 100644 src/views/publish/simulationScript/index.vue create mode 100644 src/views/replay/index.vue create mode 100644 src/views/screenMonitor/detail/index.vue create mode 100644 src/views/screenMonitor/home.vue create mode 100644 src/views/screenMonitor/index.vue create mode 100644 src/views/screenMonitor/list/demonList.vue create mode 100644 src/views/teach/category/tree.vue create mode 100644 src/views/teach/detail/index.vue create mode 100644 src/views/teach/home.vue create mode 100644 src/views/teach/index.vue create mode 100644 src/views/teach/practical/index.vue create mode 100644 src/views/trainRoom/addPerson.vue create mode 100644 src/views/trainRoom/index.vue create mode 100644 src/views/trainRoom/operateMenu.vue create mode 100644 src/views/trainRoom/trainChat.vue diff --git a/index.html b/index.html new file mode 100644 index 000000000..9e69c3963 --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + +
+ + + + + diff --git a/src/api/chat.js b/src/api/chat.js new file mode 100644 index 000000000..66acbabd1 --- /dev/null +++ b/src/api/chat.js @@ -0,0 +1,241 @@ + +import request from '@/utils/request'; + +export function postDataBd(data) { + return request({ + url: `/api/audio/bd?group=${data.group}&conversationId=${data.conversationId}`, + method: 'post', + data: data.file, + }); +} + +// 创建/获取会话id +export function getConversation(data) { + return request({ + url: `/api/audio/conversation`, + method: 'get', + params: { + group: data.group, + userId: data.userId, + code: data.code + } + }); +} + +export function postDataXf(data) { + return request({ + url: `/api/audio/xf`, + method: 'post', + data: data + }); +} + +// 获取语音历史记录 +export function getHistoryVoice(code) { + return request({ + url: `/api/audio/${code}/history`, + method: 'get' + }); +} + +// 文字聊天 发送文字 +export function chatWithText(data, group) { + return request({ + url: `/api/jointTraining/chatWithText?group=${group}`, + method: 'post', + data: { + message: data, + } + }); +} + +// 文字聊天 发送文字 +export function chatWithAudio(file, group) { + return request({ + url: `/api/jointTraining/chatWithAudio?group=${group}`, + method: 'post', + data: file + }); +} + +// 文字聊天 发送文字 +export function getJoinTrainCode(data, group) { + return request({ + url: `/api/jointTraining/qrCode?group=${group}`, + method: 'post', + data: data + }); +} + + +// 创建房间 +export function postCreateRoom(data) { + return request({ + url: `/api/jointTraining/room`, + method: 'post', + data: data + }); +} + +// 检查房间存在 +export function checkRoomExist(params) { + return request({ + url: `/api/simulationRoom`, + method: 'get', + params + }); +} + +// 获取房间详情 +export function postRoomDetail(group) { + return request({ + url: `/api/jointTraining/room/${group}`, + method: 'get', + }); +} + +// 销毁房间 +export function deljointTrainRoom(group) { + return request({ + url: `/api/jointTraining/room`, + method: 'delete', + params: { + group: group, + } + }); +} + +// 查询有权限房间列表 +export function getjointTrainList() { + return request({ + url: `/api/jointTraining/room/list`, + method: 'get' + }); +} + +// 加入房间 +export function getjointTraining(group) { + return request({ + url: `/api/jointTraining/room/join`, + method: 'put', + params: { + group: group, + } + }); +} + +// 设置人员角色 +export function putUserRoles(data, group) { + return request({ + url: `/api/jointTraining/room/user/role?group=${group}`, + method: 'put', + data: data + }); +} + +// 设置人员角色 +export function getJointTrainRoomUserList(group) { + return request({ + url: `/api/jointTraining/room/${group}/user/list`, + method: 'get', + }); +} + +// 离开房间接口 +export function putJointTrainingExit(group) { + return request({ + url: `/api/jointTraining/room/exit`, + method: 'put', + params: { + group: group, + } + }); +} + +// 开始联合演练 +export function startJointTraining(group) { + return request({ + url: `/api/jointTraining/room/simulation`, + method: 'post', + params: { + group: group + } + }); +} + +// 获取个人信息 +export function getUserRoles(group) { + return request({ + url: `/api/jointTraining/room/user/role`, + method: 'get', + params: { + group: group + } + }); +} + +// 返回房间 +export function putJointTrainingState() { + return request({ + url: `/api/jointTraining/room/back`, + method: 'put', + }); +} + +// 踢出用户 +export function putJointTrainingUserkicked(userId, group) { + return request({ + url: `/api/jointTraining/room/user`, + method: 'put', + params: { + userId: userId, + group: group, + } + }); +} + +// 管理员结束所有人的仿真 +export function putJointTrainingSimulation(group) { + return request({ + url: `/api/jointTraining/room/simulation/all`, + method: 'put', + params: { + group: group, + } + }); +} + +// 结束仿真返回房间 +export function putJointTrainingSimulationUser(group) { + return request({ + url: `/api/jointTraining/room/simulation/user/exit`, + method: 'put', + params: { + group: group, + } + }); +} + +// 进入仿真 +export function putJointTrainingSimulationEntrance(group) { + return request({ + url: `/api/jointTraining/room/simulation/user/entrance`, + method: 'put', + params: { + group: group, + } + }); +} + +/** + * 权限获取(房间权限) + */ +export function getPermissionJoint(group) { + return request({ + url: '/api/jointTraining/qrCode', + method: 'get', + params: { + group: group + } + }); +} \ No newline at end of file diff --git a/src/api/jlmap3d/load3ddata.js b/src/api/jlmap3d/load3ddata.js new file mode 100644 index 000000000..b003b30b6 --- /dev/null +++ b/src/api/jlmap3d/load3ddata.js @@ -0,0 +1,77 @@ +import request from '@/utils/request'; + +/** 获取地图版本信息*/ +export function getPublishMapVersion(skinStyle) { + return request({ + url: `/api/map/${skinStyle}/version`, + method: 'get' + }); +} + +/** 获取发布地图详细内容*/ +export function getPublishMapDetail(skinStyle) { + let datad = request({ + url: `/api/map/${skinStyle}/details`, + method: 'get' + }); + return datad.then(); +} + + +/** 根据地图id获取地图信息*/ +export function getPublishMapInfo(mapId) { + return request({ + url: `/api/map/${mapId}`, + method: 'get' + }); +} + + +/** 获取草稿地图详细内容*/ +export function getMapDetail(id) { + return request({ + url: `/api/mapBuild/${id}/mapDataDetail`, + method: 'get' + }); +} + +/** 创建地图3d数据*/ +export function set3dMapData(data) { + return request({ + url: `/api/mapBuild/3dMapData`, + method: 'post', + data: data + }); +} + +/**通过地图id获取地图3d数据*/ +export function get3dMapData(mapId) { + return request({ + url: `/api/mapBuild/3dMapData/${mapId}`, + method: 'get' + }); +} + +/** 更新地图3d数据*/ +export function update3dMapData(data) { + return request({ + url: `/api/mapBuild/3dMapData/${data.id}`, + method: 'put', + data: data + }); +} + +/** 获取模型资源列表*/ +export function loadmap3dModel() { + return request({ + url: `/api/map3dModel/all`, + method: 'get' + }); +} +export function getPublish3dMapDetail(skinStyle) { + let datad = request({ + url: `/api/map/${skinStyle}/3dMapData`, + method: 'get' + }); + return datad.then(); +} diff --git a/src/api/jmap/lesson.js b/src/api/jmap/lesson.js index fbb3187b4..5a55d45f4 100644 --- a/src/api/jmap/lesson.js +++ b/src/api/jmap/lesson.js @@ -2,67 +2,67 @@ import request from '@/utils/request'; /** 获取发布的课程列表*/ export function getPublishLessonList() { - return request({ - url: '/api/lesson', - method: 'get' - }); + return request({ + url: '/api/lesson', + method: 'get' + }); } /** 获取发布列表树*/ export function getPublishLessonTree(params) { - return request({ - url: '/api/lesson/tree', - method: 'get', - params: params || {} - }); + return request({ + url: '/api/lesson/tree', + method: 'get', + params: params || {} + }); } /** 获取发布课程列表*/ export function getPublishLessonDetail(data) { - return request({ - url: `/api/lesson/${data.id}`, - method: 'get' - }); + return request({ + url: `/api/lesson/${data.id}`, + method: 'get' + }); } /** 发布课程分页列表列表*/ export function publishLessonList(param) { - return request({ - url: `/api/lesson/publishedLesson`, - method: 'get', - params: param - }); + return request({ + url: `/api/lesson/publishedLesson`, + method: 'get', + params: param + }); } /** 删除发布课程*/ export function delPublishLesson(lessonId) { - return request({ - url: `/api/lesson/publishedLesson/${lessonId}`, - method: 'delete' - }); + return request({ + url: `/api/lesson/publishedLesson/${lessonId}`, + method: 'delete' + }); } -/** 发布课程上架*/ +/**发布课程上架*/ export function putLessonOnLine(id) { - return request({ - url: `/api/lesson/${id}/onLine`, - method: 'put' - }); + return request({ + url: `/api/lesson/${id}/onLine`, + method: 'put', + }); } -/** 发布课程下架*/ +/**发布课程下架*/ export function putLessonOffLine(id) { - return request({ - url: `/api/lesson/${id}/offLine`, - method: 'put' - }); + return request({ + url: `/api/lesson/${id}/offLine`, + method: 'put', + }); } /** * 获取地图产品下的课程列表 */ export function getCommodityProductLesson(prdCode) { - return request({ - url: `/api/lesson/${prdCode}/list`, - method: 'get' - }); -} + return request({ + url: `/api/lesson/${prdCode}/list`, + method: 'get', + }); +} \ No newline at end of file diff --git a/src/api/login.js b/src/api/login.js index eb1297b44..60f1e6463 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -1,77 +1,68 @@ import request from '@/utils/request'; - -// 修改密码 -export function changePassword(userId, data) { - return request({ - url: `/api/login/${userId}/password`, - method: 'put', - data: data - }); -} - // 账号密码 其他系统 export function login(params) { - return request({ - url: '/api/login', - method: 'post', - data: params - }); + return request({ + url: '/api/login', + method: 'post', + data: params + }); } // 获取登陆url 二维码 其他系统 export function getLoginUrl(params) { - return request({ - url: '/api/login/url', - method: 'get', - params: params - }); + return request({ + url: '/api/login/url', + method: 'get', + params: params + }); } + // 获取登录信息 export function getInfo(token) { - return request({ - url: '/api/login/getUserInfo', - method: 'get', - params: { token } - }); + return request({ + url: '/api/login/getUserInfo', + method: 'get', + params: { token } + }); } // 登出 export function logout(token) { - return request({ - url: '/api/login/logout', - method: 'get', - params: { - token - } - }); + return request({ + url: '/api/login/logout', + method: 'get', + params: { + token + } + }); } // 检查登陆状态 export function checkLoginStatus(sessionId) { - return new Promise((resolve, reject) => { - request({ - url: '/api/login/checkStatus', - method: 'get', - params: { - sessionId: sessionId - } - }).then(response => { - if (response.data.status === '2') { - resolve(response); - } else { - reject(response); - } - }).catch(error => { - reject(error); - }); - }); + return new Promise((resolve, reject) => { + request({ + url: '/api/login/checkStatus', + method: 'get', + params: { + sessionId: sessionId + } + }).then(response => { + if (response.data.status === '2') { + resolve(response); + } else { + reject(response); + } + }).catch(error => { + reject(error); + }); + }); } // 检测持续在线 防止掉线在大屏或者仿真系统下 export function checkLoginLine() { - return request({ - url: '/api/cache/heartBeat', - method: 'get' - }); + return request({ + url: '/api/cache/heartBeat', + method: 'get', + }); } diff --git a/src/api/management/mapskin.js b/src/api/management/mapskin.js index 1c17e8d0c..98cf524c4 100644 --- a/src/api/management/mapskin.js +++ b/src/api/management/mapskin.js @@ -2,68 +2,68 @@ import request from '@/utils/request'; /** 分页查询皮肤*/ export function getSkinStylePageList(params) { - return request({ - url: `/api/mapSkin`, - method: 'get', - params: params - }); + return request({ + url: `/api/mapSkin`, + method: 'get', + params: params + }); } /** 添加皮肤*/ export function addSkinStyle(data) { - return request({ - url: `/api/mapSkin`, - method: 'post', - data: data - }); + return request({ + url: `/api/mapSkin`, + method: 'post', + data: data + }); } /** 删除皮肤*/ export function delSkinStyle(id) { - return request({ - url: `/api/mapSkin/${id}`, - method: 'delete' - }); + return request({ + url: `/api/mapSkin/${id}`, + method: 'delete' + }); } /** 查询地图皮肤 */ export function querySkinStyle(id) { - return request({ - url: `/api/mapSkin/${id}`, - method: 'get' - }); + return request({ + url: `/api/mapSkin/${id}`, + method: 'get' + }); } /** 修改地图皮肤*/ export function updateSkinStyle(data) { - return request({ - url: `/api/mapSkin/${data.id}`, - method: 'put', - data: data - }); + return request({ + url: `/api/mapSkin/${data.id}`, + method: 'put', + data: data + }); } /** 通过皮肤Code更新地图皮肤*/ export function updateSkinStyleByCode(data) { - return request({ - url: `/api/mapSkin/${data.code}/update`, - method: 'put', - data: data - }); + return request({ + url: `/api/mapSkin/${data.code}/update`, + method: 'put', + data: data + }); } /** 查询皮肤是否存在*/ export function querySkinStyleExistByCode(code) { - return request({ - url: `/api/mapSkin/${code}/exist`, - method: 'get' - }); + return request({ + url: `/api/mapSkin/${code}/exist`, + method: 'get' + }); } /** 获取皮肤列表*/ export function getSkinStyleList() { - return request({ - url: `/api/mapSkin/list`, - method: 'get' - }); + return request({ + url: `/api/mapSkin/list`, + method: 'get' + }); } diff --git a/src/api/quest.js b/src/api/quest.js new file mode 100644 index 000000000..6491751e3 --- /dev/null +++ b/src/api/quest.js @@ -0,0 +1,40 @@ +import request from '@/utils/request'; + +/** 分页查找仿真任务*/ +export function getQuestPageList(params) { + return request({ + url: `/api/quest/paging`, + method: 'get', + params: params + }); +} +/** 创建任务 */ +export function createQuest(data) { + return request({ + url: `/api/quest`, + method: 'post', + data + }); +} +/** 根据任务id删除任务 */ +export function deleteQuest(id) { + return request({ + url: `/api/quest/${id}`, + method: 'delete' + }); +} +/** 根据id查询任务基础信息 */ +export function getQuestById(id) { + return request({ + url: `/api/quest/${id}`, + method: 'get', + }); +} +/** 更新任务基本信息 */ +export function updateQuest(id, data) { + return request({ + url: `/api/quest/${id}`, + method: 'put', + data + }); +} diff --git a/src/api/runplan.js b/src/api/runplan.js new file mode 100644 index 000000000..76165e6f0 --- /dev/null +++ b/src/api/runplan.js @@ -0,0 +1,379 @@ +import request from '@/utils/request'; + +/** + * 获取运行图列表 + */ +export function getRunPlanList() { + return request({ + url: '/api/rp/tree', + method: 'get' + }); +} + +/** + * 获取地图速度等级列表 + */ +export function getSpeedLevels(skinStyle) { + return request({ + url: `/api/rp/${skinStyle}/speed`, + method: 'get', + }); +} + +/** + * 新建地图速度等级列表 + */ +export function newSpeedLevels(data) { + return request({ + url: '/api/rp/speed', + method: 'post', + data: data + }); +} + +/** + * 获取运行图的车站列表 + */ +export function getStationList(mapId) { + return request({ + url: `/api/rp/station/${mapId}`, + method: 'get', + }); +} + +/** + * 通过皮肤获取运行图车站列表 + */ +export function getStationListBySkinStyle(skinStyle) { + return request({ + url: `/api/rp/station/${skinStyle}/bySkin`, + method: 'get', + }); +} + +/** + * 创建运行图 + */ +export function newRunPlan(data) { + return request({ + url: '/api/rp', + method: 'post', + data: data + }); +} + +/** + * 查询运行图获取数据 + */ +export function queryRunPlan(planId) { + return request({ + url: `/api/rp/${planId}`, + method: 'get' + }); +} + +/** + * 删除运行图 + */ +export function deleteRunPlan(planId) { + return request({ + url: `/api/rp/${planId}`, + method: 'delete' + }); +} + +/** + * 发布运行图 + */ +export function publishRunPlan(data) { + return request({ + url: `/api/rp/${data.planId}/publish`, + method: 'post', + data: data + }); +} + + +/** + * 导入真实运行图 + */ +export function importRunPlan(data) { + return request({ + url: `/api/rp/${data.skinStyle}/prdPlan`, + method: 'post', + data: data.runPlanList + }); +} + +/** 获取运行图停车点列表*/ +export function getRunPlanStopPointList(skinStyle) { + return request({ + url: `/api/rp/stopPoint/${skinStyle}`, + method: 'get', + }); +} + + +/** 运行图*/ +export function getRpListByMapId(mapId) { + return request({ + url: `/api/rp/${mapId}/list`, + method: 'get' + }); +} + +/** 获取站间运行时间*/ +export function getStationRunning(skinStyle) { + return request({ + url: `/api/rp/${skinStyle}/stationRunning`, + method: 'get' + }); +} + +/** 设置站间运行时间*/ +export function setStationRunning(skinStyle, data) { + return request({ + url: `/api/rp/${skinStyle}/stationRunning`, + method: 'put', + data: data + }); +} + +/** 创建运行图*/ +export function createEmptyPlan(data) { + return request({ + url: `/api/rp`, + method: 'post', + data: data + }); +} + +/** 查询运行图服务号是否存在*/ +export function checkServiceNumberExist({ planId, serviceNumber }) { + return request({ + url: `/api/rp/${planId}/${serviceNumber}/service`, + method: 'get' + }); +} + +/** 查询交路列表*/ +export function getRoutingList(planId) { + return request({ + url: `/api/rp/${planId}/routingList`, + method: 'get' + }); +} + +/** 根据交路查询交路区段列表*/ +export function querySectionListByRouting({ planId, routingCode }) { + return request({ + url: `/api/rp/${planId}/${routingCode}/routingSectionList`, + method: 'get' + }); +} + +/** 有效性检查*/ +export function planEffectiveCheck(planId) { + return request({ + url: `/api/rp/${planId}/check`, + method: 'get' + }); +} + +/** 增加计划*/ +export function addPlanService(data) { + return request({ + url: `/api/rp/${data.planId}/service`, + method: 'post', + data: data, + }); +} + +/** 删除计划*/ +export function deletePlanService(data) { + return request({ + url: `/api/rp/${data.planId}/service/${data.serviceNumber}`, + method: 'delete' + }); +} + +/** 复制计划*/ +export function duplicateService(data) { + return request({ + url: `/api/rp/${data.planId}/service/${data.serviceNumber}`, + method: 'post', + data: data + }); +} + +/** 修改计划*/ +// export function updatePlanService(data) { +// return request({ +// url: `/api/rp/${data.planId}/service/${data.serviceNumber}`, +// method: 'put', +// data: data +// }) +// } + +/** 增加任务*/ +export function addPlanTrip(data) { + return request({ + url: `/api/rp/${data.planId}/${data.serviceNumber}/trip`, + method: 'post', + data: data, + }); +} + +/** 删除任务*/ +export function deletePlanTrip(params) { + return request({ + url: `/api/rp/${params.planId}/trip/${params.SDTNumber}`, + method: 'delete', + params: { deleteBefore: params.deleteBefore } + }); +} + +/** 修改任务*/ +export function updatePlanTrip(data) { + return request({ + url: `/api/rp/${data.planId}/trip/${data.SDTNumber}`, + method: 'put', + data: data + }); +} + +/** 根据车次号查询交路*/ +export function getRoutingBySDTNumber(params) { + return request({ + url: `/api/rp/${params.planId}/routing`, + method: 'get', + params: { + SDTNumber: params.SDTNumber + } + }); +} + + +/** 运行图仿真测试*/ +export function runPlanNotify({ planId }) { + return request({ + url: `/api/rp/${planId}/simulation`, + method: 'get', + }); +} + +/** 获取运行计划模板列表*/ +export function runPlanTemplateList(params) { + return request({ + url: '/api/runPlan/template', + method: 'get', + params: params + }); +} + +/** 删除运行图模板*/ +export function deleteRunPlanTemplate(planId) { + return request({ + url: `/api/runPlan/template/${planId}`, + method: 'delete' + }); +} + +/** 生成通用每日运行图*/ +export function generateCommonRunPlanEveryDay(planId) { + return request({ + url: `/api/runPlan/template/generate/${planId}`, + method: 'post' + }); +} + +/** 生成用户每日运行图*/ +export function generateUserRunPlanEveryDay(planId, group) { + return request({ + url: `/api/runPlan/daily/privilege/${planId}?group=${group}`, + method: 'post' + }); +} +/** 获取运行计划每日列表*/ +export function runPlanEveryDayList(params) { + return request({ + url: '/api/runPlan/daily', + method: 'get', + params: params + }); +} + +/** 删除运行图每日计划*/ +export function deleteRunPlanEveryDay(planId) { + return request({ + url: `/api/runPlan/daily/${planId}`, + method: 'delete' + }); +} + +/** 获取地图运行图的车次号*/ +export function getPublishMapTrainNos(skinStyle) { + return request({ + url: `/api/runPlan/daily/${skinStyle}/trainNos`, + method: 'get' + }); +} + +/** 获取服务号、车组号*/ +export function getPublishMapTrainServerNos(skinStyle) { + return request({ + url: `/api/runPlan/daily/${skinStyle}/serverNos`, + method: 'get' + }); +} + +/** 分页查询加载计划*/ +export function getRunPlanLoadList(params) { + return request({ + url: `/api/runPlan/daily/runPlanLoad`, + method: 'get', + params: params + }); +} + +/** 创建加载计划*/ +export function createRunPlanLoad(data) { + return request({ + url: `/api/runPlan/daily/runPlanLoad`, + method: 'post', + data: data + }); +} + +/** 管理创建通用加载计划*/ +export function createRunPlanCommon(data) { + return request({ + url: `/api/runPlan/daily/runPlanLoad/common`, + method: 'post', + data: data + }); +} + +/** 删除加载计划*/ +export function deleteRunPlanLoad(planId) { + return request({ + url: `/api/runPlan/daily/runPlanLoad/${planId}`, + method: 'delete' + }); +} + +/** 查询模板运行图数据*/ +export function queryRunPlanTemplate(planId) { + return request({ + url: `/api/runPlan/template/${planId}`, + method: 'get' + }) +} + +/** 查询当日运行图数据*/ +export function queryRunPlanDaily(planId) { + return request({ + url: `/api/runPlan/daily/${planId}`, + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/simulation.js b/src/api/simulation.js new file mode 100644 index 000000000..8deaed2ec --- /dev/null +++ b/src/api/simulation.js @@ -0,0 +1,370 @@ +import request from '@/utils/request'; + +/** 获取故障规则列表*/ +export function getFailureGenerateRules(params) { + return request({ + url: `/api/simulation/failureGenerateRules`, + method: 'get', + params: params + }); +} + +/** 设置自动故障*/ +export function setFailureMode(data, group) { + return request({ + url: `/api/simulation/${group}/failureMode`, + method: 'post', + data: data, + }); +} + + +/** + * 仿真系统按计划行车 + */ +export function runDiagramStart(params, group) { + return request({ + url: `/api/simulation/${group}/start`, + method: 'put', + params: params + }); +} + +/** + * 仿真系统结束计划行车 + */ +export function runDiagramOver(group) { + return request({ + url: `/api/simulation/${group}/over`, + method: 'put', + }); +} + +/** + * 退出仿真系统 + */ +export function runDiagramQuit(group) { + return request({ + url: `/api/simulation/${group}/quit`, + method: 'put', + }); +} + +/** 获取仿真系统时间*/ +export function runDiagramGetTime(group) { + return request({ + url: `/api/simulation/${group}/systemTime`, + method: 'get' + }); +} + +// 查看是否开始按计划行车 +export function runDiagramIsStart(group) { + return request({ + url: `/api/simulation/${group}/isRunPlanStart`, + method: 'get' + }); +} + + +/** + * 仿真系统CBTC + * @param {*} mapId + */ +export function simulationNotify({ mapId, code }) { + return request({ + url: `/api/simulation/${mapId}/${code}`, + method: 'get' + }); +} + +/** + * 大屏系统CBTC + * @param {*} mapId + */ +export function bitScreenNotify({ mapId }) { + return request({ + url: `/api/simulation/bigScreen/${mapId}`, + method: 'get' + }); +} + +/** + * 实训系统CBTC + * @param {*} data + */ +export function trainingNotify({ trainingId }) { + return request({ + url: `/api/simulation/training/${trainingId}`, + method: 'get' + }); +} + +/** + * 考试系统CBTC + * @param {*} data + */ +export function examNotify({ examId }) { + return request({ + url: `/api/simulation/exam/${examId}`, + method: 'get' + }); +} + + +/**获取用户实训列表*/ +export function getSimulationList(data) { + return request({ + url: `/api/simulation/stats`, + method: 'get', + params: data + }); +} + +/**添加用户仿真数据*/ +export function postSimulationStats(data) { + return request({ + url: `/api/simulation/stats`, + method: 'post', + data: data + }); +} + +/**更新用户仿真数据*/ +export function putSimulationStats(data) { + return request({ + url: `/api/simulation/${data.id}/stats`, + method: 'put', + data: data + }); +} + +/**删除用户仿真数据*/ +export function deleteSimulationStats(statsId) { + return request({ + url: `/api/simulation/${statsId}`, + method: 'delete', + }); +} + + +/** 获取用户鼠标左键选中的设备信息*/ +export function letfMouseSelectDevice(deviceCode, group) { + return request({ + url: `/api/simulation/${group}/device/${deviceCode}`, + method: 'get', + }); +} + +/** 获取每日运行图*/ +export function getEveryDayRunPlanData(group) { + return request({ + url: `/api/simulation/${group}/runPlan`, + method: 'get', + }); +} + +/** 生成手机同步仿真二维码*/ +// export function getSimulationQrCodeUrl(group) { +// return request({ +// url: `/api/simulation/${group}/qrCode`, +// method: 'post' +// }); +// } + +/** 录制脚本仿真*/ +export function scriptRecordNotify(questId) { + return request({ + url: `/api/simulation/questRecord/${questId}`, + method: 'get' + }) +} + +/** 保存剧本背景*/ +export function saveScriptScenes(group) { + return request({ + url: `/api/simulation/${group}/questRecord/scenes`, + method: 'post' + }) +} + + +/** 保存录制任务数据*/ +export function saveScriptData(group) { + return request({ + url: `/api/simulation/${group}/questRecord`, + method: 'post', + }); +} + + + +/** 清除仿真剧本数据*/ +export function dumpScriptData(scriptId) { + return request({ + url: `/api/simulation/${scriptId}/clearScriptRecord`, + method: 'post' + }); +} + + +/** 查询录制剧本步骤*/ +export function queryScriptStep(group) { + return request({ + url: `/api/simulation/${group}/scriptRecordStage`, + method: 'get' + }); +} + +/** 获取指定时间里可加载列车的个数*/ +export function getDesignatedTimeTrainNum(params, group) { + return request({ + url: `/api/simulation/${group}/plan/trainNum`, + method: 'get', + params + }) +} + +/** 根据成员角色查询设备列表*/ +export function getDevicesByRole(group, params) { + return request({ + url: `/api/simulation/${group}/role/devices`, + method: 'get', + params + }) +} +/** 获取任务录制的成员角色列表 */ +export function getMembersByGroup(group) { + return request({ + url: `/api/simulation/${group}/questRecord/members`, + method: 'get', + }) +} + +/** 添加任务角色成员 */ +export function postQuestMember(group, data) { + return request({ + url: `/api/simulation/${group}/questRecord/member`, + method: 'post', + data + }) +} + +/** 删除任务角色成员 */ +export function deleteQuestMember(group, memberId) { + return request({ + url: `/api/simulation/${group}/questRecord/member/${memberId}`, + method: 'delete', + }) +} + +// /** 添加/修改任务角色行为 */ +export function postMemberBehavior(group, memberId, data) { + return request({ + url: `/api/simulation/${group}/questRecord/${memberId}/behavior`, + method: 'post', + data + }) +} +/** 删除任务角色行为 */ +export function deleteMemberBehavior(group, memberId, behaviorId) { + return request({ + url: `/api/simulation/${group}/questRecord/${memberId}/behavior/${behaviorId}`, + method: 'delete' + }) +} +/** 删除任务角色行为动作 */ +export function deleteMemberBehaviorAction(group, memberId, behaviorId, actionId) { + return request({ + url: `/api/simulation/${group}/questRecord/${memberId}/behavior/${behaviorId}/action/${actionId}`, + method: 'delete' + }) +} +/** 添加/修改任务角色行为动作 */ +export function postMemberBehaviorAction(group, memberId, behaviorId, data) { + return request({ + url: `/api/simulation/${group}/questRecord/${memberId}/behavior/${behaviorId}/action`, + method: 'post', + data + }) +} +/** 添加/修改任务目标条件*/ +export function postTargetConditionAction(group, data) { + return request({ + url: `/api/simulation/${group}/questRecord/targetCondition`, + method: 'post', + data + }) +} +/** 删除任务目标条件*/ +export function deleteTargetConditionAction(group, tcId) { + return request({ + url: `/api/simulation/${group}/questRecord/targetCondition/${tcId}`, + method: 'delete' + }) +} + +/** 分页查询存在的仿真 */ +export function getExistingSimulation(params) { + return request({ + url: `/api/simulation/manage/page`, + method: 'get', + params, + }); +} + +/** 删除存在的仿真 */ +export function deleteExistingSimulation(group) { + return request({ + url: `/api/simulation/manage/${group}`, + method: 'delete', + }); +} +/** 根据设备类型获取设备列表 */ +export function getDeviceCodeByDeviceType(group, params) { + return request({ + url: `/api/simulation/${group}/deviceType/devices`, + method: 'get', + params + }); +} +/** 根据设备类型获取设备条件列表 */ +export function getDeviceCoditionByDeviceType(params) { + return request({ + url: `/api/simulation/deviceType/conditions`, + method: 'get', + params + }); +} +/** 获取任务录制的数据*/ +export function getQuestRecord(group) { + return request({ + url: `/api/simulation/${group}/questRecord`, + method: 'get', + }); +} + + +/** 加载任务*/ +export function loadQuest(questId, group) { + return request({ + url: `/api/simulation/${group}/quest/${questId}`, + method: 'post', + }); +} + +/** 退出任务*/ +export function quitQuest(group) { + return request({ + url: `/api/simulation/${group}/quest`, + method: 'put' + }) +} + +/** 根据group获取仿真对象*/ +export function getSimulationInfo(group) { + return request({ + url: `/api/simulation/${group}`, + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/simulationRecord.js b/src/api/simulationRecord.js new file mode 100644 index 000000000..f5e68fb7f --- /dev/null +++ b/src/api/simulationRecord.js @@ -0,0 +1,67 @@ + +import request from '@/utils/request'; + +/** 分页查询仿真记录*/ +export function getSimulationRelpayList(params) { + return request({ + url: `/api/simulationRecord`, + method: 'get', + params: params + }); +} + +// 删除回放 +export function delSimulationRecord(replayId) { + return request({ + url: `/api/simulationRecord/${replayId}`, + method: 'delete', + }); +} + +/** 回放*/ +export function simulationRelpay(replayId) { + return request({ + url: `/api/simulationRecord/${replayId}/playBack`, + method: 'get' + }); +} + +// 结束回放 +export function putsSimulationRecord(replayId) { + return request({ + url: `/api/simulationRecord/${replayId}/over`, + method: 'put', + }); +} + +// 暂停回放 +export function putsSimulationRecordPause(replayId) { + return request({ + url: `/api/simulationRecord/${replayId}/pause`, + method: 'put', + }); +} + +// 播放回放 +export function putsSimulationRecordPlay(replayId) { + return request({ + url: `/api/simulationRecord/${replayId}/play`, + method: 'put', + }); +} + +// 设置速度回放 +export function putsSimulationRecordPlaySpeed(replayId, speed) { + return request({ + url: `/api/simulationRecord/${replayId}/playSpeed?playSpeed=${speed}`, + method: 'put', + }); +} + +// 播放 +export function putsSimulationRecordplayTime(replayId, offsetSeconds) { + return request({ + url: `/api/simulationRecord/${replayId}/playTime?offsetSeconds=${offsetSeconds}`, + method: 'put', + }); +} \ No newline at end of file diff --git a/src/api/table.js b/src/api/table.js new file mode 100644 index 000000000..10bac1b1b --- /dev/null +++ b/src/api/table.js @@ -0,0 +1,9 @@ +import request from '@/utils/request'; + +export function getList(params) { + return request({ + url: '/table/list', + method: 'get', + params + }); +} diff --git a/src/api/test.js b/src/api/test.js deleted file mode 100644 index a5b85f944..000000000 --- a/src/api/test.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/utils/request'; - -/** 获取发布地图详细内容*/ -export function getPublishMapDetail(skinStyle) { - return request({ - url: `/api/map/${skinStyle}/details`, - method: 'get' - }); -} \ No newline at end of file diff --git a/src/api/user.js b/src/api/user.js deleted file mode 100644 index dd4041fee..000000000 --- a/src/api/user.js +++ /dev/null @@ -1,99 +0,0 @@ -import request from '@/utils/request'; - - -/** 查询用户参数*/ -export function getUserConfigInfo() { - return request({ - url: '/api/user/config', - method: 'get' - }); -} - -// /** 注册用户*/ -// export function createUserInfo(data) { -// return request({ -// url: '/api/userinfo/create', -// method: 'put', -// data: data -// }); -// } -// /** 根据用户Id获取用户信息*/ -// export function getUserInfoByOpenId(params) { -// return request({ -// url: '/api/userinfo/getByOpenId', -// method: 'get', -// params: params -// }); -// } - -// /** 根据姓名或者手机号查询用户*/ -// export function getUserInfoByNameOrMobile(params) { -// return request({ -// url: '/api/userinfo/nameOrMobile', -// method: 'get', -// params: params -// }); -// } - -// /** 设置用户参数*/ -// export function setUserConfigInfo(data) { -// return request({ -// url: '/api/user/config', -// method: 'post', -// data: data -// }); -// } - -// /** 获取销售列表*/ -// export function getSellerList() { -// return request({ -// url: `/api/user/seller`, -// method: 'get' -// }); -// } - -// /** 查询用户列表*/ -// export function getUserList(params) { -// return request({ -// url: `/api/user`, -// method: 'get', -// params: params -// }); -// } - -// /** 模糊查询用户 昵称、名称、手机号*/ -// export function getDimUserList(params) { -// return request({ -// url: `/api/user/fuzzy`, -// method: 'get', -// params: params -// }); -// } - - -// /** 获取用户订阅地图列表*/ -// export function getUserSubscribe(userId) { -// return request({ -// url: `/api/user/subscribe/${userId}`, -// method: 'get' -// }); -// } - -// /** 保存用户订阅地图列表*/ -// export function saveUserSubscribe(data) { -// return request({ -// url: '/api/user/subscribe', -// method: 'post', -// data: data -// }); -// } - - -// // 修改用户权限 -// export function putRoles(data) { -// return request({ -// url: `/api/user/${data.id}/role`, -// method: 'put', -// data: data -// }); -// } diff --git a/src/assets/downSection.png b/src/assets/downSection.png new file mode 100644 index 0000000000000000000000000000000000000000..58dc1d231d7e645c7ad018878632119ff564c53a GIT binary patch literal 4925 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 literal 0 HcmV?d00001 diff --git a/src/assets/home/demon2.jpg b/src/assets/home/demon2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39b0c7915fed7ae0f34d398e8abf16412271f4fa GIT binary patch literal 29477 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 literal 0 HcmV?d00001 diff --git a/src/assets/home/home1.jpg b/src/assets/home/home1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c79290b5bd5b2f26b9c04f47b1bef2f2c30a84d GIT binary patch literal 36582 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 s|DqDJy@%IX9 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 literal 0 HcmV?d00001 diff --git a/src/assets/home/home1.png b/src/assets/home/home1.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc0a0ca5522659927eb87f1cbb897507abad709 GIT binary patch literal 174590 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 O0000`+xr8y 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%0D$T%3S8$oo8ZsZz@ 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 literal 0 HcmV?d00001 diff --git a/src/assets/home/home3.png b/src/assets/home/home3.png new file mode 100644 index 0000000000000000000000000000000000000000..95fb124e724b5ef93c7baa4caa9692f89907d561 GIT binary patch literal 125083 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 IW%TlY0e&uv%>V!Z literal 0 HcmV?d00001 diff --git a/src/assets/home/home4.png b/src/assets/home/home4.png new file mode 100644 index 0000000000000000000000000000000000000000..08d5b13cc59494d3624a9eacd5c66370b7145149 GIT binary patch literal 151776 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%0Di(W;(rbS+$%x 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

1B~JZY)C3Uip9ImMtHCb<&%2b@J-f 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 Be3<|M literal 0 HcmV?d00001 diff --git a/src/assets/home/plan2.png b/src/assets/home/plan2.png new file mode 100644 index 0000000000000000000000000000000000000000..73247f7ee2692b5ae8e65956f69d0d8dece3ac1c GIT binary patch literal 25353 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 G=l=lSuHjPv literal 0 HcmV?d00001 diff --git a/src/assets/home/tring1.png b/src/assets/home/tring1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5db769e057bdc20e21b97d0652e0e8c0a0c704 GIT binary patch literal 181631 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

;%wsZC9RJVa68-`=p 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"}U?br}rqn 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%0A#LQd$?-` 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 literal 0 HcmV?d00001 diff --git a/src/assets/home/tring3.jpg b/src/assets/home/tring3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af23babf2c9f510e1937e23003e43a518b2b0ce2 GIT binary patch literal 182378 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 z

t2ZC=?S%70W&kI2-u}J! zKkO!?h8LAta6pz0&Yv~Bgjlx5665s}W}9r@>V6->a%Ch{0$81L7xjVolfW9m;@V-9 z3h-z`+YFuCJBY{r`10vl3Gx=`9_x!3Y_*-BHM!Oc~7pu9&vJQ>+ zjp3v%I8^ke8Z;$O7sFj+YcLnZ9W;$w%<&{R(G<;rown8|FC^8`nFGx|yzwg8fhRI8NTb>tH)Q z=1g6BTvV*ma>iDhO)#Tti9m$>4onDb==0i#jb=1fe+)+RIS^EphdlIqR9R`!YAk72 z90y(rRtVbe&e;3AeN4Dp+>JTnrrx8lz+roma?j<&X|%ds3J5aO-q#q#gk!hen{5Xc zKTbb5C!6Uthf;y1itMHHQ|$W2;K%Wv5x<)C(6$uPHd_iO6lRaa;5k3- zz1aHssls?dX)Maq0L2Pu;ggo%cqOwP^T!t(xQvJ_wvsYp1%IOW6`HDeCrr!1dr;b< zM6<$tFN%E*6o^b-EZvM98q0|<>1=3<9T;c~v=&Ybf`k!Z$^!%AqU+##dDqd}q+M=Q z8-8QAmFAG7x;scj)_?PU9Nqj1p=MGxZ9MhpRh=Gv5C_|#a|6c9tKxU_3(}f}i3~aP>DO02}aZ=s8sHOme-O$C}+nk0^A;r2RbVrL75Qg2@ceI7GS{zN| zGz1JJ1b}rCYZ|7`ijL1<=jL)W)#uB|FVok+GdbaEuEc!tzv~A$r3$QP%5eeQ09MQl zteD3IDBU*IRlFc)6D8q3W}PU_ZdTzr%358gio&bm3-tH<#vn{6p$yP%q#8?>2# z&F+aed>iirG9(7RdEJ*ESP^tJV$t{b*4souX*kTF0^tyN5z>#g+idIhfmcgpi2CB% z@DvB@ioyU(syaq&x>#I`u#}7fpOIVv3HEvH;?&6_V49W=OP~q;JzR! zAh`I1j@L1AKD1jP}q z^lo25wmOA1c31t4u{OKAGGC>!>Z{YLscHon;vT&DbUI-CeJn|>uA??>!M8U2W}`KF zf)@m?*fr5O;an6;0szuvWUcUvXq0jW=(ov$SVM5Gd$jrE!=T6oF7)C{uEf?N82q;o#H=sCA%+5Ygt5}@JbS-a!k60{51OWd0dDe^$JOK0kA6)-o*Uqdwq;4RVPC{9))ofUlzmu&x$;s6rzpRic zUbzff=PWxs9LrZFqJDSU7F8{Tgg~xNT9_%;0$@J#0oqpB`5B$;298!5YY%abnzn+} zd}j)vJ~#(&VJbRj{Qn~Jx~X%~glCyZ#3%?N!!Z_yxuuKxtpU&wh{t_5z8w@!U7HD{ z@q2Xo-PC!hshMN0wV3Iz0w54zE{GF&?7br4L7$(V2xQI0Y*1^!eT}gMK)=TnXd%ZE zfge!{#7&WcPXkQz6BU8Dl^ z$&#pax2h)|AVii_=m}cSfd%rIe|g!|DgkNb>xR!}mZJXuSD+=ZnTDe<{X=t~Kg#V$ znL(zRHG5OeGbnRzI>1>B2SmODoE5*StrhO~w6TTnVQWD~%Kqg7R(C_$Va71`KX6ap zMjp)a2I?EQ945^%vhc;*!j*>inD(|0X8-b)V^SZ~&2#uacO91xF`H4mtQI6vvVzil z4)A0CQ*D;UbWiO>5%+WCn?6shdv|OHl->CD-8~tklv;o;Jm_cl1 zmmN^{{xYlsS}*WCY6~P4e4qwByRD-)@23EIR6!?ZLV!65wc09tVWRcBAIl@xK-XE* z(;ud5Y2pLg|01vv_fTrI{8H%LC;b`<=4X(OWFnolBrSu+!7aM9*`CEU(|2qexF?whj*6=pK({H&E)jOc#tPYdn5x9OP~f4pg%dSyc|Rlbw5~(r=a5n z5I#_a`8}HQ*FLM5?L_mdh@O3qfgK&)ajW(DNp^TIys(Ib94c_=?XIh7+6-;}}6V8{Y)p?DPCZEzu9kQs8?u}zo zSpQXU$zVqitwQP82bKG{t5c}!DZcj3s@~uKnB1UJrmgDz_?Q85!Z>|A;DCHGx6$7? dz51-B?ZbVqa>=fiqpbt9?+R{Ql0RJK{SV|^LNx#Y literal 0 HcmV?d00001 diff --git a/src/assets/home/tring4.jpg b/src/assets/home/tring4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82a3a948521e61460de2cbc4404ad18d17abaaaf GIT binary patch literal 77945 zcmbTdc{JPE|3CgxbRF%`V%omTbWs(>yA4!-|Ft(qpz?3%`U_54EB7dw?}`^*ALOq1iz!Dy-izt+a8@A zI(z=NUmJfwx?4B7YU^og9D+9KYG~?eY`lVuAxJ~}>u5DJp#SHku?dWE^OmjKw(kIM zpnVH%($Li0q^0?F)ZpFe;Qt{lU2VOCCr)qP?Q?C*p`Z3x-+o%Y_3)XdKlOb_z8tZ+ ze&f!z?FNS5?cHZ`)byAc?4+%o{eOONIP2$Ni?mu{#m7SZHPbesSR#aS3`Mj#Srj|^3+1x^FZTr2wjSqBPXX!mcLHz ze`faoZ(?`;k7oA2Cief%iw%9FsR0&GQx}3mYq|De3RWn7@LXR)(;HzDAQ^^}gB- zC?oSwj@ntT4$h-25xdS&amqcAzh(XgG+i_7L$rUxM2z33cBHRE;qZ5L8_*BAb>7-7 zDTy0U37^s;vcBWl>2xiRU(hOSWJ$4@f9#d4IQDWqhmZNeH!=|CBnLK4PFhO>RJ1JYK`uv&(kWFG~^y+#8t=Pa52SK8{!RS}#@l zeyB@W2)H9QiN|$pK(AX2qUY4#H;-BP&ae?h`xV4LQPI{LP-2(!2IS6CADB#U_DZ&l z2ZP^$7OBHs#{Uc&>jevu;S=}3rM-ARzdKTZaWY7 z-?lqc>!kfA)>YNRTF#zsd=|aiJx@HW9q(08o{DPwyjVF%`ep+%$*oIcu7?L5HfGeQ zWnhUtnU2F+besD9$h-K0yG2ou*!OWZ!NTqG_cr`$5!YAlIQF1b9^>gk*?{c7u%gQ+ z=`e(-2!21OM3IjlA%spsng0OlPg8!*@~f@l?+KwP;=hVFS9KX7(+*k#EdZZ1CLCo!(mBjOH~Ax)r~ZZNC9E zpWA?>QJX9joJ4j~spUYCJwEZly|T=M^0LO@zc?9~Fgsp%y$;c8lB8ilaOUsKkKKUc z%ChJpTbG>=RM`XV%R7mY$)CNP`?)V^4I#N>=;k!p{tW*O2-6d`OnlJg9vLSqUJ>qE z_gczRaHvuJzom`L@Sm<~w-Ii179j9z`WL0~jaFX>$_|98dLn3aU~;%KU6k9M*ZBCZRn9pB*)QRTUYA@mD8c;dri7=| z%k%s3#U&x8|CyCjnWr?Sjy5+d!rys_Kc%zzX*yG_W2;uSg(@Sf?yIk|K2u!jy;o=^ zQqNF5`bYg*Py5hxQ76(F%N$QsTeV+#U2gXoO`tkQ7Aja43`WG2PZaZJ`!{q)@6Gs! z30{j_yCBXieyY)s-c=x;pCz<)+Qu9Gd--sTVVS?DI?M1AczW%W6|#GQ>8YxB`WB_X zwH0pDx+tN!wNvZANb|>Z)2q>|^#Nu#biXS}L6#WgV4lL1LRnc+vW-(fa!Jx8C7`fm zwi{@Kfc`6=anTpo+0m5LOpAYg#KUE2)YfsZYN9Ec*NY6ZuCDg`hgAMn zHor0is^bL$8Q(vEtTTIQQb(qzI4ka){=;mkoiKH=E zM4zefh*ZQway2d!XTNM z%iczr*{@1)K2=?7Pza-2Kz=v_@RVRvPfwFA_eqh?_y7Iehs zNUNgD7pO+Q?N658Z$RnMy*IDoBgq$Ic_|&iI*15#x6iS{y$4XIZo2V3D084cZ0SSq zEZ&Ru`=Xu;N0(M`Lqcfp*GKQ;ME+^ozZKreI9m7eD6!sZ!m{x5B=4wT#jU^6x25PT_3fE7ru=E%41(vPZ?reb&zT`fV^x=wW}tH)JV=^EK?B7M41I#$ z8Jv1Z&9_+`5YnPFcfYO1Vm_ui;69EkS~QB9%AU=m@Zqw`#hw+7BK~LwYB&`YIq@OW zEUl&AjmnGQ$)btjGSWB6ZHOdpuoqU%aFy~Fhc_EYJqq?0sA0p3onWK8IUzNk2P{kjp}@ z;$;{^&|X^}>R%lz7Yk&Cm&5_-PA+8r2#vxk^m48AhG8-I+#%nNSPa3AK6s9VNJTj_ z)U3eVqH`oSX@Yw7#D_Ycb0q)s8JHJe8fD}S$WnlxRPVFhl=E>siHB+1^`=Dy8Wp!D zmV1u0U)DCLVmIj^#6j%(vrXpTTOG39)rsTQ`i6TLsiKajcp^^`ZDuGQit)sOjy$V; z0(9xuML8t|Je9Mvejzdy8)|Bge%qE1p=7}vy?v-Vxiq^zya<_csWS<5!@FI`M+xT* za`mZOvmXV`-&C`lmNG(GG_F&-EL8kT{Giv9%me!=7J*)7F>2v*1`Ab?4Q1y{k<&UN3te`(%A@DS zqvV&~T4b33)fh{_?&gzjKiq(9FJ)b->37-uTD`hQa7@$5m|w}SuK85strG1dU4!Y)yNm@o6QLI|A6YaUAJFf_OCKqRMsMvUDpz#LLBCxhvK6m_8 zku&Pu#7or2c8_;OpzmtnBA3!B!SGejOJ1wC5kqlo=+V+hbAp2h9N?-B1b&+Oo`8;c zO{%nB2Adu9m{r>Y8xYSU{lTY{7sr$12a1dM!&;XgBPKa(1r4LeG~sLHRqQDK3)Aum z0kX%-D6ed+)7g#u(MnQY^=LxQRD^t?qO~gk-F-E_gnGFjQD98yiLcG~_$B8|Yw_a% z_vU3C;zZ-2051_ZNH6MaO%mj&R*MEayDmA|^NCK~D*c{p@MaVvsmdnpt%|)ev~BJE zP#>}f+tPUeKlazx<}rUV;KV84v^icfzWa*d!wjQOb22nrz3*vxQAT1LKz^`{6Grsy z=Aaq#Cejxer*FI1m*TYj)3G|yD4ZYPerEYT$cRP{pQSoV|u{vdlH78o`+ zlnX03GEC=$lBw}t^_WbYs1MPcV0vN2!<$V%vdr=Vt-g%)a`4SQ={Yl8kUP|vqUHC62 zL+EsT{4*)HB6{Bt>U{kAc!If zwoV^Y?}P4pWbv?0AN(mxx!uuvo6{*M!l@0Y+w)=sbsK$+EYNb~Bn0wgd!r^Keo@RV zernXCnHs##zD%BFDXq4WU+Jw=fA)DT-NM;{U_7g6!Dy%GsxeI_Zgkn?>eJ9X5py!c z=_@@c?Z$VyZ0c7DaJdaEt3lPkb$m*u5xJTF_0TcXnF1(oNIEAL_qi8F9HS{O+r23Q`8At7m2nmyJO{KUY}<$ajFJ~TN)0sy|@8w zqIlV@$6Em=0R>Yej!O#WN&;@W7LBom0xy(c1Di*~$JmHy^}B4k`396sg}*2FOo)X@ z+}Z)H@6-psG(L=Fv3K-!Z9vz8L&vjkwFP%I7evvhxTDi1lN6yuwJz&ad6@4AiYyCx zdPo$>MW2WnM}KMVImm#W=UwNu&8mfoK1bbhzL{@xJ~d`ZW1J4021^=4(XH2CjbbadUpp4jz1d$Ao8|M!;+6I-oUg zCDXcnOmJ(mpJ#DW>e$G%nu-Y_NDFlttG8vRqF-ShV6iSFE8ElLg| zdP(SG(#Gga*!kG|V4fqE5@2I-udB^wpi>{SP$TP^9xu4Xc|~Nmd0}_sD;s6-?1tZx zpI@pP2wi&+SQt!Cp6KzK@)#haMWe#-67L+V}A4XX!(9pmqq zOz4fCthci;8pkPVYSY?=xR_$!8HdA0zTNLwL%hjYHLQ(%HH|jNusP4O#eR49`EJKc ztnDVwL_VuX+h&an$N_0fg&%o&M0pY#Fx!Aqp3S@HR9{g(b^5_s<%S1MOsEz@k@M)~ zFT&s-t3u~5NSv^pi|B$o&oA!eGA|%TMXZN&N1RvTOCw5uZ;ht1QWIz6PC&oCHUA+e z#??|@0Tw~OX~1qg@Pis-m&SzFk4>~zku=w$TSUd#TX$JME@2a!`Q^K3NISL?tpZc6Fp2?IUeYj`vF&IHqYMs#iw^#CeR0K;pVjUpsI@omkWF200k#5|#c#Q$V+%>D#<3=kZC~{g7#IQC>1Z{d9&P z^WcLe)+0FG=d279964bDIejQn+Fti~G)UU)58i{etiTs%nxSh3@&~u57U~1(UMnf& zNbyyCSBw53S>btNM%`O)6?@yh`Ag&|@!TdeGeAt34r#P-eXbcHbg;U^U+?UUpK{<- zM>rICf4RO&j_Po-4-8NYH7(?e=jUZ}e3-S9C3_jYM2kL~tY#&%?l(yz*sKo|0v~5a zSHN=g)$fB&HMZ;bC3-VJvFUi76*_$p z-i(IPWyXpY{KK8Cy~tpNf5A4yH0~dd;ro~`chhf9g^U+>Hm)S%6f@m^y^|KB$_rt6 z69bK^IsD@oGk3X%!{>IC#5m_I{oKf`8g850ITsR=6kxpEqhInzA^;IX<_yA~p6^e= zUDJyhdG<;fTD7z1_tr%5(E&CaR6}@_Szz9A?HMX!>tKF2xX`HN$XjTix9u)aF z4WzT7Au+;?7!g2y|6~Iazom2>spVPM2kIMfW);lz!pW8c!GHonJ`>IS+Sd9gxJ=4Q z)=gaEoHoH9t(cG?8jCC9BjuFLhIzntHlQVDqj=O95ED?6E5br(=6~@fDNl%C>uoa2 z<8yruFHya=Z$LDkWEe5=&UR5p&YHf*d`HRWv5wn2zBYylHTNQa^cYi9t?gdqDV~%2 zK6W`Zkl+SLS;pHa=F9%lrYJ=K&0ei}wqr@n-}h_aB%sS5C*y=nhJrk&z~6uD@`8Ay z>It<{NxNpe7W2LF2BcBbf5yp?PkK=^oF(y|r!O&~w3Z=96{YB4f_h&lCr)iZs_;+2 z7hO`=U==ON7OH_?E!dxwbZge#c6razK%-7G9w;~H6bN4`Nuzp63fF4yb5i}Pn?Ew4 zo*TY6uB%-_=ptS?tc|y>JL?&PEpf&a?8iwdP@2`(GrO$~YuriNT7IvK!H~g5RlM#q z$!Km(2fo>5Pjw=fhJ2P~DJpK6YE>WgAgI0MVKgY>yij@aD1bdwj(r;!b&6Ox!*SWu zRwE<75gIevF|QJ1WUb>xX@1L+pv5m^4|@`6$zsPE$)C5t{}Jhy?rjV zjF&iAt_xZkw- zbBn7@Ul#trM&b;pH`^HDaz6!aa80up+lYDdjy|`Xwzw+f0B1MwXuW&BNyG z%i@Cl>IiBBSi1-9@(kfmrP|=JJo35psFPp5L^XcpeDIO$ivr{Z6fDz+{Ugddyt}{b zV2It&;*a?LSJVwCtv)%RFaRgwcXbpb2d6O*yf|J#_p$y0(|=XHJ8^JwfGT5mVz;8N+V2JfQH1r1QL9yi$4sM@^QeVx z){S2ms6#(c8UUlpk|1B7=8rx-Mh53D#0E%_Tl0C-r2kHut^JIMFwli!FLCEL?lM4jFj?3aDq zm%TS2E=j|vROx>vAI>9bz9*MYuA<+ngdsG~d?@*(ssw|!e4to?`sEayWp>h+VV78W zlq(8;zvKYq;Gt_zvy~xgGlUR)ux3OyS;`;QPQg#sbXW?GZL(^rk=54txcp1ix_)3@ z8bALuDl0Uamw4B!fXE+qIXrr#qU7{78JVS*zFv?CBnn%*2cAqE*G2opD8Ht|_Jqt^ z+YDxwm%^&?WR812a@jkqe2m;3Cuo!zRl85JObpTdTCzxHMsR(i-j_{Oo*V++g)B>* zy;_1*_rO@~A<{;*Ftk_QVI`Z>yk2Bt+~)?Ja8_MXfc_9q+ODu00UZXA6YUf;u@8S( z^HfJ@ub+>L{xJ!xw_1=jH6e?FKGCkfU#Z>&AZDNNmws210!(daXtRC+>+=x5O>?DVba zpS_xbV-n=fBi5|3EXLj&Z&u+ylvRoOs}z}olk`Dkw5obQ+&0)_Eb<#oR_%EL2Z$`Zjo_fH=&`0LS`>ciyO%5sjRSXw{ zwgv%i(7Q(fPgMz^)Q%;o9jZL zj}ZaLt*!Pd4#rE`gk!rA(# zH@fKi-5fayUu5MFV0$TVU~-F21z|^3AYKO8wKm=|?`=x)V@1sQ+vo^(C|g7>3&%~@ zm@1g7o9Gkia|(L}!d$hEvehW_0Jxb<1kDH&2{bE@hn*QhV=I|i2~WZ73Ey}7y0Hus zLbMII(1R&(7|P%AV+E__9=;Qyhr$2G$w0Yy%q!SU`z(0{l(RN*atixOEBj7=|K;jx zHgJY^RboKba`Sj7^3`a{SQ2CmEz$OyaK)pobXk!Ec(}pHsvan9NE0Y9OiiY_#Ee8jl*U2yDY)s)82EA+=_2Q zwt{YP>Fd}bAFtKUB!5nEz5E2=)a4Tfg3Ln`%`-KzAw1jQFnI=2zEHe;gfS)D9Q-ye zvgFO9nZN*%)4xxsP1DYxH9@86P%TycBtDJnXa|-8erHuP@XmflsibYm5(-@T67_B^ z;BR@_&BiOYsIPi5`mn8utMfgu7tQysF4vUmnaDFRb8G1zbM1q>MyE#OrrVi^FLLP} z_xKYMeB0HVe}~|N&WD)>>n6amyZtmV{dENXZ*t!2#MBHd><2n0k&K_RYj#tOJo%(p_ z&K~s)dj-Co;WSe+%L_g&NoR^F|1fqvEIMa%{MJR!=8==Xld=jyo9V%P+<;69b)9eyCC?_E%b6^>nE_63k(4f_$dj`z7}mYJTk6FY z$);JW_s48au?)Tyx1PRtjoc8t`0tBitI3qyLh=8S5R@n>RCGfA4j0f zkgs|2Z2WsXV=w62tbqa!>a%9_8?aL>LA8Vc826hm3xW2m>*^b1LuNTL0bq&M3MMpU z*=#%XH)^!b6A-hM{5`>=_72Y)Bd7IlN@%sT-1!`7$4}r4xhYSs%|R30wNaobUgAmoWVXU&;sG$`+g)0}IPvo72dV%{SzWrprh9q;JT1GZp(%H=u^fC8rB+Z3=?U#imv! z!u3IsS8a%yIvm_`Ce$&0+tMexab3J{YDn0sRJZC=%9mBve>$^i(p;pVg5Hjxb9 zMegatQSm?{^w#o{&};_DJwVvbJXASTllImPG6G6_!B=U__e`TtvMr_}H}g~ z8~V`9tZKzc&4C(5Ygfaj1g~t8@z$#KELR_=Gi(Wd8R_-v!3WE<9Y1N$7OKi;8Yj?e z8xW_?!v1QQJRC!w-oJM0EG{YbrBeE%ZNGvcP9yxQ>!pL2wMzA1lFN^iU+sCehHJz} z-$D-Dnw^~MH0pu}H=p~W&N{9uLLaOs1<%~7cmpz3Er(bVrn&?Ex@z1q-hw?HvVWH7 zCBX<%mk*toaT2|cE}X$BQ;2lzkIuW+?qR3T_gqLTxhLOes8}7v<4~0u(pwwQ-`Fd9 zzf@piaXj(pseDQSyUs9p%nY#seZn-&_-kA<#@c5{<0}*z&XYfD;Yr&dKb2RhM;y*O?Ibq>L2kC8NAv z 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 F{{suXJ&OPU literal 0 HcmV?d00001 diff --git a/src/assets/home/tring5.jpg b/src/assets/home/tring5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b07d2e57b7c29cdda9b7642d1848396a52c3a4c GIT binary patch literal 113322 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 SXq5gJi>r=SN@t+=eg6v_S=r$L literal 0 HcmV?d00001 diff --git a/src/assets/home/tring6.jpg b/src/assets/home/tring6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..570155aba07badf425707581d3533de84612cd8e GIT binary patch literal 155948 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 )u;vGt8!1%dP>u+w!BrVh; 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 literal 0 HcmV?d00001 diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..08735de1ba1e4d38471130b8a5427c877ba24701 GIT binary patch literal 10099 zcmZ`}INFc6#x1PJa$@-;~U9R}2^<3ihsIX4jHTv6o-%X^76`b;N30~*> zPk5hn@6O?`#4^UxZ=+756-6URlt@w_|0``uTS}cgJTB=rdh_!`R`QWkAO{RXev_KG z51|3GPgn>^_cJ*U<62cv3v@?>F8}ewJ)zmi_Ct2M7a2ob&vaPo#J!$rNg0)@mH8VV zjo9$)e*XQ|@}!NwgCsB*Eh6`BT8!OJdkPy1PVvFE`5SFCFO%%c_UQOYJ`!?7QVvR| zRCF5eTIzn561b8Di2R}W#G^SzHdE_mlfL`E@VJ-;C9qkuL|Nagv^1-pKDX^X6%HfV zT4yzTdGk}~Mv=+#DmZs7lLD3)9Xlzv2*?9XEe{#_@swuln zP|V!A0tP08!Tup~CHAc~eQ3L|tDpPAmyz8xh>qJ;K~Nka+e|=6It>>5XRVb+$fK!q z3E{}fxVN~3UrvxC50*h3F)4&ePv7UwIFzt55iQ_;-}h}%(a~k4?JDKk=JuYBvIdXy znE4bN-iu`jV7JGtyN;Ga_T=a8*>icbGTroo>8QO^TH_G{P21ESd=0+^aU zPoDdSILMd#w^r)z)iq$Vrti_rKoOp<+cGWrbOYDP?;T9|CWzoM=U5_G%$Ja|s12F| z@nL-`mw+d(3^rKU((!LY^O7lM?;4+B7L%^YFua2+Z3SHo-?CHUg#7$KmK?PP`Ew@Y# zNdF33msFoP=}$FS%~a%9yj?(0h!TBMac0?ptVzgCdv9m;Ujv=P zgN`CVKJtydibX!iQRm`0i#?_bTYWV zkWHZ(cD=&ecPx}~-Lbr0o_-@!D*hs?x*Fid#z>-9-t&yY1DOLnJmH8deq z;#;$0s<0cYPH7dy`@7|g&_C~f&;)kdZ2zeeQYTdJBwTG$1t0myx^# zo{c~a+sF5k$3%wZ`BIliIgl(TMwM?r2=>CvQ#?F|rPS|Emu)~pqG4eJ8MYvt^1X)b z7ot9`Uvn~h;VDJpKmpLNV*lyYK&Tw;w}joa0$)bh?OcYPjgvbDmnAL3IG?;TSXEX>nAasnqIl9*do-k~MV*HFHtC0gZxZ@{wb zf}nk!5--XG%%2+ouN1c8oCRk84tp6BJ$-SkW+XbZFN|?M z_`>9pXG8<25|^ne%Yxd`2rV@ZLvS#0AYF7}M^mpVh~;-jU#f#75wAwsAyZ(yWM*S) zWrT>iwS&{K@@Eb6^{++&8Dy=sWf_=1tN4K`Dk|DXo@;%|yGfFa?`}Csqcugid&S&y zF=*Xcp+@6>I?28Z0&850@Le)=DGolDmNd8F?e^^)fItMNtZEP0Se7+oA8WYHB78l4 zwCCqr`C}3n(5J~+e$7n-SwMG36Qul^G=@`&t%KLXaHWOi@wzm zG-@~e=O7~%grxTkLuIct5mEB=bnRBNmQR+wM3od!&a1X5Kb1PXn!S(k5II&YV2+4(miH_}KSz z0ns~h$PxK5ctJv;Y+j^BJ+u0!lL`&~OERgBW`qUT%1XE2KM*pxe_$$mx? zzyZ52wY5!t=oJw4o4x_Xzl~3KUx-suMe1(k4H(dVXG0H}_k?izB4vWSa~#M(j}<0* zH_G$~=693)e0(1JxnE@~uw-jziC+POA^um~y#1KKrFUJ|t}Ubjz_|0n@Bs}*Fkq1M zg|=Dr(ro#Gm&7nNT8*;eQyPfGe$gl{{2@_691%d7Lr0s=g8Ejue(d#QIDwUHVb~w` zodXI^HZV%E9f^G55cctwBSx}V*EVVnKw;-n@q5{J*|66Flbm@*<3{AIg=5v9YK`8m zcmsS!3#ip=o!Q|>QbPAFM=yu_WjwW{B8|$zL z%W>#P_Wl_M236baFhUM{9aI`S#f?` zz8hH3Q^vQovM~Mg3{EJMWOHkS^Vw;hM}Q0_mRT{9%&HTo`xQ47FZ{LzX%2?<*}1KI z3Ipd?5~PyPOj%uw98q2CP$sEMx%CxeTs-alG)}pD)oftsB|m%d1*6hYOvq;2B~`q>R!m`v&iiaiS0w@m-H*`I=j8)Hc#aT&_X_1Bxct%Z2yB-dq*BP0ft8TOZ zLO-|3TTd^(|9I`0DUUkcefB_c06)D>=A5)WaimYWO>24KB~eL6XjRiGB1pvxMoE=D zVrtnCX6d;$fjjr2VrKe4!SP!r&p{|G|JrE0JYWZNdsd>_1#N;xyJ>@FPo>&?|Kwn` z^=|HkF(fS~0hf=<{=y5daM7s4Zurty#Jp`zQWzF4AD$kK#3kQwHThK1cH7Q~mz$+v z-T4DtZ%1-5kCsBcZl7veaFR1vzG>_lU3JSfF56?p_goXS2t}fDyn@N49EHCDE4^c;_s(IF)NwK z$(6i=A(S+Xh4vU;_~x+2=gWPu&+VToPSeDPAPZ3kux!DXM*Ak*@*%O-CFG7BDAfFX zpzZEbQp;nQ!3a?e121%r#t)Y6(91%WsZZS!$|s^-i_03ffAe6jBl(JITRTs$j0@*d z4G*rf=nl$F&MSsR(&!Oy-Oxg)r{;M1laHp$=q5Qo=MOQ$poUXLr_Tx|ZgTm73=Y&YV zAKVA#wQA+~k|ZekG8zhaOF0&}YX~ky^B^CQSXy2>i64Acw!(c*vdA63xS0idtivAh#n1&-+biUc^<63lfp6$aTyozr9RoWdJ}>8>e0$Q> zumL(?SJxex<}@@!11+l%7dIi>A~5J*vY>anYs87}Ufz`s_uU=Fbey`FppqHxI=IkQ zkayOtDx?gv)RyMO)Htp}I2PQ-MEN1J^r(QP^#XK~9bCM)^Fxwy7IOdh1VV=x- zoH)g@iAQJsGGWPCO|?^QY}4pi9L0cWXy)(>HVr;G&j+IOlX)KlbO>@Bz5H52<^&C) zeE3psR-PB=tzw>+kIuD>8SnNoQVLmqLvpM>qG=B~Y-W1C|Eg z@oJNIxcS>pH{ohRDhv}77eDw%@A4B{u=00HUnSIBKHd4VHKhtE=^g6fN$;myvFE*g zT3My=f%hcu`~2dZ7R`kuU%eb{aIzrTe_CEG_v{Gcz7)a)rMFvhDCDGuN{++=5^Yg2 zc1B@0;rGSNC4l$oi-Y{MIpl~bEiYXm8t;H4rq5&wZV0r$zITwJMHDs$kE>*?w;3Yk zJscv__?F~l7$NYZMV9VN05l-f0SD<&3GYmuiE4pzkFIFF<#FjKdFc>M9Ymn=Rh5eK zbw@(~j=YM&ch zEN~53g=8ZZQn#tG$88v|N3qQ^lxYkJuaAZkTz)^Ox@qhpOOgCOBHUV5i7TeI_m3}T zFcss@hRCF)ru3)kH6^aS3E`LiT8?m@i(8k5pL${?L%k4KmZ=CCa&MjAX^t&Y{F0xKaq$8ow5*oDu)K zbp%y0_$v-IkZV-q)i`~p*bq_lAOe3cU$84#A2`nW-#y5V{?mHDYVJ9?jgv1# zV*@5Q%lxqZAbpt|e}EI*J|$~x+1hX8^yZ`W0*Wrr#Px=lk~&dmR?b~zXvSx`3@*oG z1`ace)520UKHPcHMa3)Pv8yU#U<12K-t37`GKFbLavm`0WT+t&iPwX?sH}1P7ek7K z5Te*fNZLQOU%f+Fh4fbGdQ6{6t0QQ{=u_i?BBrgeO;67`t=EC{9~+l|rJv({AeHtG%a`ZK|p8!3@{I^46Z zA-%@U8Xa4^e>WrRTvB8Q%C2}$A`%utAbc2>&Libit){hEtu^_-LL+qT(8QLGCky8hrH8Vk2X zGn}yRHe|BVfk}qC8&K0+&o4xuWk#Shu6fA|hZ#8+t>lNW;uFE%txPa7iZwVpIM^KN zyL)&DF_dK=q{r0w`uKe=-AL~Xn38zypRYo#$eu+mqJlwQA5nS!)+0%>CNqDL9~v>$ zpi7na+f->byIOvwNmv*bqvos#EwJzG_7pNCP-@YG)j3Y8)g}1ps-pUu?8TOMG;m5c zG7DE{i_N4~Mwiv=6LG>gXy^>FBMiaE;lGKf%J6W;bou@X*}-BGs?cw3q?_Z4(XONF zAS-OEO4wI_ex6xZ`aCw~vekq94KoM~M`_+12f{B+A)StFe||w9M4{1Zl9kFB21czt zhOmIMx4#5L`HuD|##ds)=Fl1R`su z*mSS3$SCE)z)4LQdSa@IKC0gtdL^6sJ{+~f{3ejMDKUUCqqHW$HT|Nou{xqstylr) zJ7H|v@&1X-P1SO9(&W0?pP4`G@4@E3{=E}BrNUU?3>tPy?HJqxnfced;;|@3kk~LA zrNFXHzxp@ofz^uWsimr<#RcA(%&1Ghp)|;9ODK{jU8B5J#K4GDQAwX1LcDE>xY^Yc zuyc^*p-^`m<=mkdU5)5;&J01^bClUxI}_4Ru_g>^L_RN-R%ynwC%hVEO-cYWlKj%Sp!RF`-LfVdPMK3&eGhPUX6+Ll_|?& zL?Uq4PviVV7;*l?r^u&22OYe^k2@!R5*o5nn)6cLa2uL1=zk-!wet$}R7%KXM zF-T99#XX__#6x=~$&f?RWB5+i%M~?1wPXK^xhDOo663XofbCgU4wSBo=H|)ijVjrc zisVI1;m%KZfKhqYm+hw4zYSGm)BNAS>*Q;yTzKIwUt~jGuc=jhP~}N*bU8vXNN-Ii z12V{wv^2L}$^X(IB4y!z3{+4|;MJWgq?k61b{YE0lll)C@m9TX7bLJ<|6Mat^o!Lv z3RAqZ8gCql?#14O|I*tW-h8i^f7`NK4Za=h)1=XGQH%$)24Nvt8=bcZO{+_=TYHxi z(ktd9j8Lt9_?fDwt*OZ;K}y80W@3=N0=^z#xU%uB!v-e2h2wNY3Mqock*uEK%R{O# z{Xi&tr(`m6y-jD&SVT%=i=CI>_R9F&gF_etZ&#$=DaE4o8C{`hog9Cm%i(D`-^iTK zJTlP3)0dMr4~=PyURC%f5|IJle$r$Gv^6XMh?N)Hvm)nkl0gOi)=ufHG~JI%{^aw6 z6%*;Zcn%xo^88DyQsq?Bmn!=?V*>bww-WWk+SkN?(n#6n$Q&A`@2I*|y<{6qd@7<2 zDw%xe zF@BHqcyR)67{n*J2|84VkYi1KKZ=21wk=K5qE^*9=)d0U)CDy)^lXAYN))E}%$d(D z;+Tmr5-4q-I_-IJeX4wi97CFwUJ)v1d3B-r z)(tIHFQgJh!Ck?~tOX6=#Y=~h`fzm<#Om|OCwp;)EIN%O*A{zUfz^;UjKowA9pzX+=q{KH+CzMx z)7%1l33c3xwZ#A@wD?2#H@UN;LJqHvC((hx1Q%zx` zV*D=Fa@QwMro}%G+Zw$?xblBo$jis5Lb>r^dFl8nOU$kAfQuRxW;VAW?N%{Z2^Zv! zoA5+`t=1IU(Yfdfoyb*QtH@Z~u#%dn4C3OBe1L+J0i@=U@yeY5yzcTY84jVS z-KxX3n%3V<3uR_AOqy9qJyk1yd>-EaaC8(lHKZ-Sug;mAAGK2(1^9Ls6A@Q^?OQC* zKU#Jk5R{~4E$iVxz5LXxTOfb*M+&JA_ZTV1b7Zo1u(~<8iu+j_WiQ|J!{=0#S*1?| zHrqCD-2=z*3Ay4?KaMNlxF4eFeUjgk8lAjF#zuEW5%vCIVi<&s#7TjHRb4ZG>7gco zINv#$z!qSG*M#}u3@imlzV4x0>9;J|EPi*7`kL48-oLC-Pe|CP10NSpF6U$m- zWZNhqwF!Mh>S zK?ONFq1^3yh;OC*R$OSsbu=C~$!DhgEJN}u3qwN(9$7^<={?yUE(~B90FXLI>n!%+ zE%>8)01G}`9hOlGWo`;Fb6_;=;VTcJi$iXlJ*d}QGUVTYZZHvHU`F2iVe)U;&o|*Y zZgBCm>ijL)JBx1C$)yIBuAX7`d&uf57=3IB=NNkZOz}gHh)Tzgwpvq1XvQp;hQZS8L#Q0j>-Y82i5CaqQdH4A#Vm)bd`2Ow{ zK2D}Ih65OEU11s+*o{(i=BvhUHIoHwN%xLg*FQV|S9a%j^fT**#39||Zz^4BU4djE z#0V_y^+^swgyoChH>_AUrq067t_G7%NJzMm(a_Myxbr#fdBmpB)N?U?mm&fonU7CU z0-q~_0Je5o{w#YGHA4AznJ!B@;MmXfgYciQdBp@7dYg+pAu1 z&z3Of2mTElzr`U_UtMfGHVUxNpIPZ~8Q_)FCtjHM@DAn(R9c;I@RMo56mU(0jJcLin*gSRlPnz!sznIkq zWhur&EA#1EhAuGvIZIDR!0hc?GBxnruX&9EE;cSSg1iCc3IJ3uIla%T>5u>K8S^dTWY4ch(J?497K)6Lmtx3RlMAKL%kI27d}A^Y;(Cc zgj7eCk@014gE#IWhr-U^pE+4sF->SP^og}#)!&eiFe(3Y7l8Oxeo;|T&}u^(8wxRO zL=3pJ$b4hG74wz4bRJy^v|~k(awOw(wnQl?O(zm`(Cqr(;j;HfbvArPFYsmJmoMr0 zZVmB+86e!+)@D=!phIYCYe(Tpr?ERPA|Ak_BEg;to0}#jJByx&<)DJZzMDHwM)1?w zrr!RCw{vqF&dK!^?1BeBPZUe7!5egTS&*jPiL{z}|-gr#>wMd1fk@=9znt zY3oP*yKmyU`YPJ^1(trwk?Iw<7k5|VDUlUM24KV8eMt@}zlL1Colse*H}G z4s6!`>~1r}Vw725Q&O}DFs;af^pN*p-dhB-;8zbv6#y3VT32bpx*_%Qi{(h&py|-5($<**| z%QM+`?0!M8$R;i}?k@~B+YT^Jwt8P@jtIX~=yN8x?JIuqE^0k%(i@q+a0r3S+DAt8 zl7i&q=zzhMKDiw$RmGrUYgPE_5g9ElR11+S;7KKoZXqL+0@)e{>g(wvD<~*jR^%in z*MqO9{B*0w-jaQvU)AL1D6%+!3X>2Sao^j_K514VS1s?4dOp(qbYtGw?kw1_k8C-Rlv zp;6)F!$#)#&gq5|s|bO%`MoaIMbJ{Efv?`D%ch;qVo!r0)7G{7;urq|DB(Dv5Q!&g zBu>F1HKtAy0pQ2uqo>o==f3=u+CwrFAVWZ(0SYB0CA9lnaa~;!9N@kij6cpq?0T*a zGV9j3X)EmVU7KRaVGQ9F6cilB0RH_NSSpiR0^p1dk;~RL;K&<8Wlj9bmvU8@DFZ%9 zui|Z5N!nIcQqfS*+W+m0^%t4i0Jgt#f)_~73}kQ`0`mGoof|%!s^ylc? zq^VNGkI64dEa2AGR>twD133qQ!BlEBvMk?4X3MamAW~9NUxi(vAW%J#?^?#6w&yRG*TY*A zUBxQnv7@6(?Fs4ny?J<2{DK#z0+~_t-PP6c3Sd8fnXqrj1tW&b@Z-vvPot|(Jqx45 z^I2?hAtA^)Z}xOL)UPQBu*x#d1FKlI&ox2&tu4Qt<~B5-UWdRKo0+Y;vqNEs>AU*X z!^1

h}@aZZlgW?{(8`E*d`GyHeD*F)}fEdR(31TyfP@r|+O6GkI0#l28XN{GOXr zHWZ0&;IqxYy{WW;o2i4Q=$^Ye^@+jBo2*(Jc~584Ot-^p-Z`7Kh1c5qXHt5I%ZqDP z>+jHkC{&dE58rz?wl0yLf4^WC?z&V{U7aiC&GY1mu9-S*KQv~NE#T06OWwZZ5 z7QLuLlo2d0DmqhKrm2il0?5u{2D+NQ+qkCTG_T9g%DSd>X(C5LA#(V;Py#^MOew$M z6Dw@v15RgWCu4C@3Aco#b{%+yW@tpLP{>(t=rNP( zgV*iP!WG897t$By8wbfDpJyZ{;^Av+A2lRN-==>vT^|V!z9Ez*pJ&y6Noxf1Ps#LK z1X(qC%UgBjmQ;HdJ^eN}g-|H6-p!;+a0d8z@(@m=S|loD(iVj3ig*#Qo{$eTcSW7wJoi{xvv*Ty&uhVmiQJ zVdv-Pr}Ws3ie_eIjdB矢量版玖琏LOGO玖琏科技 \ No newline at end of file diff --git a/src/assets/logo1.png b/src/assets/logo1.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe8da4851a8043cd6d4969df65b6ffd9649ae47 GIT binary patch literal 8608 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 B9wGn$ literal 0 HcmV?d00001 diff --git a/src/assets/logo_.png b/src/assets/logo_.png new file mode 100644 index 0000000000000000000000000000000000000000..e250916ab2d432e1f70e015a54722dd713e65a77 GIT binary patch literal 11827 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 literal 0 HcmV?d00001 diff --git a/src/assets/pay_images/AliPayLogo.png b/src/assets/pay_images/AliPayLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..37123dfeb602431ff5f8d46801808f5ed3544b50 GIT binary patch literal 31449 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 O1eE0=axj_q5&r?v#ccBc literal 0 HcmV?d00001 diff --git a/src/assets/pay_images/PayFail.png b/src/assets/pay_images/PayFail.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ab0dbc6934570113159cb8b90e66315b1f4bb2 GIT binary patch literal 69757 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ℑsW_GQ=|D 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 literal 0 HcmV?d00001 diff --git a/src/assets/pay_images/WePayLogo.png b/src/assets/pay_images/WePayLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..544e58a7dcae16f456187130642777914f4c7eb1 GIT binary patch literal 10480 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 Y@I%4wUKlL_-z}n}VW?iK`Xb{003Hhk@&Et; literal 0 HcmV?d00001 diff --git a/src/assets/pay_images/WePayLogoInfo.png b/src/assets/pay_images/WePayLogoInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c66bf6c384b43742db76442b60e9c652b0e98b GIT binary patch literal 7171 zcmb7{bx@UG)bAhCLm%=W9fBZT64EV#Akrb7hmr=7PHE{*r8~}%?r!PskT`S*!h3#q z?wz^+zR%2#+0V?LwfEZVyFM#I?Y#mXHU%~S0C;Z|Wz_)y1syrp0%0P1R^feV}Y9YX8{17i&-B%bP{gJ z#Mf>t2(+ZV{4I+5@srD_5{vgD`tgn=CZ)8 zq`rmgMQR!dozN~9HGK6(93S7$-M8#z?mdiojT8725;4c`=Gy|o>LH>c^R%(5iamp^ z{-~si>*#dg-Qg}Pj9vgZMf39Xb*+|oK&f&BPyweI&KE@e8&5$^YRuXIT|BVPK(vR0 z5~mIfaB2*Y00ZPe^~XAMY#eG89329DpCA(8+jE_{aY~r_ZXcx0!d@QKTVo_1fUZ_1!QQ5 zN73k%(Q>(`+Sf~roI>D=C_u+>(rC)NDLxW-(gcOa`RV#5{brY4jkF1b6>N#M&5)Ur z!APvQho(G+3jh>%lbw%35^;OG+Z(%~Dr_JsFcq?gcxBu#dn+JGoE6*dmeF_URtEB98U z_!HlT<9ej;HS+J{lJ_a_IbAZXqN5<_-)9pC_e%Acyf5;zke~TlbifC z2JEEY&U7N+Y78pjnT4+V5f|*-(Jdl)^0lXxS$>C{BbZ_kjRFHaFl^wbV1* zPLlEt{LD`3mJSH238t(h?u!mlur%hjKNWT!d9u`VjSi7{^oD9Qid@3<4RC!Yj}YG8 zI*~!Zp%Vntm^{0Syd@M1U1|VCY(g&*PG}l4&oBmpq{W~!m?-jp_b;S72q*c#&^zE< zh*~0T8*iw{c+TNWA{=cX`8RH9fR6Xu!?zX%p2UFK4`|bX(_(-<+@C|@)H>P zC+9;aDe7s&{2TL&Cg1J5xdLCm#hCd|^59!WEtnWYg~=I5=uj~ClbP-42x!F$m{IEp zx|33NWSbyBFHj@>iH|^^g27#OfpKvPI?6gS#Y{(x^+Zh|ZLFYRp01Y+3B{`QOx{Fy zJ)Wi_HE}xf<;*AaH1yd_pI+h<8zm^dz#sg+{T`d1DUSCo&ReMBk|Iap$3pQbuuY~i z^I@F*;OaK0*1w!CB_0+>5U2Y6ez1ERMk3N1zNw6r|3bYmkw{6vLShH~M-H!aT5jow z(UR;i&6H4UHkZ7v z98>pDk5wE0U{ug%^e^zQ8D4E@hG#hH%utg{x{Av-ix#Zx=S78JAMaa?5zjtliI}DENIf>!-pCnMz~yV|Zg_RZcbT}S?pO?BK9ITZdgsPn?5v!G%dM}{}KOfcIb70bv1N_ zf3PyCaAkj4a0U5;m_pBho;)VCr^VniV26Uo8o({3nt$d zyo58KgjsC~ctXT2%N?mq%lTI=mZ731rZ&7wg*}D6+ik3)iO_V*rpfx>t|KD@?91iz z<%35t!ZVrBY?HQymZgX2kRNiHy-JahwC2j+&KexD zAKK4q+o@4%XW(XtWDGYJS7cQ5xM$d}k!+I0vQDvHeRNplIeIw4K1x5rJQlt-xn{by zzaFO^p(3K5edGGZ$Jy0w#NE!R<*;yrzq_QTr29bIiqb02CF?=}^7CEXFj0zo3gn}G z(YGRp9Piulycxqs6Abl*y&T9?V3J@KShyXV|UWSqhOW@e8cui0z*F9YlALw97S zP5!60siUrWZtJyt9-|&K_2Y*OTc9?7Qc2?AutVjg-Y+v!lO%IZgl)=%BJ>R-xaumhiY$j?3W*3o?Xi!4sBf>?Ut+B z+iS7x)n7-`D2h1kWcWKSW*nz`G&t$K!tavW>3q5N)91^U+J4?x_j32>TACm13UsLG z#Wp3IWVtK!I_$_Zr!hs zAs*N#%FBk{v7S{AZHxc@Jo`)V$FKge#-hW1{nog{c)VMe0D+Gcmi?Ic^gC>0N?}A{ zhEbj|IyQ@zmJ*Mm_1t_cVWX(Fhp3mb0*G=%n zJ=0VUACfld%oNpC0Kl6G0Q`dh;O+@I9sqzFHvs%G1^|&%0Dw4tH|muK07CA!vQiqJ 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 a2?dCi(?E;O*e3yy-&?u&vX#=tf&T->E01vi literal 0 HcmV?d00001 diff --git a/src/assets/upSection.png b/src/assets/upSection.png new file mode 100644 index 0000000000000000000000000000000000000000..c30ac58be2b500fc720fd32de19d56f9c88d8d88 GIT binary patch literal 5057 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 { + /** 鼠标按下,计算当前元素距离可视区的距离*/ + const disX = e.clientX - dialogHeaderEl.offsetLeft; + const disY = e.clientY - dialogHeaderEl.offsetTop; + + /** 获取到的值带px 正则匹配替换*/ + let styL, styT; + + /** 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px*/ + if (sty.left.includes('%')) { + // eslint-disable-next-line no-useless-escape + styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100); + styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100); + } else { + // eslint-disable-next-line no-useless-escape + styL = +sty.left.replace(/\px/g, ''); + // eslint-disable-next-line no-useless-escape + styT = +sty.top.replace(/\px/g, ''); + } + + document.onmousemove = function (e) { + /** 通过事件委托,计算移动的距离*/ + const l = e.clientX - disX; + const t = e.clientY - disY; + + /** 移动当前元素*/ + dragDom.style.left = `${l + styL}px`; + dragDom.style.top = `${t + styT}px`; + + /** 刷新提示标签位置*/ + store.dispatch('training/emitTipFresh'); + + /** 将此时的位置传出去*/ + // binding.value({ x: e.pageX, y: e.pageY }); + }; + + document.onmouseup = function () { + document.onmousemove = null; + document.onmouseup = null; + }; + }; + } +}); + +/** + *弹窗宽度拖大,拖小:dialogDragWidth + * @param {*} el + * @param {*} binding + * @param {*} vnode + * @param {*} oldvNode + */ +Vue.directive('dialogDragWidth', { + bind(el, binding) { + const dragDom = binding.value.$el.querySelector('.el-dialog'); + + el.onmousedown = (e) => { + + /** 鼠标按下,计算当前元素距离可视区的距离*/ + const disX = e.clientX - el.offsetLeft; + + document.onmousemove = function (e) { + /** 移动时禁用默认事件*/ + e.preventDefault(); + + /** 通过事件委托,计算移动的距离*/ + const l = e.clientX - disX; + dragDom.style.width = `${l}px`; + }; + + document.onmouseup = function () { + document.onmousemove = null; + document.onmouseup = null; + }; + }; + } +}); + +/** + * 弹窗拖拽:v-quickEntryDrag + * @param {*} el + * @param {*} binding + * @param {*} vnode + * @param {*} oldvNode + */ +Vue.directive('quickMenuDrag', { + bind(el) { + const dragDom = el; + dragDom.style.cursor = 'move'; + + /** 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);*/ + const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null); + + dragDom.onmousedown = (e) => { + /** 鼠标按下,计算当前元素距离可视区的距离*/ + const disX = e.clientX; + const disY = e.clientY; + + /** 获取到的值带px 正则匹配替换*/ + let styL, styT; + + /** 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px*/ + if (sty.left.includes('%')) { + styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100); + styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100); + } else { + styL = +sty.left.replace(/\px/g, ''); + styT = +sty.top.replace(/\px/g, ''); + } + + document.onmousemove = function (e) { + /** 通过事件委托,计算移动的距离*/ + const l = e.clientX - disX; + const t = e.clientY - disY; + + /** 移动当前元素*/ + dragDom.style.left = `${l + styL}px`; + dragDom.style.top = `${t + styT}px`; + + /** 将此时的位置传出去*/ + // binding.value({ x: e.pageX, y: e.pageY }); + }; + + document.onmouseup = function () { + document.onmousemove = null; + document.onmouseup = null; + }; + }; + } +}); + +/** + *vue-自定义指令-拖拽 v-drag + */ +Vue.directive('drag', { + bind(el) { + const dragDom = el.querySelector('.reminder-box'); + const dragRight = el.querySelector('.drag-right'); + const dragLeft = el.querySelector('.drag-left'); + const dragBottom = el.querySelector('.drag-bottom'); + const dragTop = el.querySelector('.drag-top'); + const dragBody = el.querySelector('.tip-body'); + const body = el.querySelector('.tip-body-box'); + + dragRight.onmousedown = (e) => { + document.onselectstart = function () { + return false; + }; + // 宽度拖拽 + var iEvent = e || event; + var disX = iEvent.clientX; + var disW = dragDom.offsetWidth; + document.onmousemove = function (e) { + + var iEvent = e || event; + if (disW + (iEvent.clientX - disX) > 350) { + dragDom.style.width = disW + (iEvent.clientX - disX) + 'px'; + } + }; + + document.onmouseup = function () { + document.onmousemove = null; + document.onmouseup = null; + document.onselectstart = null; + }; + }; + dragLeft.onmousedown = (e) => { + document.onselectstart = function () { + return false; + }; + // 宽度拖拽 + var iEvent = e || event; + var disX = iEvent.clientX; + var disW = dragDom.offsetWidth; + var OFFLeft = dragDom.offsetLeft; + document.onmousemove = function (e) { + const iEvent = e || event; + const width = disW - (iEvent.clientX - disX); + if (width > 350) { + dragDom.style.width = disW - (iEvent.clientX - disX) + 'px'; + dragDom.style.left = OFFLeft + (iEvent.clientX - disX) + 'px'; + } + }; + + document.onmouseup = function () { + document.onmousemove = null; + document.onmouseup = null; + document.onselectstart = null; + }; + }; + dragBottom.onmousedown = (e) => { + document.onselectstart = function () { + return false; + }; + // 宽度拖拽 + var iEvent = e || event; + var disY = iEvent.clientY; + var disH = dragDom.offsetHeight; + document.onmousemove = function (e) { + var iEvent = e || event; + if (disH + (iEvent.clientY - disY) > 200) { + dragDom.style.height = disH + (iEvent.clientY - disY) + 'px'; + body.style.height = disH + (iEvent.clientY - disY) - 40 + 'px'; + dragBody.style.height = disH + (iEvent.clientY - disY) - 100 + 'px'; + } + }; + + document.onmouseup = function () { + document.onmousemove = null; + document.onmouseup = null; + document.onselectstart = null; + }; + }; + dragTop.onmousedown = (e) => { + document.onselectstart = function () { + return false; + }; + // 宽度拖拽 + var iEvent = e || event; + var disY = iEvent.clientY; + var disH = dragDom.offsetHeight; + var OOFTop = dragDom.offsetTop; + document.onmousemove = function (e) { + var iEvent = e || event; + if (disH - (iEvent.clientY - disY) > 200) { + dragDom.style.height = disH - (iEvent.clientY - disY) + 'px'; + body.style.height = disH - (iEvent.clientY - disY) - 40 + 'px'; + dragBody.style.height = disH - (iEvent.clientY - disY) - 100 + 'px'; + dragDom.style.top = OOFTop + (iEvent.clientY - disY) + 'px'; + } + }; + + document.onmouseup = function () { + document.onmousemove = null; + document.onmouseup = null; + document.onselectstart = null; + }; + }; + } +}); diff --git a/src/jlmap3d/component/Helper.js b/src/jlmap3d/component/Helper.js new file mode 100644 index 000000000..bc51e08be --- /dev/null +++ b/src/jlmap3d/component/Helper.js @@ -0,0 +1,30 @@ +export function Helper(scene){ + //创建辅助网格平面 + // let planeGeometry = new THREE.PlaneBufferGeometry( 40000, 40000 ); + // planeGeometry.rotateX( - Math.PI / 2 ); + // let planeMaterial = new THREE.ShadowMaterial( { opacity: 0.2 } ); + // let plane = new THREE.Mesh( planeGeometry, planeMaterial ); + // plane.position.y = 10; + // plane.receiveShadow = true; + // jlmap3dedit.meshplane = plane; + + // jlmap3dedit.scene.add(plane ); + // planeGeometry.dispose(); + // planeMaterial.dispose(); + //定义全局光 + let ambientLight = new THREE.AmbientLight( 0xC5C1AA, 1.3); + scene.add( ambientLight ); + + let light = new THREE.HemisphereLight( 0xffffff, 0x444444 ); + light.position.set( 0, 200, 0 ); + scene.add( light ); + + // //辅助网格 + // let helper = new THREE.GridHelper( 20000, 10 ); + // helper.position.y = -2; + // helper.material.opacity = 0.25; + // helper.material.transparent = true; + // jlmap3dedit.scene.add( helper ); + + +} diff --git a/src/jlmap3d/component/Materialload.js b/src/jlmap3d/component/Materialload.js new file mode 100644 index 000000000..20379acd1 --- /dev/null +++ b/src/jlmap3d/component/Materialload.js @@ -0,0 +1,36 @@ +export function Materialload(jlmap3dedit){ + + + settexture(jlmap3dedit.materiallist,"red",'../../static/material/signal/1.jpg'); + + settexture(jlmap3dedit.materiallist,"yellow",'../../static/material/signal/2.jpg'); + + settexture( jlmap3dedit.materiallist,"green",'../../static/material/signal/3.jpg'); + + settexture( jlmap3dedit.materiallist,"black",'../../static/material/signal/5.jpg'); + //console.log(jlmap3dedit.materiallist); +} + +function settexture(materiallist,name,textureurl){ + var loader = new THREE.TextureLoader(); + + // 加载一个资源 + loader.load( + // 资源URL + textureurl, + + // onLoad回调 + function ( texture ) { + texture.name = name; + materiallist.push(texture); + }, + + // 目前暂不支持onProgress的回调 + undefined, + + // onError回调 + function ( err ) { + console.error( 'An error happened.' ); + } + ); +} diff --git a/src/jlmap3d/config/Camera.js b/src/jlmap3d/config/Camera.js new file mode 100644 index 000000000..488066c58 --- /dev/null +++ b/src/jlmap3d/config/Camera.js @@ -0,0 +1,7 @@ +export function SetCamera(dom) { + var camera = new THREE.PerspectiveCamera(70, dom.clientWidth/dom.clientHeight, 1, 2000); + camera.position.set( 0, 0, 0 ); + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + return camera; +} diff --git a/src/jlmap3d/config/Render.js b/src/jlmap3d/config/Render.js new file mode 100644 index 000000000..afa9b038b --- /dev/null +++ b/src/jlmap3d/config/Render.js @@ -0,0 +1,6 @@ +export function SetRender(dom) { + var renderer = new THREE.WebGLRenderer({antialias: true}); + renderer.setSize(dom.clientWidth, dom.clientHeight); + renderer.setSize( window.innerWidth, window.innerHeight ); + return renderer; +} diff --git a/src/jlmap3d/config/Scene.js b/src/jlmap3d/config/Scene.js new file mode 100644 index 000000000..c2d61f955 --- /dev/null +++ b/src/jlmap3d/config/Scene.js @@ -0,0 +1,16 @@ +export function SetScene() { + var scene = new THREE.Scene(); + var cubeTextureLoader = new THREE.CubeTextureLoader(); + + cubeTextureLoader.setPath( '../../static/skybox/city/' ); + + var cubeTexture = cubeTextureLoader.load( [ + 'px.jpg', 'nx.jpg', + 'py.jpg', 'ny.jpg', + 'pz.jpg', 'nz.jpg', + ] ); + + scene.background = cubeTexture; + cubeTexture.dispose(); + return scene; +} diff --git a/src/jlmap3d/connect/TrainingConnect.js b/src/jlmap3d/connect/TrainingConnect.js new file mode 100644 index 000000000..6452115b3 --- /dev/null +++ b/src/jlmap3d/connect/TrainingConnect.js @@ -0,0 +1,685 @@ +import StompClient from '@/utils/sock'; + +import { getTrainingCbtcDemon, runDiagramStart, runDiagramOver, setTrainingCbtcInitTime } from '@/api/simulation'; + +import { creatSubscribe, clearSubscribe, displayTopic, screenTopic, } from '@/utils/stomp'; +import { handleToken } from '@/utils/auth'; +import router from '@/router'; + +//定于仿真socket接口 +export function Jlmap3dSubscribe(jlmap3d) { + + let scope = this; + this.map = null; + + var trainlisttest = null; + var sectionlist = null; + var signallist = null; + var stationstandlist = null; + var sectionlist = null; + var materials = null; + var actions = null; + var scenes = null; + + var code = null; + + var drivingcode = null; + var drivingspeed = null; + var drivingaptspeed = null; + + let driverswitch = false; + + let stoptimer = null; + let num = 30; + let pointstand = null; + + //run as plane = 01; + //reset = 02; + var datatype = "00"; + this.teststomp = new StompClient(); + this.topic = "/user/queue/simulation/jl3d"; + let header = {'X-Token': handleToken() }; + + this.updatamap = function(mapdata,materiallist,nowaction,scene){ + //console.log(mapdata); + + scope.map = mapdata; + trainlisttest = this.map.trainlisttest; + sectionlist = this.map.sectionlist; + signallist = this.map.signallist; + stationstandlist = this.map.stationstandlist; + sectionlist = this.map.sectionlist; + materials = materiallist; + scenes = scene; + actions = nowaction; + + } + + this.socketon = function(topic){ + try { + //console.log("teststomp"); + scope.teststomp.subscribe(topic, callback,header); + } catch (error) { + console.error('websocket订阅失败'); + } + + } + + this.socketoff = function(topic){ + scope.teststomp.unsubscribe(topic); + for(let i=0;i=0;i--){ + if(data.body[i]._type == "Train"){ + + //console.log(data.body[i]); + //遍历列车对象组 + if(trainlisttest){ + code = data.body[i].code; + //剔除不显示的车 + //找到对应列车 + + if( trainlisttest.list[code]){ + if(code == drivingcode){ + driverswitch = data.body[i].runMode; + jlmap3d.updatetrainnum(data.body[i].groupNumber); + // console.log(trainlisttest.list[code].progress); + let syncdata = { + type:"Train", + code:code, + sectionCode:data.body[i].sectionCode, + percent:0, + }; + + if(trainlisttest.list[code].isStandTrack == true && trainlisttest.list[code].progress>0.95 && trainlisttest.list[code].speed<=0){ + if(data.body[i].directionType == "02"){ + syncdata.percent = 1-(sectionlist.sections.datalist[data.body[i].sectionCode].rstop/trainlisttest.list[code].len); + }else{ + syncdata.percent = sectionlist.sections.datalist[data.body[i].sectionCode].lstop/trainlisttest.list[code].len; + } + scope.teststomp.send("/app/topic/simulation/wgu3d",syncdata); + }else{ + if(data.body[i].directionType == "02"){ + syncdata.percent = trainlisttest.list[code].progress; + }else{ + syncdata.percent = 1 - trainlisttest.list[code].progress; + } + scope.teststomp.send("/app/topic/simulation/wgu3d",syncdata); + } + + if(data.body[i].parkRemainTime>0){ + jlmap3d.updatestoptime("停站时间:"+parseInt(data.body[i].parkRemainTime)); + }else{ + if(data.body[i].runMode == "02"){ + jlmap3d.updatestoptime("列车自动驾驶中"); + }else{ + if(trainlisttest.list[code].isStandTrack == true && trainlisttest.list[code].progress>0.95 && trainlisttest.list[code].speed<=0){ + // if(stoptimer){ + // + // }else{ + // stoptimer = setInterval(function(){ + // if(num >=0){ + // jlmap3d.updatestoptime("停站时间:"+num); + // num --; + // } + // },1000); + // } + + }else{ + jlmap3d.updatestoptime("列车人工驾驶中"); + } + + } + } + // if(trainlisttest.list[code].speed > 0){ + // if(stoptimer){ + // clearInterval( stoptimer ); + // stoptimer = null; + // num = 30; + // } + // } + + } + trainlisttest.list[code].runMode = data.body[i].runMode; + //车门开关验证 + // if(data.body[i].directionType == "02"){ + if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "01"){ + //console.log("close"); + trainlisttest.list[code].doorStatus = "01"; + for(let an=actions[code].top.length-1;an>=0;an--){ + actions[code].top[an].reset(); + actions[code].top[an].time = actions[code].top[an]._clip.duration; + actions[code].top[an].timeScale = -1; + actions[code].top[an].play(); + } + }else if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "02"){ + //console.log("open"); + trainlisttest.list[code].doorStatus = "02"; + for(let an=actions[code].top.length-1;an>=0;an--){ + actions[code].top[an].reset(); + actions[code].top[an].time = 0; + actions[code].top[an].timeScale = 1; + actions[code].top[an].play(); + } + } + // }else{ + // if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "01"){ + // //console.log("close"); + // trainlisttest.list[code].doorStatus = "01"; + // for(let an=actions[code].down.length-1;an>=0;an--){ + // actions[code].down[an].reset(); + // actions[code].down[an].time = actions[code].top[an]._clip.duration; + // actions[code].down[an].timeScale = -1; + // actions[code].down[an].play(); + // } + // }else if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "02"){ + // //console.log("open"); + // trainlisttest.list[code].doorStatus = "02"; + // for(let an=actions[code].down.length-1;an>=0;an--){ + // actions[code].down[an].reset(); + // actions[code].down[an].time = 0; + // actions[code].down[an].timeScale = 1; + // actions[code].down[an].play(); + // } + // } + // } + //遍历获取所在轨道 + + if(trainlisttest.list[code].dispose != data.body[i].dispose && data.body[i].dispose == false){ + + if(sectionlist.sections.datalist[data.body[i].sectionCode].code){ + trainlisttest.group.add(trainlisttest.list[code]); + trainlisttest.list[code].position.y = 0; + trainlisttest.list[code].progress = 0; + trainlisttest.list[code].oldoffset = data.body[i].sectionOffsetPercent; + trainlisttest.list[code].dispose = false; + trainlisttest.list[code].nowcode = data.body[i].sectionCode; + trainlisttest.list[code].nextcode = data.body[i].nextSectionCode; + let vexlist = []; + let endrotation = null; + + if(data.body[i].directionType == "02"){//向右 + let offset = null; + let rotaposx = null; + + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x+offset*data.body[i].sectionOffsetPercent; + }else{ + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x+offset*data.body[i].sectionOffsetPercent; + } + + let rotaposz = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].z; + trainlisttest.list[code].rotation.y = 0; + trainlisttest.list[code].position.x = rotaposx; + trainlisttest.list[code].position.y = 0; + for(let tl=0;tl<6;tl++){ + trainlisttest.list[code].children[tl].position.z = rotaposz; + } + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + vexlist.push(new THREE.Vector3(rotaposx,0,rotaposz)); + for(let m=sectionlist.sections.datalist[data.body[i].sectionCode].rail.length-1;m>=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x>rotaposx){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + + } + }else{ + vexlist.push(new THREE.Vector3(rotaposx,0,rotaposz)); + for(let m=0;mrotaposx){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + trainlisttest.list[code].status = "02"; + + }else if(data.body[i].directionType == "03"){//向左 + + trainlisttest.list[code].dispose = false; + trainlisttest.group.add(trainlisttest.list[code]); + let offset = null; + let rotaposx = null; + + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x+offset*data.body[i].sectionOffsetPercent; + }else{ + + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x+offset*data.body[i].sectionOffsetPercent; + } + let rotaposz = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].z; + trainlisttest.list[code].rotation.y = Math.PI; + trainlisttest.list[code].position.x = rotaposx; + trainlisttest.list[code].position.y = 0; + for(let tl=0;tl<6;tl++){ + trainlisttest.list[code].children[tl].position.z = rotaposz; + } + if(data.body[i].groupNumber == "001"){ + } + + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].xsectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x,0,trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for(let m=sectionlist.sections.datalist[data.body[i].sectionCode].rail.length-1;m>=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x>trainlisttest.list[code].position.x){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + }else{ + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x,0,trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for(let m=0;mtrainlisttest.list[code].position.x){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + }else{ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + for(let m=sectionlist.sections.datalist[data.body[i].sectionCode].rail.length-1;m>=0;m--){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + }else{ + for(let m=0;m=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x=0;m--){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + + }else{ + for(let m=0;m=0;i--){ + //0xFFFFFF + //0xCD0000 红 + //0xEEEE00 黄 + //0x32CD32 绿 + if(data.body[i]._type == "Signal"){ + if(signallist){ + signalupdate(data.body[i]); + } + } + + if(data.body[i]._type == "StationStand"){ + if(actions){ + standupdate(data.body[i]); + } + } + + if(data.body[i]._type == "Switch"){ + if(sectionlist){ + switchupdate(data.body[i]); + } + } + + } + } + } + + function standupdate(data){ + code = data.code; + if( actions[code]){ + if(data.screenDoorOpenStatus == "02" && actions[code].status == "01"){ + actions[code].status = "00"; + } + if(data.screenDoorOpenStatus == "02" && actions[code].status == "00"){ + actions[code].status = "02"; + actions[code].action.reset(); + actions[code].action.time = 0; + actions[code].action.timeScale = 1; + actions[code].action.play(); + } + + if(data.screenDoorOpenStatus == "01" && actions[code].status == "02"){ + actions[code].status = "00"; + } + if(data.screenDoorOpenStatus == "01" && actions[code].status == "00"){ + actions[code].status = "01"; + actions[code].action.reset(); + actions[code].action.time = actions[code].action._clip.duration; + actions[code].action.timeScale = -1; + actions[code].action.play(); + } + } + + + } + + function signalupdate(data){ + code = data.code; + if(data.lightType == "01"){ + if(signallist.list[code].mesh.code){ + signallist.list[code].mesh.status = data.status; + + //55 + //33 + //77 + //关闭 + if(data.status == "01"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[0]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //开放 + if(data.status == "02"){ + + if(data.switchLocateType == "01"){ + signallist.list[code].mesh.children[0].material.map = materials[2]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + if(data.switchLocateType == "02"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[1]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + //引导 + if(data.status == "03"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[0]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[1]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //封锁 + if(data.status == "04"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //故障 + if(data.status == "05"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + + }else if(data.lightType == "01"){ + if(signallist.list[code].mesh.code){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + + } + + function switchupdate(data){ + code = data.code; + for(let j=sectionlist.switchs.modellist.length-1;j>=0;j--){ + if(sectionlist.switchs.modellist[j].code == code){ + if(sectionlist.switchs.modellist[j].locateType != data.locateType){ + if(data.locateType == "02"){ + if(actions[sectionlist.switchs.modellist[j].code]){ + sectionlist.switchs.modellist[j].locateType = data.locateType; + actions[sectionlist.switchs.modellist[j].code].reset(); + actions[sectionlist.switchs.modellist[j].code].time = 0; + actions[sectionlist.switchs.modellist[j].code].timeScale = 1; + actions[sectionlist.switchs.modellist[j].code].play(); + } + }else if(data.locateType == "01"){ + if(actions[sectionlist.switchs.modellist[j].code]){ + sectionlist.switchs.modellist[j].locateType = data.locateType; + actions[sectionlist.switchs.modellist[j].code].reset(); + actions[sectionlist.switchs.modellist[j].code].time = actions[sectionlist.switchs.modellist[j].code]._clip.duration; + actions[sectionlist.switchs.modellist[j].code].timeScale = -1; + actions[sectionlist.switchs.modellist[j].code].play(); + } + } + } + j = 0; + } + } + } + + +} diff --git a/src/jlmap3d/connect/TrainingConnectTest.js b/src/jlmap3d/connect/TrainingConnectTest.js new file mode 100644 index 000000000..2a683b12e --- /dev/null +++ b/src/jlmap3d/connect/TrainingConnectTest.js @@ -0,0 +1,452 @@ +import StompClient from '@/utils/sock'; +import { displayTopic } from '@/utils/stomp'; +import { handleToken } from '@/utils/auth'; +import router from '@/router'; + +//定于仿真socket接口 +export function Jlmap3dSubscribe(worker) { + + let scope = this; + this.map = null; + + let webworker = worker; + var trainlisttest = null; + var sectionlist = null; + var signallist = null; + var stationstandlist = null; + var sectionlist = null; + var materials = null; + var actions = null; + var scenes = null; + + var code = null; + + this.teststomp = new StompClient(); + this.topic = displayTopic; + let header = { group: router.currentRoute.query.group, 'X-Token': handleToken() }; + + this.updatamap = function (mapdata, materiallist, nowaction, scene) { + //console.log(mapdata); + scope.map = mapdata; + trainlisttest = this.map.trainlisttest; + sectionlist = this.map.sectionlist; + signallist = this.map.signallist; + stationstandlist = this.map.stationstandlist; + sectionlist = this.map.sectionlist; + materials = materiallist; + scenes = scene; + actions = nowaction; + } + + this.socketon = function (topic) { + try { + //console.log("teststomp"); + scope.teststomp.subscribe(topic, callback, header); + } catch (error) { + console.error('websocket订阅失败'); + } + + } + + this.socketoff = function (topic) { + scope.teststomp.unsubscribe(topic); + } + + // 仿真socket接口回调函数 + function callback(Response) { + //对象化数据 + let data = JSON.parse(Response.body); + //遍历后台数据 + + //判断消息类型 + // if(data.type == "Simulation_TrainPosition"){ + // + // + // } + if (data.type == "Simulation_DeviceStatus") { + + if (data.body.length < 200) { + + for (let i = data.body.length - 1; i >= 0; i--) { + + if (data.body[i]._type == "Train") { + + //console.log(data.body[i]); + //遍历列车对象组 + //console.log(data.body[i]); + if (trainlisttest) { + code = data.body[i].code; + //剔除不显示的车 + //找到对应列车 + + if (trainlisttest.list[code]) { + //车门开关验证 + // if(data.body[i].directionType == "02"){ + if (trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "01") { + //console.log("close"); + trainlisttest.list[code].doorStatus = "01"; + for (let an = actions[code].top.length - 1; an >= 0; an--) { + actions[code].top[an].reset(); + actions[code].top[an].time = actions[code].top[an]._clip.duration; + actions[code].top[an].timeScale = -1; + actions[code].top[an].play(); + } + } else if (trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "02") { + //console.log("open"); + trainlisttest.list[code].doorStatus = "02"; + for (let an = actions[code].top.length - 1; an >= 0; an--) { + actions[code].top[an].reset(); + actions[code].top[an].time = 0; + actions[code].top[an].timeScale = 1; + actions[code].top[an].play(); + } + } + // }else{ + // if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "01"){ + // //console.log("close"); + // trainlisttest.list[code].doorStatus = "01"; + // for(let an=actions[code].down.length-1;an>=0;an--){ + // actions[code].down[an].reset(); + // actions[code].down[an].time = actions[code].top[an]._clip.duration; + // actions[code].down[an].timeScale = -1; + // actions[code].down[an].play(); + // } + // }else if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "02"){ + // //console.log("open"); + // trainlisttest.list[code].doorStatus = "02"; + // for(let an=actions[code].down.length-1;an>=0;an--){ + // actions[code].down[an].reset(); + // actions[code].down[an].time = 0; + // actions[code].down[an].timeScale = 1; + // actions[code].down[an].play(); + // } + // } + // } + //遍历获取所在轨道 + if (trainlisttest.list[code].dispose != data.body[i].dispose && data.body[i].dispose == false) { + trainlisttest.group.add(trainlisttest.list[code]); + + if (sectionlist.sections.datalist[data.body[i].sectionCode].code) { + + trainlisttest.list[code].position.y = 0; + trainlisttest.list[code].progress = 0; + trainlisttest.list[code].oldoffset = data.body[i].sectionOffsetPercent; + trainlisttest.list[code].dispose = false; + + + if (data.body[i].directionType == "02") { + trainlisttest.list[code].status = "02"; + trainlisttest.list[code].rotation.y = 0; + } else if (data.body[i].directionType == "03") { + trainlisttest.list[code].status = "03"; + trainlisttest.list[code].rotation.y = Math.PI; + } + + } + + } else if (trainlisttest.list[code].dispose != data.body[i].dispose && data.body[i].dispose == true) { + trainlisttest.group.remove(trainlisttest.list[code]); + trainlisttest.list[code].progress = null; + trainlisttest.list[code].dispose = true; + + } else if (trainlisttest.list[code].dispose == data.body[i].dispose && data.body[i].dispose == false) { + + if (sectionlist.sections.datalist[data.body[i].sectionCode].code) { + if (trainlisttest.list[code].nowcode != data.body[i].sectionCode || trainlisttest.list[code].nextcode != data.body[i].nextSectionCode) { + trainlisttest.list[code].nowcode = data.body[i].sectionCode; + trainlisttest.list[code].nextcode = data.body[i].nextSectionCode; + let vexlist = []; + let endrotation = null; + if (data.body[i].directionType == "02") {//向右 + if (trainlisttest.list[code].status != data.body[i].directionType) { + console.log(trainlisttest.list[code].position); + console.log(trainlisttest.list[code].children[5].matrixWorld); + trainlisttest.list[code].position.x = trainlisttest.list[code].children[5].matrixWorld.elements[12]; + trainlisttest.list[code].children[0].position.z = trainlisttest.list[code].children[0].matrixWorld.elements[14]; + trainlisttest.list[code].children[1].position.z = trainlisttest.list[code].children[1].matrixWorld.elements[14]; + trainlisttest.list[code].children[2].position.z = trainlisttest.list[code].children[2].matrixWorld.elements[14]; + trainlisttest.list[code].children[3].position.z = trainlisttest.list[code].children[3].matrixWorld.elements[14]; + trainlisttest.list[code].children[4].position.z = trainlisttest.list[code].children[4].matrixWorld.elements[14]; + trainlisttest.list[code].children[5].position.z = trainlisttest.list[code].children[5].matrixWorld.elements[14]; + + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x > sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x) { + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x, 0, trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for (let m = sectionlist.sections.datalist[data.body[i].sectionCode].rail.length - 1; m >= 0; m--) { + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x > trainlisttest.list[code].position.x) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + + } + } else { + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x, 0, trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for (let m = 0; m < sectionlist.sections.datalist[data.body[i].sectionCode].rail.length; m++) { + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x > trainlisttest.list[code].position.x) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + } else { + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x > sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x) { + for (let m = sectionlist.sections.datalist[data.body[i].sectionCode].rail.length - 1; m >= 0; m--) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } else { + for (let m = 0; m < sectionlist.sections.datalist[data.body[i].sectionCode].rail.length; m++) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + trainlisttest.list[code].status = "02"; + trainlisttest.list[code].rotation.y = 0; + + } else if (data.body[i].directionType == "03") {//向左 + + if (trainlisttest.list[code].status != data.body[i].directionType) { + trainlisttest.list[code].position.x = trainlisttest.list[code].children[5].matrixWorld.elements[12]; + trainlisttest.list[code].children[0].position.z = trainlisttest.list[code].children[0].matrixWorld.elements[14]; + trainlisttest.list[code].children[1].position.z = trainlisttest.list[code].children[1].matrixWorld.elements[14]; + trainlisttest.list[code].children[2].position.z = trainlisttest.list[code].children[2].matrixWorld.elements[14]; + trainlisttest.list[code].children[3].position.z = trainlisttest.list[code].children[3].matrixWorld.elements[14]; + trainlisttest.list[code].children[4].position.z = trainlisttest.list[code].children[4].matrixWorld.elements[14]; + trainlisttest.list[code].children[5].position.z = trainlisttest.list[code].children[5].matrixWorld.elements[14]; + // + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x < sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x) { + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x, 0, trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for (let m = sectionlist.sections.datalist[data.body[i].sectionCode].rail.length - 1; m >= 0; m--) { + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x < trainlisttest.list[code].position.x) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } else { + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x, 0, trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for (let m = 0; m < sectionlist.sections.datalist[data.body[i].sectionCode].rail.length; m++) { + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x < trainlisttest.list[code].position.x) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + } else { + // + if (sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x < sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x) { + for (let m = sectionlist.sections.datalist[data.body[i].sectionCode].rail.length - 1; m >= 0; m--) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + + } else { + for (let m = 0; m < sectionlist.sections.datalist[data.body[i].sectionCode].rail.length; m++) { + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + trainlisttest.list[code].status = "03"; + trainlisttest.list[code].rotation.y = Math.PI; + + } + + trainlisttest.list[code].curve = new THREE.CatmullRomCurve3(vexlist); + // console.log(trainlisttest.list[code].curve.points); + // console.log(data.body[i].speed) + // console.log(sectionlist.sections.datalist[data.body[i].sectionCode].distance); + trainlisttest.list[code].speeds = data.body[i].speed * 10 / 36 / 11 / sectionlist.sections.datalist[data.body[i].sectionCode].distance; + + trainlisttest.list[code].progress = 0; + } + // console.log("speed"); + // console.log(data.body[i].speed); + // console.log(trainlisttest.list[code].speed); + if (data.body[i].speed != trainlisttest.list[code].speed) { + trainlisttest.list[code].speed = data.body[i].speed; + trainlisttest.list[code].speeds = data.body[i].speed * 10 / 36 / 11 / sectionlist.sections.datalist[data.body[i].sectionCode].distance; + // if(trainlisttest.list[code].speeds > 0.1){ + // console.log(data.body[i]); + // console.log(data.body[i].speed) + // console.log(sectionlist.sections.datalist[data.body[i].sectionCode].distance); + // console.log(trainlisttest.list[code].speeds); + // } + } + + } + + } + + } + + } + } + + + //0xFFFFFF + //0xCD0000 红 + //0xEEEE00 黄 + //0x32CD32 绿 + if (data.body[i]._type == "Signal") { + + if (signallist) { + code = data.body[i].code; + if (data.body[i].lightType == "01") { + if (signallist.list[code].mesh.code) { + signallist.list[code].mesh.status = data.body[i].status; + + //55 + //33 + //77 + //关闭 + if (data.body[i].status == "01") { + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[0]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //开放 + if (data.body[i].status == "02") { + + if (data.body[i].switchLocateType == "01") { + signallist.list[code].mesh.children[0].material.map = materials[2]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + if (data.body[i].switchLocateType == "02") { + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[1]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + //引导 + if (data.body[i].status == "03") { + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[0]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[1]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //封锁 + if (data.body[i].status == "04") { + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //故障 + if (data.body[i].status == "05") { + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + + + } + + } else if (data.body[i].lightType == "01") { + if (signallist.list[code].mesh.code) { + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + + } + + } + + + if (data.body[i]._type == "StationStand") { + if (actions) { + code = data.body[i].code; + if (data.body[i].screenDoorOpenStatus == "02" && actions[code].status == "01") { + actions[code].status = "00"; + } + if (data.body[i].screenDoorOpenStatus == "02" && actions[code].status == "00") { + actions[code].status = "02"; + actions[code].action.reset(); + actions[code].action.time = 0; + actions[code].action.timeScale = 1; + actions[code].action.play(); + } + + if (data.body[i].screenDoorOpenStatus == "01" && actions[code].status == "02") { + actions[code].status = "00"; + } + if (data.body[i].screenDoorOpenStatus == "01" && actions[code].status == "00") { + actions[code].status = "01"; + actions[code].action.reset(); + actions[code].action.time = actions[code].action._clip.duration; + actions[code].action.timeScale = -1; + actions[code].action.play(); + } + + } + + } + + if (data.body[i]._type == "Switch") { + + if (sectionlist) { + code = data.body[i].code; + for (let j = sectionlist.switchs.modellist.length - 1; j >= 0; j--) { + if (sectionlist.switchs.modellist[j].code == code) { + if (sectionlist.switchs.modellist[j].locateType != data.body[i].locateType) { + if (data.body[i].locateType == "02") { + sectionlist.switchs.modellist[j].locateType = data.body[i].locateType; + actions[sectionlist.switchs.modellist[j].code].reset(); + actions[sectionlist.switchs.modellist[j].code].time = 0; + actions[sectionlist.switchs.modellist[j].code].timeScale = 1; + actions[sectionlist.switchs.modellist[j].code].play(); + + } else if (data.body[i].locateType == "01") { + sectionlist.switchs.modellist[j].locateType = data.body[i].locateType; + actions[sectionlist.switchs.modellist[j].code].reset(); + actions[sectionlist.switchs.modellist[j].code].time = actions[sectionlist.switchs.modellist[j].code]._clip.duration; + actions[sectionlist.switchs.modellist[j].code].timeScale = -1; + actions[sectionlist.switchs.modellist[j].code].play(); + + } + } + + //console.log(sectionlist.group[j].name); + j = 0; + } + } + } + + } + } + + } else if (data.body.length > 200) { + + } + + + } + + + + } +} diff --git a/src/jlmap3d/control/FirstControls.js b/src/jlmap3d/control/FirstControls.js new file mode 100644 index 000000000..9ed0ce03b --- /dev/null +++ b/src/jlmap3d/control/FirstControls.js @@ -0,0 +1,390 @@ +/** + * 摄像机控制(用户交互),此类只实现键盘交互(移动),如果需要鼠标交互(转动视角)使用其子类PointerLockControls或者MouseControls + * @constructor + * @param {THREE.Camera} camera 需要控制的摄像机 + * @param {Number} height 高度,相当于观察者身高,默认1.6 + */ +function FreeControls(camera, height) { + + var _scope = this; + var _PI_2 = Math.PI / 2; + + var _forward = false; + var _backward = false; + var _right = false; + var _left = false; + var _up = false; + var _down = false; + + var _up_whirl = false; + var _down_whirl = false; + var _left_whirl = false; + var _right_whirl = false; + + this._camera = camera; + this._pitchObject = new THREE.Object3D(); + this._yawObject = new THREE.Object3D(); + + /** + * 控制器使能 + * @type {Boolean} + */ + this.enabled = false; + /** + * 摄像机移动速度,默认2 + * @type {Number} + */ + this.v_delta =0.5; + /** + * 上帝模式开关,默认false + * @type {Boolean} + */ + this.godView = false; + /** + * 摄像机高度(观察者身高) + * @type {Number} + */ + this.height = (height ? height : 1.6); + /** + * 移动控制按键 + * @type {Object} + * @property {Number} FORWARD 向前走按键的KEYCODE + * @property {Number} BACKWARD 向后走按键的KEYCODE + * @property {Number} LEFT 向左走按键的KEYCODE + * @property {Number} RIGHT 向右走按键的KEYCODE + */ + this.keys = { + FORWARD: 87, + BACKWARD: 83, + LEFT: 65, + RIGHT: 68 + } + + + + this._camera.rotation.set(0, 0, 0); + + this._pitchObject.add(this._camera); + + this._yawObject.position.y = this.height; + this._yawObject.add(this._pitchObject); + + this._pitchObject.rotation.set(0, 0, 0); + this._yawObject.rotation.set(0, 0, 0); + + document.addEventListener('keydown', onKeyDown, false); + document.addEventListener('keyup', onKeyUp, false); + + // Touch handling code + document.addEventListener('touchstart', onTouchStart, false); + document.addEventListener('touchend', onTouchEnd, false); + document.addEventListener('touchmove', onTouchMove, false); + //viewport.addEventListener('touchstart', function(event) { + function onTouchStart(event) { + var touches = event.touches; + switch(touches.length) { + case 1: // Single finger looks around + //startLook(touches[0].pageX, touches[0].pageY); + break; + case 2: // Two fingers moves + //startMove(touches[0].pageX, touches[0].pageY); + break; + case 3: // Three finger tap jumps + //playerMover.jump(); + break; + default: + return; + } + event.stopPropagation(); + event.preventDefault(); + } + //viewport.addEventListener('touchend', function(event) { + function onTouchEnd(event) { + //endLook(); + return false; + } + //viewport.addEventListener('touchmove', function(event) { + function onTouchMove(event) { + var touches = event.touches; + switch(touches.length) { + case 1: + //moveLook(touches[0].pageX, touches[0].pageY); + break; + case 2: + //moveUpdate(touches[0].pageX, touches[0].pageY, 16); + break; + default: + return; + } + event.stopPropagation(); + event.preventDefault(); + } + + /** + * 更新相机位置 + * @param {Number} delta 两次调用之间的时间差 + * @return {undefined} + */ + var rotation_delta_x = 0; + var rotation_delta_y = 0; + this.update = function (delta) { + delta = 4; + if (!_scope.enabled) return; + var rotation_ratio = 0.5; + + if ( !_up_whirl && !_down_whirl && !_left_whirl && !_right_whirl) { + + // if(mode == 2 ){ + // _scope._pitchObject.rotation.x = headControls.getPitchObject().rotation.x + rotation_delta_x; + // _scope._pitchObject.rotation.x = Math.max(-_PI_2, Math.min(_PI_2, _scope._pitchObject.rotation.x)); + // _scope._yawObject.rotation.y = headControls.getObject().rotation.y + rotation_delta_y; + // _scope._yawObject.rotation.z = headControls.getObject().rotation.z ; + // } + } + if (_forward || _backward || _left || _right || _up || _down + || _up_whirl || _down_whirl || _left_whirl || _right_whirl) { + var delta_new = 0.4; + var translation = new THREE.Vector3(0, 0, 0); + if (_scope.godView) { + if (_forward) { + + translation.z -= _scope.v_delta * Math.cos(_scope._pitchObject.rotation.x) * delta; + translation.y += _scope.v_delta * Math.sin(_scope._pitchObject.rotation.x) * delta; + } + if (_backward) { + + translation.z += _scope.v_delta * Math.cos(_scope._pitchObject.rotation.x) * delta; + translation.y -= _scope.v_delta * Math.sin(_scope._pitchObject.rotation.x) * delta; + } + } else { + if (_forward) + { + translation.z -= _scope.v_delta * delta * delta_new; + } + if (_backward) + { + translation.z += _scope.v_delta * delta * delta_new; + } + } + if (_left){ + translation.x -= _scope.v_delta * delta * delta_new; + } + if (_right){ + translation.x += _scope.v_delta * delta * delta_new; + } + if(_up){ + translation.y += _scope.v_delta * delta * delta_new; + } + if(_down){ + translation.y -= _scope.v_delta * delta * delta_new; + } + + if(_up_whirl) + { + _scope._pitchObject.rotation.x += _scope.v_delta * delta * rotation_ratio; + //限制向上抬头90度 + _scope._pitchObject.rotation.x = Math.max(-_PI_2, Math.min(_PI_2, _scope._pitchObject.rotation.x)); + rotation_delta_x += _scope.v_delta * delta * rotation_ratio; + } + if(_down_whirl) + { + _scope._pitchObject.rotation.x -= _scope.v_delta * delta * rotation_ratio; + //限制向下低头90度 + _scope._pitchObject.rotation.x = Math.max(-_PI_2, Math.min(_PI_2, _scope._pitchObject.rotation.x)); + rotation_delta_x -= _scope.v_delta * delta * rotation_ratio; + } + if(_left_whirl) + { + _scope._yawObject.rotation.y += _scope.v_delta * delta * rotation_ratio; + rotation_delta_y += _scope.v_delta * delta * rotation_ratio; + } + if(_right_whirl) + { + _scope._yawObject.rotation.y -= _scope.v_delta * delta * rotation_ratio; + rotation_delta_y -= _scope.v_delta * delta * rotation_ratio; + } + + _scope._yawObject.translateX(translation.x); + _scope._yawObject.translateY(translation.y); + _scope._yawObject.translateZ(translation.z); + //console.log(_scope._yawObject.position); + } + + if (!_scope.godView) { + // _scope._yawObject.position.y = _scope.height; + } + } + + /** + * 获取相机云台,关于相机位置的调整应该实施于由此函数返回的Object3D + * @return {THREE.Object3D} 相机云台 + */ + this.getObject = function () { + return this._yawObject; + }; + + /** + * 获取相机空间朝向,只读 + * @return {THREE.Vector3} 相机空间朝向 + */ + this.getDirection = function () { + var direction = new THREE.Vector3(0, 0, -1); + var rotation = new THREE.Euler(0, 0, 0, 'YXZ'); + var v = new THREE.Vector3(); + rotation.set(this._pitchObject.rotation.x, this._yawObject.rotation.y, 0); + v.copy(direction).applyEuler(rotation); + return v; + }; + + function onKeyDown(event) { + switch(event.keyCode) { + case _scope.keys.FORWARD: + _forward = true; + break; + case 38: // up + _up_whirl = true; + break; + + case _scope.keys.BACKWARD: + _backward = true; + break; + case 40: // down + _down_whirl = true; + break; + + case _scope.keys.LEFT: + _left = true; + break; + case 37: // _left + _left_whirl = true; + break; + + case _scope.keys.RIGHT: + _right = true; + break; + case 39: // _right + _right_whirl = true; + break; + + case 81: + _up = true; + break; + case 69: + _down = true; + break; + } + } + + function onKeyUp(event) { + switch(event.keyCode) { + case _scope.keys.FORWARD: + _forward = false; + break; + case 38: // up + _up_whirl = false; + break; + + case _scope.keys.BACKWARD: + _backward = false; + break; + case 40: // down + _down_whirl = false; + break; + + case _scope.keys.LEFT: + _left = false; + break; + case 37: // _left + _left_whirl = false; + break; + + case _scope.keys.RIGHT: + _right = false; + break; + case 39: // _right + _right_whirl = false; + break; + + case 81: + _up = false; + break; + case 69: + _down = false; + break; + } + } +} + +export function MouseControls(camera, height) { + var caozuo = 1; + var lastX,lastY; + FreeControls.call(this, camera, height); + + var _scope = this; + var _PI_2 = Math.PI / 2; + + var _mouseDown = false; + document.addEventListener('keydown', FreeControls.onKeyDown, false); + document.addEventListener('mousemove', onMouseMove, false); + document.addEventListener('mousedown', onMouseDown, false); + document.addEventListener('mouseup', onMouseUp, false); + + this.removeEventListeners = function (){ + document.removeEventListener('mousemove', onMouseMove, false); + document.removeEventListener('mousedown', onMouseDown, false); + document.removeEventListener('mouseup', onMouseUp, false); + document.removeEventListener('keydown', FreeControls.onKeyDown, false); + } + function onMouseMove(event) { + if(caozuo ==1){ + if (_scope.enabled === false || _mouseDown === false) return; + event.preventDefault(); + event.stopPropagation(); + + var currentX = event.clientX; + var currentY = event.clientY; + var movementX = currentX - lastX; + var movementY = currentY - lastY; + + _scope._yawObject.rotation.y -= movementX * 0.001; + _scope._pitchObject.rotation.x -= movementY * 0.001; + + _scope._pitchObject.rotation.x = Math.max(-_PI_2, Math.min(_PI_2, _scope._pitchObject.rotation.x)); + + lastX = currentX; + lastY = currentY; + }else{ + + + + } + } + + function onMouseDown (event) { + if(caozuo ==1){ + if (_scope.enabled === false) return; + + _mouseDown = true; + event.preventDefault(); + event.stopPropagation(); + + lastX = event.clientX; + lastY = event.clientY; + + }else{ + + + } + } + + function onMouseUp (event) { + if(caozuo ==1){ + _mouseDown = false; + event.preventDefault(); + event.stopPropagation(); + }else{ + + + } + } +} diff --git a/src/jlmap3d/control/OrbitControls.js b/src/jlmap3d/control/OrbitControls.js new file mode 100644 index 000000000..06ce9a338 --- /dev/null +++ b/src/jlmap3d/control/OrbitControls.js @@ -0,0 +1,1100 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one-finger move +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move + +THREE.OrbitControls = function ( object, domElement ) { + this.object = object; + + this.data = null; + + this.domElement = ( domElement !== undefined ) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.25; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.panSpeed = 1.0; + this.screenSpacePanning = false; // if true, pan in screen-space + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { LEFT: THREE.MOUSE.LEFT, MIDDLE: THREE.MOUSE.MIDDLE, RIGHT: THREE.MOUSE.RIGHT }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy( scope.target ); + scope.position0.copy( scope.object.position ); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + this.upmodeldirect = function(data){ + scope.data = data; + } + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + + if(scope.data){ + //站台牌自动跟随相机 + if(scope.data.stationstandlist){ + for(let i = scope.data.stationstandlist.textlist.length-1; i>=0; i --){ + scope.data.stationstandlist.textlist[i].lookAt(scope.object.position ); + } + } + + + if(scope.data.trainlisttest){ + //列车牌自动跟随相机 + for(let ii = scope.data.trainlisttest.textlist.length-1; ii>=0; ii --){ + scope.data.trainlisttest.textlist[ii].lookAt(scope.object.position ); + } + } + + } + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + + rotateLeft( getAutoRotationAngle() ); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + scope.target.add( panOffset ); + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + panOffset.multiplyScalar( 1 - scope.dampingFactor ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + panOffset.set( 0, 0, 0 ); + + } + + scale = 1; + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + window.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY_PAN: 4 }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + if ( scope.screenSpacePanning === true ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); + + } else { + + v.setFromMatrixColumn( objectMatrix, 0 ); + v.crossVectors( scope.object.up, v ); + + } + + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if ( scope.object.isPerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we use only clientHeight here so aspect ratio does not distort speed + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object.isOrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set( event.clientX, event.clientY ); + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( event ) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel( event ) { + + // console.log( 'handleMouseWheel' ); + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + // console.log( 'handleKeyDown' ); + + var needsUpdate = false; + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + } + + if ( needsUpdate ) { + + // prevent the browser from scrolling on cursor keys + event.preventDefault(); + + scope.update(); + + } + + + } + + function handleTouchStartRotate( event ) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchStartDollyPan( event ) { + + //console.log( 'handleTouchStartDollyPan' ); + + if ( scope.enableZoom ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + if ( scope.enablePan ) { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panStart.set( x, y ); + + } + + } + + function handleTouchMoveRotate( event ) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleTouchMoveDollyPan( event ) { + + //console.log( 'handleTouchMoveDollyPan' ); + + if ( scope.enableZoom ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); + + dollyIn( dollyDelta.y ); + + dollyStart.copy( dollyEnd ); + + } + + if ( scope.enablePan ) { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panEnd.set( x, y ); + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + } + + scope.update(); + + } + + function handleTouchEnd( event ) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + // Prevent the browser from scrolling. + + event.preventDefault(); + + // Manually set the focus since calling preventDefault above + // prevents the browser from setting it automatically. + + scope.domElement.focus ? scope.domElement.focus() : window.focus(); + + switch ( event.button ) { + + case scope.mouseButtons.RIGHT: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } else { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } + + break; + + case scope.mouseButtons.MIDDLE: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.LEFT: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + if (event.cancelable) { + // 判断默认行为是否已经被禁用 + if (!event.defaultPrevented) { + event.preventDefault(); + } + } + + event.stopPropagation(); + + scope.dispatchEvent( startEvent ); + + handleMouseWheel( event ); + + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly-pan + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchStartDollyPan( event ); + + state = STATE.TOUCH_DOLLY_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed? + + handleTouchMoveRotate( event ); + + break; + + case 2: // two-fingered touch: dolly-pan + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + if ( state !== STATE.TOUCH_DOLLY_PAN ) return; // is this needed? + + handleTouchMoveDollyPan( event ); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, { passive: false } ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, { passive: false } ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, { passive: false } ); + + window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + +Object.defineProperties( THREE.OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .center has been renamed to .target' ); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + return ! this.enableZoom; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + this.enableZoom = ! value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + return ! this.enableRotate; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + this.enableRotate = ! value; + + } + + }, + + noPan: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + return ! this.enablePan; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + this.enablePan = ! value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + return ! this.enableKeys; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + this.enableKeys = ! value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + return ! this.enableDamping; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + this.enableDamping = ! value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + return this.dampingFactor; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + this.dampingFactor = value; + + } + + } + +} ); diff --git a/src/jlmap3d/control/OribitControlstest.js b/src/jlmap3d/control/OribitControlstest.js new file mode 100644 index 000000000..219cdff32 --- /dev/null +++ b/src/jlmap3d/control/OribitControlstest.js @@ -0,0 +1,1016 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one finger move +// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish +// Pan - right mouse, or arrow keys / touch: three finger swipe + +THREE.OrbitControls = function ( object, domElement ) { + + this.object = object; + + this.domElement = ( domElement !== undefined ) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.25; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + + rotateLeft( getAutoRotationAngle() ); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + scope.target.add( panOffset ); + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + } + + scale = 1; + panOffset.set( 0, 0, 0 ); + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + //window.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we actually don't use screenWidth, since perspective camera is fixed to screen height + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set( event.clientX, event.clientY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( event ) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel( event ) { + + // console.log( 'handleMouseWheel' ); + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + //console.log( 'handleKeyDown' ); + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + scope.update(); + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + scope.update(); + break; + + } + + } + + function handleTouchStartRotate( event ) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchStartDolly( event ) { + + //console.log( 'handleTouchStartDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + function handleTouchStartPan( event ) { + + //console.log( 'handleTouchStartPan' ); + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchMoveRotate( event ) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleTouchMoveDolly( event ) { + + //console.log( 'handleTouchMoveDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyIn( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleTouchMovePan( event ) { + + //console.log( 'handleTouchMovePan' ); + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleTouchEnd( event ) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + if ( event.button === scope.mouseButtons.ORBIT ) { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } else if ( event.button === scope.mouseButtons.ZOOM ) { + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + } else if ( event.button === scope.mouseButtons.PAN ) { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + if ( state === STATE.ROTATE ) { + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + } else if ( state === STATE.DOLLY ) { + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + } else if ( state === STATE.PAN ) { + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + event.preventDefault(); + event.stopPropagation(); + + handleMouseWheel( event ); + + scope.dispatchEvent( startEvent ); // not sure why these are here... + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + + handleTouchStartDolly( event ); + + state = STATE.TOUCH_DOLLY; + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?... + + handleTouchMoveRotate( event ); + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?... + + handleTouchMoveDolly( event ); + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + if ( state !== STATE.TOUCH_PAN ) return; // is this needed?... + + handleTouchMovePan( event ); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); + + //window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + +Object.defineProperties( THREE.OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .center has been renamed to .target' ); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + return ! this.enableZoom; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + this.enableZoom = ! value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + return ! this.enableRotate; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + this.enableRotate = ! value; + + } + + }, + + noPan: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + return ! this.enablePan; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + this.enablePan = ! value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + return ! this.enableKeys; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + this.enableKeys = ! value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + return ! this.enableDamping; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + this.enableDamping = ! value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + return this.dampingFactor; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + this.dampingFactor = value; + + } + + } + +} ); diff --git a/src/jlmap3d/edit/Jlmap3ddata.js b/src/jlmap3d/edit/Jlmap3ddata.js new file mode 100644 index 000000000..ae69109b3 --- /dev/null +++ b/src/jlmap3d/edit/Jlmap3ddata.js @@ -0,0 +1,164 @@ +import { getPublishMapDetail,getMapDetail,set3dMapData,get3dMapData } from '@/api/jlmap3d/load3ddata'; + +//原始信息obj化提供给三维建模 +import {SetObj} from '@/jlmap3d/edit/utils/SetObj.js'; +//componnent +import {SectionList} from '@/jlmap3d/edit/testmodel/SectionList.js'; +import {SignalList} from '@/jlmap3d/edit/testmodel/SignalList.js'; +import {StationStandList} from '@/jlmap3d/edit/testmodel/StationStandList.js'; +import {TrainList} from '@/jlmap3d/edit/testmodel/TrainList.js'; +import {TrainListTest} from '@/jlmap3d/edit/testmodel/TrainListTest.js'; +import {LinkList} from '@/jlmap3d/edit/testmodel/LinkList.js'; + +import {RealSectionList} from '@/jlmap3d/edit/testmodel/RealSectionList.js'; + +import axios from 'axios'; +import {getmodels} from '@/jlmap3d/edit/connect/getmodels'; +import { Loading } from 'element-ui'; +// import {SwitchModel} from '@/jlmap3d/model/SwitchModel.js'; + +export function Jlmap3ddata(mapid,scope){ + let editmapid = mapid; + let scene = scope.scene; + let jlmap3ddata = scope.mapdata; + let assetloader = scope.assetloader; + let loadingInstance = Loading.service({ fullscreen: true }); + get3dMapData(editmapid).then(data => { + //console.log(data); + if(data.code == "200"){ + + //console.log("数据存在"); + + let isSection = false; + //console.log(data.data); + if(data.data.assets){ + let assets = JSON.parse(data.data.assets); + for(let i=0;i { + //console.log(error); + if(error.code == "30001"){ + //console.log("没有三维数据"); + let params = {mapId:editmapid}; + + set3dMapData(params).then(data => { + if(data.code == "200"){ + //console.log("创建三维数据成功"); + //console.log(data); + initobj(editmapid,data.data.id); + + } + }).catch(error => { + //console.log(error); + }); + + } + }); + + function initobj(mapid,data3did){ + console.log(mapid); + getMapDetail(mapid).then(data => { + let mapdata = data.data; + //console.log(data3did); + jlmap3ddata.id = data3did; + jlmap3ddata.mapId = mapid; + console.log(jlmap3ddata.mapId); + //初始化轨道和道岔 暂时 + jlmap3ddata.sectionlist = new SectionList(); + jlmap3ddata.signallist = new SignalList(); + //初始化站台 + jlmap3ddata.stationstandlist = new StationStandList(); + jlmap3ddata.trainlisttest = new TrainListTest(); + + assetloader.assetinit(scene) + .then(function(data){ + //console.log(data); + return jlmap3ddata.sectionlist.initpromise(mapdata.sectionList,mapdata.switchList,scene); + }) + .then(function(data){ + //console.log(data); + return jlmap3ddata.signallist.initpromise(mapdata.signalList,scene,assetloader); + }) + .then(function(data){ + //console.log(data); + return jlmap3ddata.stationstandlist.initpromise(mapdata.stationList,mapdata.stationStandList,scene,assetloader); + }) + .then(function(data){ + //console.log(data); + return jlmap3ddata.trainlisttest.initpromise(mapdata.trainList,scene,assetloader); + }) + .then(function(data){ + //console.log(data); + loadingInstance.close(); + }); + //初始化信号 + SetObj(mapdata,scope); + + }); + } + + function init3d(mapid,netdata){ + getMapDetail(mapid).then(data => { + jlmap3ddata.id = netdata.id; + jlmap3ddata.mapId = mapid; + let mapdata = data.data; + + //初始化轨道和道岔 暂时 + jlmap3ddata.sectionlist = new SectionList(); + jlmap3ddata.signallist = new SignalList(); + //初始化站台 + jlmap3ddata.stationstandlist = new StationStandList(); + //初始化测试列车 + jlmap3ddata.trainlisttest = new TrainListTest(); + + jlmap3ddata.realsectionlist = new RealSectionList(); + + assetloader.setmodellist(netdata.assets); + + assetloader.assetpromise(scene) + .then(function(data){ + //console.log(data); + return jlmap3ddata.sectionlist.initpromise(mapdata.sectionList,mapdata.switchList,scene); + }) + .then(function(data){ + //console.log(data); + return jlmap3ddata.signallist.initpromise(mapdata.signalList,scene,assetloader,netdata.signals); + }) + .then(function(data){ + //console.log(data); + return jlmap3ddata.stationstandlist.initpromise(mapdata.stationList,mapdata.stationStandList,scene,assetloader,netdata.stands); + }) + .then(function(data){ + //console.log(data); + return jlmap3ddata.trainlisttest.initpromise(mapdata.trainList,scene,assetloader); + }) + .then(function(data){ + //console.log(data); + return jlmap3ddata.realsectionlist.initpromise(jlmap3ddata,scene,assetloader); + }) + .then(function(data){ + //console.log(data); + loadingInstance.close(); + }); + + }); + } + + + +} diff --git a/src/jlmap3d/edit/action/pathaction.js b/src/jlmap3d/edit/action/pathaction.js new file mode 100644 index 000000000..4d9332b25 --- /dev/null +++ b/src/jlmap3d/edit/action/pathaction.js @@ -0,0 +1,389 @@ +//轨道对象操作 +export function Pathaction(){ + + let scope = this; + //开关 + this.on = true; + + //修改名称 + this.setname = function(){ + if(scope.on == true){ + + } + } + //改变类型 + this.settype = function(){ + if(scope.on == true){ + + } + } + //改变坐标 + this.setpos = function(){ + if(scope.on == true){ + + } + } + //改变角度 + this.setrota = function(){ + if(scope.on == true){ + + } + } + //改变拉伸值 + this.setscle = function(){ + if(scope.on == true){ + + } + } + + this.drawline = function(jlmap3dedit,splineHelperObjects){ + + if(scope.on == true){ + + var rayhelper;//画图辅助线 + + let lineswitch = 0; + + var linenew; + + document.onmousedown = function(event){ + jlmap3dedit.selectswitch = false; + console.log(event.button); + + //辅助线段 + + let point1; + + if(event.button == 2){ + jlmap3dedit.selectswitch = true; + document.onmousedown = null; + + lineswitch = null; + + console.log(linenew); + + if(linenew){ + + jlmap3dedit.scene.remove( linenew ); + + } + + }else if(event.button == 0){ + + if(lineswitch == 0){ + + point1 = mouserray(event,jlmap3dedit); + + console.log("new"); + if(point1){ + linenew = addline(point1,1,jlmap3dedit.splineHelperObjects,jlmap3dedit.scene); + jlmap3dedit.mapdata.path.push(linenew); + jlmap3dedit.scene.add( linenew ); + + lineswitch = 1; + } + + + }else if(lineswitch == 1){ + + let point = { + x:(linenew.geometry.vertices[0].x+linenew.geometry.vertices[1].x)/2, + y:linenew.geometry.vertices[1].y, + z:(linenew.geometry.vertices[0].z+linenew.geometry.vertices[1].z)/2 + }; + var raycaster = new THREE.Raycaster(new THREE.Vector3(point.x,point.y,point.z),new THREE.Vector3(0,-1,0).normalize()); + + for(let i=0;i(point1.x-6)&&point2.x<(point1.x+6))&& point1.z != point2.z){ + + point2.x = point1.x; + + }else if((point2.z>(point1.z-6)&&point2.z<(point1.z+6)) && point1.x != point2.x){ + + point2.z = point1.z; + + } + + //更新辅助线段 + linenew.children[1].position.x = point2.x; + linenew.children[1].position.z = point2.z; + + linenew.geometry.vertices[1].x = point2.x; + + linenew.geometry.vertices[1].z = point2.z; + + linenew.geometry.verticesNeedUpdate = true; + } + + + } + + document.onmouseup = function(event){ + + if(lineswitch == 0){ + + document.onmousemove = null; + + document.onmouseup = null; + + } + + } + + } + } + } + } + } + + this.drawcurve = function(jlmap3dedit){ + + if(scope.on == true){ + + var rayhelper;//画图辅助线 + + let lineswitch = 0; + + var linenew; + + document.onmousedown = function(event){ + + console.log(event.button); + + //辅助线段 + + let point1; + + if(event.button == 2){ + + document.onmousedown = null; + + lineswitch = null; + + console.log(linenew); + + if(linenew){ + + jlmap3dedit.scene.remove( linenew ); + + } + + }else if(event.button == 0){ + + if(lineswitch == 0){ + + point1 = mouserray(event,jlmap3dedit); + + if(point1){ + linenew = addline(point1,2,jlmap3dedit.splineHelperObjects,jlmap3dedit.scene); + + + jlmap3dedit.scene.add( linenew ); + + lineswitch = 1; + } + + + + + }else if(lineswitch == 1){ + + let point = { + x:linenew.geometry.vertices[1].x, + y:linenew.geometry.vertices[1].y, + z:linenew.geometry.vertices[1].z + }; + var raycaster = new THREE.Raycaster(new THREE.Vector3(point.x,point.y,point.z),new THREE.Vector3(0,-1,0).normalize()); + + for(let i=0;i(window.innerWidth*0.8) ){ + + }else{ + mouse.x = (mousep.clientX / window.innerWidth) * 2 - 1; + mouse.y = -(mousep.clientY / window.innerHeight) * 2 + 1; + + raycaster.setFromCamera( mouse, jlmap3dedit.camera ); + console.log(jlmap3dedit.assetloader.modellist[3].mesh); + var intersects = raycaster.intersectObjects(jlmap3dedit.assetloader.modellist[3].mesh.children); + console.log(intersects); + if(intersects[0]){ + resultpoint = intersects[0].point; + return resultpoint; + } + } + + } + + function addline(point1,num,splineHelperObjects,scene){ + + let material = new THREE.LineBasicMaterial({color: 0xEEC900}); + + let geometry = new THREE.Geometry(); + + let object; + + if(num == 1){ + geometry.vertices.push(new THREE.Vector3(point1.x, 20, point1.z ),new THREE.Vector3( point1.x+1, 20, point1.z+1 )); + object = new THREE.Line( geometry, material ); + for(let i=0;i 0 ) { + + var object = intersects[ 0 ].object; + + _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) ); + + if ( _hovered !== object ) { + + scope.dispatchEvent( { type: 'hoveron', object: object } ); + + _domElement.style.cursor = 'pointer'; + _hovered = object; + + } + + } else { + + if ( _hovered !== null ) { + + scope.dispatchEvent( { type: 'hoveroff', object: _hovered } ); + + _domElement.style.cursor = 'auto'; + _hovered = null; + + } + + } + + } + + function onDocumentMouseDown( event ) { + + event.preventDefault(); + + _raycaster.setFromCamera( _mouse, _camera ); + + var intersects = _raycaster.intersectObjects( _objects ); + + if ( intersects.length > 0 ) { + + _selected = intersects[ 0 ].object; + + if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { + + _inverseMatrix.getInverse( _selected.parent.matrixWorld ); + _offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); + + } + + _domElement.style.cursor = 'move'; + + scope.dispatchEvent( { type: 'dragstart', object: _selected } ); + + } + + + } + + function onDocumentMouseCancel( event ) { + + event.preventDefault(); + + if ( _selected ) { + + scope.dispatchEvent( { type: 'dragend', object: _selected } ); + + _selected = null; + + } + + _domElement.style.cursor = _hovered ? 'pointer' : 'auto'; + + } + + function onDocumentTouchMove( event ) { + + event.preventDefault(); + event = event.changedTouches[ 0 ]; + + var rect = _domElement.getBoundingClientRect(); + + _mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1; + _mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1; + + _raycaster.setFromCamera( _mouse, _camera ); + + if ( _selected && scope.enabled ) { + + if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { + + _selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) ); + + } + + scope.dispatchEvent( { type: 'drag', object: _selected } ); + + return; + + } + + } + + function onDocumentTouchStart( event ) { + + event.preventDefault(); + event = event.changedTouches[ 0 ]; + + var rect = _domElement.getBoundingClientRect(); + + _mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1; + _mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1; + + _raycaster.setFromCamera( _mouse, _camera ); + + var intersects = _raycaster.intersectObjects( _objects ); + + if ( intersects.length > 0 ) { + + _selected = intersects[ 0 ].object; + + _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); + + if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { + + _inverseMatrix.getInverse( _selected.parent.matrixWorld ); + _offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); + + } + + _domElement.style.cursor = 'move'; + + scope.dispatchEvent( { type: 'dragstart', object: _selected } ); + + } + + + } + + function onDocumentTouchEnd( event ) { + + event.preventDefault(); + + if ( _selected ) { + + scope.dispatchEvent( { type: 'dragend', object: _selected } ); + + _selected = null; + + } + + _domElement.style.cursor = 'auto'; + + } + + activate(); + + // API + + this.enabled = true; + + this.activate = activate; + this.deactivate = deactivate; + this.dispose = dispose; + + // Backward compatibility + + this.setObjects = function () { + + console.error( 'THREE.DragControls: setObjects() has been removed.' ); + + }; + + this.on = function ( type, listener ) { + + console.warn( 'THREE.DragControls: on() has been deprecated. Use addEventListener() instead.' ); + scope.addEventListener( type, listener ); + + }; + + this.off = function ( type, listener ) { + + console.warn( 'THREE.DragControls: off() has been deprecated. Use removeEventListener() instead.' ); + scope.removeEventListener( type, listener ); + + }; + + this.notify = function ( type ) { + + console.error( 'THREE.DragControls: notify() has been deprecated. Use dispatchEvent() instead.' ); + scope.dispatchEvent( { type: type } ); + + }; + +}; + +THREE.DragControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.DragControls.prototype.constructor = THREE.DragControls; diff --git a/src/jlmap3d/edit/control/OrbitControlsEdit.js b/src/jlmap3d/edit/control/OrbitControlsEdit.js new file mode 100644 index 000000000..ca378b794 --- /dev/null +++ b/src/jlmap3d/edit/control/OrbitControlsEdit.js @@ -0,0 +1,1076 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one-finger move +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move + +THREE.OrbitControlsedit = function ( object, domElement ) { + this.object = object; + + this.data = null; + + this.domElement = ( domElement !== undefined ) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.25; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.panSpeed = 1.0; + this.screenSpacePanning = false; // if true, pan in screen-space + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { LEFT: THREE.MOUSE.LEFT, MIDDLE: THREE.MOUSE.MIDDLE, RIGHT: THREE.MOUSE.RIGHT }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy( scope.target ); + scope.position0.copy( scope.object.position ); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + this.upmodeldirect = function(data){ + scope.data = data; + } + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + rotateLeft( getAutoRotationAngle() ); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + scope.target.add( panOffset ); + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + panOffset.multiplyScalar( 1 - scope.dampingFactor ); + + } else { + sphericalDelta.set( 0, 0, 0 ); + + panOffset.set( 0, 0, 0 ); + + } + + scale = 1; + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + window.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY_PAN: 4 }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + if ( scope.screenSpacePanning === true ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); + + } else { + + v.setFromMatrixColumn( objectMatrix, 0 ); + v.crossVectors( scope.object.up, v ); + + } + + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if ( scope.object.isPerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we use only clientHeight here so aspect ratio does not distort speed + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object.isOrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControlsedit.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControlsedit.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControlsedit.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set( event.clientX, event.clientY ); + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( event ) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel( event ) { + + // console.log( 'handleMouseWheel' ); + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + // console.log( 'handleKeyDown' ); + + var needsUpdate = false; + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + } + + if ( needsUpdate ) { + + // prevent the browser from scrolling on cursor keys + event.preventDefault(); + + scope.update(); + + } + + + } + + function handleTouchStartRotate( event ) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchStartDollyPan( event ) { + + //console.log( 'handleTouchStartDollyPan' ); + + if ( scope.enableZoom ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + if ( scope.enablePan ) { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panStart.set( x, y ); + + } + + } + + function handleTouchMoveRotate( event ) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleTouchMoveDollyPan( event ) { + + //console.log( 'handleTouchMoveDollyPan' ); + + if ( scope.enableZoom ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); + + dollyIn( dollyDelta.y ); + + dollyStart.copy( dollyEnd ); + + } + + if ( scope.enablePan ) { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panEnd.set( x, y ); + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + } + + scope.update(); + + } + + function handleTouchEnd( event ) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + // Prevent the browser from scrolling. + + event.preventDefault(); + + // Manually set the focus since calling preventDefault above + // prevents the browser from setting it automatically. + + scope.domElement.focus ? scope.domElement.focus() : window.focus(); + + switch ( event.button ) { + + case scope.mouseButtons.RIGHT: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } else { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } + + break; + + case scope.mouseButtons.MIDDLE: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.LEFT: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + if ( scope.enabled === false ) return; + + event.preventDefault(); + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + if (event.cancelable) { + // 判断默认行为是否已经被禁用 + if (!event.defaultPrevented) { + event.preventDefault(); + } + } + + event.stopPropagation(); + + scope.dispatchEvent( startEvent ); + + handleMouseWheel( event ); + + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly-pan + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchStartDollyPan( event ); + + state = STATE.TOUCH_DOLLY_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed? + + handleTouchMoveRotate( event ); + + break; + + case 2: // two-fingered touch: dolly-pan + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + if ( state !== STATE.TOUCH_DOLLY_PAN ) return; // is this needed? + + handleTouchMoveDollyPan( event ); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, { passive: false } ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, { passive: false } ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, { passive: false } ); + + window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControlsedit.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControlsedit.prototype.constructor = THREE.OrbitControlsedit; + +Object.defineProperties( THREE.OrbitControlsedit.prototype, { + + center: { + + get: function () { + + console.warn( 'THREE.OrbitControlsedit: .center has been renamed to .target' ); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn( 'THREE.OrbitControlsedit: .noZoom has been deprecated. Use .enableZoom instead.' ); + return ! this.enableZoom; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControlsedit: .noZoom has been deprecated. Use .enableZoom instead.' ); + this.enableZoom = ! value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn( 'THREE.OrbitControlsedit: .noRotate has been deprecated. Use .enableRotate instead.' ); + return ! this.enableRotate; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControlsedit: .noRotate has been deprecated. Use .enableRotate instead.' ); + this.enableRotate = ! value; + + } + + }, + + noPan: { + + get: function () { + + console.warn( 'THREE.OrbitControlsedit: .noPan has been deprecated. Use .enablePan instead.' ); + return ! this.enablePan; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControlsedit: .noPan has been deprecated. Use .enablePan instead.' ); + this.enablePan = ! value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn( 'THREE.OrbitControlsedit: .noKeys has been deprecated. Use .enableKeys instead.' ); + return ! this.enableKeys; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControlsedit: .noKeys has been deprecated. Use .enableKeys instead.' ); + this.enableKeys = ! value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn( 'THREE.OrbitControlsedit: .staticMoving has been deprecated. Use .enableDamping instead.' ); + return ! this.enableDamping; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControlsedit: .staticMoving has been deprecated. Use .enableDamping instead.' ); + this.enableDamping = ! value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn( 'THREE.OrbitControlsedit: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + return this.dampingFactor; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControlsedit: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + this.dampingFactor = value; + + } + + } + +} ); diff --git a/src/jlmap3d/edit/control/TransformControls.js b/src/jlmap3d/edit/control/TransformControls.js new file mode 100644 index 000000000..2770d3886 --- /dev/null +++ b/src/jlmap3d/edit/control/TransformControls.js @@ -0,0 +1,1460 @@ +/** + * @author arodic / https://github.com/arodic + */ + +THREE.TransformControls = function ( camera, domElement ) { + + THREE.Object3D.call( this ); + + domElement = ( domElement !== undefined ) ? domElement : document; + + this.visible = false; + + var _gizmo = new THREE.TransformControlsGizmo(); + this.add( _gizmo ); + + var _plane = new THREE.TransformControlsPlane(); + this.add( _plane ); + + var scope = this; + + // Define properties with getters/setter + // Setting the defined property will automatically trigger change event + // Defined properties are passed down to gizmo and plane + + defineProperty( "camera", camera ); + defineProperty( "object", undefined ); + defineProperty( "enabled", true ); + defineProperty( "axis", null ); + defineProperty( "mode", "translate" ); + defineProperty( "translationSnap", null ); + defineProperty( "rotationSnap", null ); + defineProperty( "space", "world" ); + defineProperty( "size", 1 ); + defineProperty( "dragging", false ); + defineProperty( "showX", true ); + defineProperty( "showY", true ); + defineProperty( "showZ", true ); + + var changeEvent = { type: "change" }; + var mouseDownEvent = { type: "mouseDown" }; + var mouseUpEvent = { type: "mouseUp", mode: scope.mode }; + var objectChangeEvent = { type: "objectChange" }; + + // Reusable utility variables + + var ray = new THREE.Raycaster(); + + var _tempVector = new THREE.Vector3(); + var _tempVector2 = new THREE.Vector3(); + var _tempQuaternion = new THREE.Quaternion(); + var _unit = { + X: new THREE.Vector3( 1, 0, 0 ), + Y: new THREE.Vector3( 0, 1, 0 ), + Z: new THREE.Vector3( 0, 0, 1 ) + }; + var _identityQuaternion = new THREE.Quaternion(); + var _alignVector = new THREE.Vector3(); + + var pointStart = new THREE.Vector3(); + var pointEnd = new THREE.Vector3(); + var offset = new THREE.Vector3(); + var rotationAxis = new THREE.Vector3(); + var startNorm = new THREE.Vector3(); + var endNorm = new THREE.Vector3(); + var rotationAngle = 0; + + var cameraPosition = new THREE.Vector3(); + var cameraQuaternion = new THREE.Quaternion(); + var cameraScale = new THREE.Vector3(); + + var parentPosition = new THREE.Vector3(); + var parentQuaternion = new THREE.Quaternion(); + var parentQuaternionInv = new THREE.Quaternion(); + var parentScale = new THREE.Vector3(); + + var worldPositionStart = new THREE.Vector3(); + var worldQuaternionStart = new THREE.Quaternion(); + var worldScaleStart = new THREE.Vector3(); + + var worldPosition = new THREE.Vector3(); + var worldQuaternion = new THREE.Quaternion(); + var worldQuaternionInv = new THREE.Quaternion(); + var worldScale = new THREE.Vector3(); + + var eye = new THREE.Vector3(); + + var positionStart = new THREE.Vector3(); + var quaternionStart = new THREE.Quaternion(); + var scaleStart = new THREE.Vector3(); + + // TODO: remove properties unused in plane and gizmo + + defineProperty( "worldPosition", worldPosition ); + defineProperty( "worldPositionStart", worldPositionStart ); + defineProperty( "worldQuaternion", worldQuaternion ); + defineProperty( "worldQuaternionStart", worldQuaternionStart ); + defineProperty( "cameraPosition", cameraPosition ); + defineProperty( "cameraQuaternion", cameraQuaternion ); + defineProperty( "pointStart", pointStart ); + defineProperty( "pointEnd", pointEnd ); + defineProperty( "rotationAxis", rotationAxis ); + defineProperty( "rotationAngle", rotationAngle ); + defineProperty( "eye", eye ); + + { + + domElement.addEventListener( "mousedown", onPointerDown, false ); + domElement.addEventListener( "touchstart", onPointerDown, false ); + domElement.addEventListener( "mousemove", onPointerHover, false ); + domElement.addEventListener( "touchmove", onPointerHover, false ); + domElement.addEventListener( "touchmove", onPointerMove, false ); + document.addEventListener( "mouseup", onPointerUp, false ); + domElement.addEventListener( "touchend", onPointerUp, false ); + domElement.addEventListener( "touchcancel", onPointerUp, false ); + domElement.addEventListener( "touchleave", onPointerUp, false ); + + } + + this.dispose = function () { + + domElement.removeEventListener( "mousedown", onPointerDown ); + domElement.removeEventListener( "touchstart", onPointerDown ); + domElement.removeEventListener( "mousemove", onPointerHover ); + domElement.removeEventListener( "touchmove", onPointerHover ); + domElement.removeEventListener( "touchmove", onPointerMove ); + document.removeEventListener( "mouseup", onPointerUp ); + domElement.removeEventListener( "touchend", onPointerUp ); + domElement.removeEventListener( "touchcancel", onPointerUp ); + domElement.removeEventListener( "touchleave", onPointerUp ); + + }; + + // Set current object + this.attach = function ( object ) { + + this.object = object; + this.visible = true; + + }; + + // Detatch from object + this.detach = function () { + + this.object = undefined; + this.visible = false; + this.axis = null; + + }; + + // Defined getter, setter and store for a property + function defineProperty( propName, defaultValue ) { + + var propValue = defaultValue; + + Object.defineProperty( scope, propName, { + + get: function() { + + return propValue !== undefined ? propValue : defaultValue; + + }, + + set: function( value ) { + + if ( propValue !== value ) { + + propValue = value; + _plane[ propName ] = value; + _gizmo[ propName ] = value; + + scope.dispatchEvent( { type: propName + "-changed", value: value } ); + scope.dispatchEvent( changeEvent ); + + } + + } + + }); + + scope[ propName ] = defaultValue; + _plane[ propName ] = defaultValue; + _gizmo[ propName ] = defaultValue; + + } + + // updateMatrixWorld updates key transformation variables + this.updateMatrixWorld = function () { + + if ( this.object !== undefined ) { + + this.object.updateMatrixWorld(); + this.object.parent.matrixWorld.decompose( parentPosition, parentQuaternion, parentScale ); + this.object.matrixWorld.decompose( worldPosition, worldQuaternion, worldScale ); + + parentQuaternionInv.copy( parentQuaternion ).inverse(); + worldQuaternionInv.copy( worldQuaternion ).inverse(); + + } + + this.camera.updateMatrixWorld(); + this.camera.matrixWorld.decompose( cameraPosition, cameraQuaternion, cameraScale ); + + if ( this.camera instanceof THREE.PerspectiveCamera ) { + + eye.copy( cameraPosition ).sub( worldPosition ).normalize(); + + } else if ( this.camera instanceof THREE.OrthographicCamera ) { + + eye.copy( cameraPosition ).normalize(); + + } + + THREE.Object3D.prototype.updateMatrixWorld.call( this ); + + }; + + this.pointerHover = function( pointer ) { + + if ( this.object === undefined || this.dragging === true || ( pointer.button !== undefined && pointer.button !== 0 ) ) return; + + ray.setFromCamera( pointer, this.camera ); + + var intersect = ray.intersectObjects( _gizmo.picker[ this.mode ].children, true )[ 0 ] || false; + + if ( intersect ) { + + this.axis = intersect.object.name; + + } else { + + this.axis = null; + + } + + }; + + this.pointerDown = function( pointer ) { + + if ( this.object === undefined || this.dragging === true || ( pointer.button !== undefined && pointer.button !== 0 ) ) return; + + if ( ( pointer.button === 0 || pointer.button === undefined ) && this.axis !== null ) { + + ray.setFromCamera( pointer, this.camera ); + + var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false; + + if ( planeIntersect ) { + + var space = this.space; + + if ( this.mode === 'scale') { + + space = 'local'; + + } else if ( this.axis === 'E' || this.axis === 'XYZE' || this.axis === 'XYZ' ) { + + space = 'world'; + + } + + if ( space === 'local' && this.mode === 'rotate' ) { + + var snap = this.rotationSnap; + + if ( this.axis === 'X' && snap ) this.object.rotation.x = Math.round( this.object.rotation.x / snap ) * snap; + if ( this.axis === 'Y' && snap ) this.object.rotation.y = Math.round( this.object.rotation.y / snap ) * snap; + if ( this.axis === 'Z' && snap ) this.object.rotation.z = Math.round( this.object.rotation.z / snap ) * snap; + + } + + this.object.updateMatrixWorld(); + this.object.parent.updateMatrixWorld(); + + positionStart.copy( this.object.position ); + quaternionStart.copy( this.object.quaternion ); + scaleStart.copy( this.object.scale ); + + this.object.matrixWorld.decompose( worldPositionStart, worldQuaternionStart, worldScaleStart ); + + pointStart.copy( planeIntersect.point ).sub( worldPositionStart ); + + } + + this.dragging = true; + mouseDownEvent.mode = this.mode; + this.dispatchEvent( mouseDownEvent ); + + } + + }; + + this.pointerMove = function( pointer ) { + + var axis = this.axis; + var mode = this.mode; + var object = this.object; + var space = this.space; + + if ( mode === 'scale') { + + space = 'local'; + + } else if ( axis === 'E' || axis === 'XYZE' || axis === 'XYZ' ) { + + space = 'world'; + + } + + if ( object === undefined || axis === null || this.dragging === false || ( pointer.button !== undefined && pointer.button !== 0 ) ) return; + + ray.setFromCamera( pointer, this.camera ); + + var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false; + + if ( planeIntersect === false ) return; + + pointEnd.copy( planeIntersect.point ).sub( worldPositionStart ); + + if ( mode === 'translate' ) { + + // Apply translate + + offset.copy( pointEnd ).sub( pointStart ); + + if ( space === 'local' && axis !== 'XYZ' ) { + offset.applyQuaternion( worldQuaternionInv ); + } + + if ( axis.indexOf( 'X' ) === -1 ) offset.x = 0; + if ( axis.indexOf( 'Y' ) === -1 ) offset.y = 0; + if ( axis.indexOf( 'Z' ) === -1 ) offset.z = 0; + + if ( space === 'local' && axis !== 'XYZ') { + offset.applyQuaternion( quaternionStart ).divide( parentScale ); + } else { + offset.applyQuaternion( parentQuaternionInv ).divide( parentScale ); + } + + object.position.copy( offset ).add( positionStart ); + + // Apply translation snap + + if ( this.translationSnap ) { + + if ( space === 'local' ) { + + object.position.applyQuaternion(_tempQuaternion.copy( quaternionStart ).inverse() ); + + if ( axis.search( 'X' ) !== -1 ) { + object.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap; + } + + if ( axis.search( 'Y' ) !== -1 ) { + object.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap; + } + + if ( axis.search( 'Z' ) !== -1 ) { + object.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap; + } + + object.position.applyQuaternion( quaternionStart ); + + } + + if ( space === 'world' ) { + + if ( object.parent ) { + object.position.add( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) ); + } + + if ( axis.search( 'X' ) !== -1 ) { + object.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap; + } + + if ( axis.search( 'Y' ) !== -1 ) { + object.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap; + } + + if ( axis.search( 'Z' ) !== -1 ) { + object.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap; + } + + if ( object.parent ) { + object.position.sub( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) ); + } + + } + + } + + } else if ( mode === 'scale' ) { + + if ( axis.search( 'XYZ' ) !== -1 ) { + + var d = pointEnd.length() / pointStart.length(); + + if ( pointEnd.dot( pointStart ) < 0 ) d *= -1; + + _tempVector.set( d, d, d ); + + } else { + + _tempVector.copy( pointEnd ).divide( pointStart ); + + if ( axis.search( 'X' ) === -1 ) { + _tempVector.x = 1; + } + if ( axis.search( 'Y' ) === -1 ) { + _tempVector.y = 1; + } + if ( axis.search( 'Z' ) === -1 ) { + _tempVector.z = 1; + } + + } + + // Apply scale + + object.scale.copy( scaleStart ).multiply( _tempVector ); + + } else if ( mode === 'rotate' ) { + + offset.copy( pointEnd ).sub( pointStart ); + + var ROTATION_SPEED = 20 / worldPosition.distanceTo( _tempVector.setFromMatrixPosition( this.camera.matrixWorld ) ); + + if ( axis === 'E' ) { + + rotationAxis.copy( eye ); + rotationAngle = pointEnd.angleTo( pointStart ); + + startNorm.copy( pointStart ).normalize(); + endNorm.copy( pointEnd ).normalize(); + + rotationAngle *= ( endNorm.cross( startNorm ).dot( eye ) < 0 ? 1 : -1); + + } else if ( axis === 'XYZE' ) { + + rotationAxis.copy( offset ).cross( eye ).normalize( ); + rotationAngle = offset.dot( _tempVector.copy( rotationAxis ).cross( this.eye ) ) * ROTATION_SPEED; + + } else if ( axis === 'X' || axis === 'Y' || axis === 'Z' ) { + + rotationAxis.copy( _unit[ axis ] ); + + _tempVector.copy( _unit[ axis ] ); + + if ( space === 'local' ) { + _tempVector.applyQuaternion( worldQuaternion ); + } + + rotationAngle = offset.dot( _tempVector.cross( eye ).normalize() ) * ROTATION_SPEED; + + } + + // Apply rotation snap + + if ( this.rotationSnap ) rotationAngle = Math.round( rotationAngle / this.rotationSnap ) * this.rotationSnap; + + this.rotationAngle = rotationAngle; + + // Apply rotate + if ( space === 'local' && axis !== 'E' && axis !== 'XYZE' ) { + + object.quaternion.copy( quaternionStart ); + object.quaternion.multiply( _tempQuaternion.setFromAxisAngle( rotationAxis, rotationAngle ) ).normalize(); + + } else { + + rotationAxis.applyQuaternion( parentQuaternionInv ); + object.quaternion.copy( _tempQuaternion.setFromAxisAngle( rotationAxis, rotationAngle ) ); + object.quaternion.multiply( quaternionStart ).normalize(); + + } + + } + + this.dispatchEvent( changeEvent ); + this.dispatchEvent( objectChangeEvent ); + + }; + + this.pointerUp = function( pointer ) { + + if ( pointer.button !== undefined && pointer.button !== 0 ) return; + + if ( this.dragging && ( this.axis !== null ) ) { + + mouseUpEvent.mode = this.mode; + this.dispatchEvent( mouseUpEvent ); + + } + + this.dragging = false; + + if ( pointer.button === undefined ) this.axis = null; + + }; + + // normalize mouse / touch pointer and remap {x,y} to view space. + + function getPointer( event ) { + + var pointer = event.changedTouches ? event.changedTouches[ 0 ] : event; + + var rect = domElement.getBoundingClientRect(); + + return { + x: ( pointer.clientX - rect.left ) / rect.width * 2 - 1, + y: - ( pointer.clientY - rect.top ) / rect.height * 2 + 1, + button: event.button + }; + + } + + // mouse / touch event handlers + + function onPointerHover( event ) { + + if ( !scope.enabled ) return; + + scope.pointerHover( getPointer( event ) ); + + } + + function onPointerDown( event ) { + + if ( !scope.enabled ) return; + + document.addEventListener( "mousemove", onPointerMove, false ); + + scope.pointerHover( getPointer( event ) ); + scope.pointerDown( getPointer( event ) ); + + } + + function onPointerMove( event ) { + + if ( !scope.enabled ) return; + + scope.pointerMove( getPointer( event ) ); + + } + + function onPointerUp( event ) { + + if ( !scope.enabled ) return; + + document.removeEventListener( "mousemove", onPointerMove, false ); + + scope.pointerUp( getPointer( event ) ); + + } + + // TODO: depricate + + this.getMode = function () { + + return scope.mode; + + }; + + this.setMode = function ( mode ) { + + scope.mode = mode; + + }; + + this.setTranslationSnap = function ( translationSnap ) { + + scope.translationSnap = translationSnap; + + }; + + this.setRotationSnap = function ( rotationSnap ) { + + scope.rotationSnap = rotationSnap; + + }; + + this.setSize = function ( size ) { + + scope.size = size; + + }; + + this.setSpace = function ( space ) { + + scope.space = space; + + }; + + this.update = function () { + + console.warn( 'THREE.TransformControls: update function has been depricated.' ); + + }; + +}; + +THREE.TransformControls.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), { + + constructor: THREE.TransformControls, + + isTransformControls: true + +} ); + + +THREE.TransformControlsGizmo = function () { + + 'use strict'; + + THREE.Object3D.call( this ); + + this.type = 'TransformControlsGizmo'; + + // shared materials + + var gizmoMaterial = new THREE.MeshBasicMaterial({ + depthTest: false, + depthWrite: false, + transparent: true, + side: THREE.DoubleSide, + fog: false + }); + + var gizmoLineMaterial = new THREE.LineBasicMaterial({ + depthTest: false, + depthWrite: false, + transparent: true, + linewidth: 1, + fog: false + }); + + // Make unique material for each axis/color + + var matInvisible = gizmoMaterial.clone(); + matInvisible.opacity = 0.15; + + var matHelper = gizmoMaterial.clone(); + matHelper.opacity = 0.33; + + var matRed = gizmoMaterial.clone(); + matRed.color.set( 0xff0000 ); + + var matGreen = gizmoMaterial.clone(); + matGreen.color.set( 0x00ff00 ); + + var matBlue = gizmoMaterial.clone(); + matBlue.color.set( 0x0000ff ); + + var matWhiteTransperent = gizmoMaterial.clone(); + matWhiteTransperent.opacity = 0.25; + + var matYellowTransparent = matWhiteTransperent.clone(); + matYellowTransparent.color.set( 0xffff00 ); + + var matCyanTransparent = matWhiteTransperent.clone(); + matCyanTransparent.color.set( 0x00ffff ); + + var matMagentaTransparent = matWhiteTransperent.clone(); + matMagentaTransparent.color.set( 0xff00ff ); + + var matYellow = gizmoMaterial.clone(); + matYellow.color.set( 0xffff00 ); + + var matLineRed = gizmoLineMaterial.clone(); + matLineRed.color.set( 0xff0000 ); + + var matLineGreen = gizmoLineMaterial.clone(); + matLineGreen.color.set( 0x00ff00 ); + + var matLineBlue = gizmoLineMaterial.clone(); + matLineBlue.color.set( 0x0000ff ); + + var matLineCyan = gizmoLineMaterial.clone(); + matLineCyan.color.set( 0x00ffff ); + + var matLineMagenta = gizmoLineMaterial.clone(); + matLineMagenta.color.set( 0xff00ff ); + + var matLineYellow = gizmoLineMaterial.clone(); + matLineYellow.color.set( 0xffff00 ); + + var matLineGray = gizmoLineMaterial.clone(); + matLineGray.color.set( 0x787878); + + var matLineYellowTransparent = matLineYellow.clone(); + matLineYellowTransparent.opacity = 0.25; + + // reusable geometry + + var arrowGeometry = new THREE.CylinderBufferGeometry( 0, 0.05, 0.2, 12, 1, false); + + var scaleHandleGeometry = new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125); + + var lineGeometry = new THREE.BufferGeometry( ); + lineGeometry.addAttribute('position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 1, 0, 0 ], 3 ) ); + + var CircleGeometry = function( radius, arc ) { + + var geometry = new THREE.BufferGeometry( ); + var vertices = []; + + for ( var i = 0; i <= 64 * arc; ++i ) { + + vertices.push( 0, Math.cos( i / 32 * Math.PI ) * radius, Math.sin( i / 32 * Math.PI ) * radius ); + + } + + geometry.addAttribute('position', new THREE.Float32BufferAttribute( vertices, 3 ) ); + + return geometry; + + }; + + // Special geometry for transform helper. If scaled with position vector it spans from [0,0,0] to position + + var TranslateHelperGeometry = function( radius, arc ) { + + var geometry = new THREE.BufferGeometry() + + geometry.addAttribute('position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 1, 1, 1 ], 3 ) ); + + return geometry; + + }; + + // Gizmo definitions - custom hierarchy definitions for setupGizmo() function + + var gizmoTranslate = { + X: [ + [ new THREE.Mesh( arrowGeometry, matRed ), [ 1, 0, 0 ], [ 0, 0, -Math.PI / 2 ], null, 'fwd' ], + [ new THREE.Mesh( arrowGeometry, matRed ), [ 1, 0, 0 ], [ 0, 0, Math.PI / 2 ], null, 'bwd' ], + [ new THREE.Line( lineGeometry, matLineRed ) ] + ], + Y: [ + [ new THREE.Mesh( arrowGeometry, matGreen ), [ 0, 1, 0 ], null, null, 'fwd' ], + [ new THREE.Mesh( arrowGeometry, matGreen ), [ 0, 1, 0 ], [ Math.PI, 0, 0 ], null, 'bwd' ], + [ new THREE.Line( lineGeometry, matLineGreen ), null, [ 0, 0, Math.PI / 2 ] ] + ], + Z: [ + [ new THREE.Mesh( arrowGeometry, matBlue ), [ 0, 0, 1 ], [ Math.PI / 2, 0, 0 ], null, 'fwd' ], + [ new THREE.Mesh( arrowGeometry, matBlue ), [ 0, 0, 1 ], [ -Math.PI / 2, 0, 0 ], null, 'bwd' ], + [ new THREE.Line( lineGeometry, matLineBlue ), null, [ 0, -Math.PI / 2, 0 ] ] + ], + XYZ: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.1, 0 ), matWhiteTransperent ), [ 0, 0, 0 ], [ 0, 0, 0 ] ] + ], + XY: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.295, 0.295 ), matYellowTransparent ), [ 0.15, 0.15, 0 ] ], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.18, 0.3, 0 ], null, [ 0.125, 1, 1 ] ], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.3, 0.18, 0 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ] ] + ], + YZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.295, 0.295 ), matCyanTransparent ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ] ], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.18, 0.3 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ] ], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.3, 0.18 ], [ 0, -Math.PI / 2, 0 ], [ 0.125, 1, 1 ] ] + ], + XZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.295, 0.295 ), matMagentaTransparent ), [ 0.15, 0, 0.15 ], [ -Math.PI / 2, 0, 0 ] ], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.18, 0, 0.3 ], null, [ 0.125, 1, 1 ] ], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.3, 0, 0.18 ], [ 0, -Math.PI / 2, 0 ], [ 0.125, 1, 1 ] ] + ] + }; + + var pickerTranslate = { + X: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 1, 4, 1, false ), matInvisible ), [ 0.6, 0, 0 ], [ 0, 0, -Math.PI / 2 ] ] + ], + Y: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 1, 4, 1, false ), matInvisible ), [ 0, 0.6, 0 ] ] + ], + Z: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 1, 4, 1, false ), matInvisible ), [ 0, 0, 0.6 ], [ Math.PI / 2, 0, 0 ] ] + ], + XYZ: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.2, 0 ), matInvisible ) ] + ], + XY: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.4, 0.4 ), matInvisible ), [ 0.2, 0.2, 0 ] ] + ], + YZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.4, 0.4 ), matInvisible ), [ 0, 0.2, 0.2 ], [ 0, Math.PI / 2, 0 ] ] + ], + XZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.4, 0.4 ), matInvisible ), [ 0.2, 0, 0.2 ], [ -Math.PI / 2, 0, 0 ] ] + ] + }; + + var helperTranslate = { + START: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ] + ], + END: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ] + ], + DELTA: [ + [ new THREE.Line( TranslateHelperGeometry(), matHelper ), null, null, null, 'helper' ] + ], + X: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ -1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] + ], + Y: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, -1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ] + ], + Z: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, 0, -1e3 ], [ 0, -Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ] + ] + }; + + var gizmoRotate = { + X: [ + [ new THREE.Line( CircleGeometry( 1, 0.5 ), matLineRed ) ], + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.04, 0 ), matRed ), [ 0, 0, 0.99 ], null, [ 1, 3, 1 ] ], + ], + Y: [ + [ new THREE.Line( CircleGeometry( 1, 0.5 ), matLineGreen ), null, [ 0, 0, -Math.PI / 2 ] ], + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.04, 0 ), matGreen ), [ 0, 0, 0.99 ], null, [ 3, 1, 1 ] ], + ], + Z: [ + [ new THREE.Line( CircleGeometry( 1, 0.5 ), matLineBlue ), null, [ 0, Math.PI / 2, 0 ] ], + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.04, 0 ), matBlue ), [ 0.99, 0, 0 ], null, [ 1, 3, 1 ] ], + ], + E: [ + [ new THREE.Line( CircleGeometry( 1.25, 1 ), matLineYellowTransparent ), null, [ 0, Math.PI / 2, 0 ] ], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ 1.17, 0, 0 ], [ 0, 0, -Math.PI / 2 ], [ 1, 1, 0.001 ]], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ -1.17, 0, 0 ], [ 0, 0, Math.PI / 2 ], [ 1, 1, 0.001 ]], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ 0, -1.17, 0 ], [ Math.PI, 0, 0 ], [ 1, 1, 0.001 ]], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ 0, 1.17, 0 ], [ 0, 0, 0 ], [ 1, 1, 0.001 ]], + ], + XYZE: [ + [ new THREE.Line( CircleGeometry( 1, 1 ), matLineGray ), null, [ 0, Math.PI / 2, 0 ] ] + ] + }; + + var helperRotate = { + AXIS: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ -1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] + ] + }; + + var pickerRotate = { + X: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, -Math.PI / 2, -Math.PI / 2 ] ], + ], + Y: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ Math.PI / 2, 0, 0 ] ], + ], + Z: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, 0, -Math.PI / 2 ] ], + ], + E: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1.25, 0.1, 2, 24 ), matInvisible ) ] + ], + XYZE: [ + [ new THREE.Mesh( new THREE.SphereBufferGeometry( 0.7, 10, 8 ), matInvisible ) ] + ] + }; + + var gizmoScale = { + X: [ + [ new THREE.Mesh( scaleHandleGeometry, matRed ), [ 0.8, 0, 0 ], [ 0, 0, -Math.PI / 2 ] ], + [ new THREE.Line( lineGeometry, matLineRed ), null, null, [ 0.8, 1, 1 ] ] + ], + Y: [ + [ new THREE.Mesh( scaleHandleGeometry, matGreen ), [ 0, 0.8, 0 ] ], + [ new THREE.Line( lineGeometry, matLineGreen ), null, [ 0, 0, Math.PI / 2 ], [ 0.8, 1, 1 ] ] + ], + Z: [ + [ new THREE.Mesh( scaleHandleGeometry, matBlue ), [ 0, 0, 0.8 ], [ Math.PI / 2, 0, 0 ] ], + [ new THREE.Line( lineGeometry, matLineBlue ), null, [ 0, -Math.PI / 2, 0 ], [ 0.8, 1, 1 ] ] + ], + XY: [ + [ new THREE.Mesh( scaleHandleGeometry, matYellowTransparent ), [ 0.85, 0.85, 0 ], null, [ 2, 2, 0.2 ] ], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.855, 0.98, 0 ], null, [ 0.125, 1, 1 ] ], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.98, 0.855, 0 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ] ] + ], + YZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matCyanTransparent ), [ 0, 0.85, 0.85 ], null, [ 0.2, 2, 2 ] ], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.855, 0.98 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ] ], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.98, 0.855 ], [ 0, -Math.PI / 2, 0 ], [ 0.125, 1, 1 ] ] + ], + XZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matMagentaTransparent ), [ 0.85, 0, 0.85 ], null, [ 2, 0.2, 2 ] ], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.855, 0, 0.98 ], null, [ 0.125, 1, 1 ] ], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.98, 0, 0.855 ], [ 0, -Math.PI / 2, 0 ], [ 0.125, 1, 1 ] ] + ], + XYZX: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125 ), matWhiteTransperent ), [ 1.1, 0, 0 ] ], + ], + XYZY: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125 ), matWhiteTransperent ), [ 0, 1.1, 0 ] ], + ], + XYZZ: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125 ), matWhiteTransperent ), [ 0, 0, 1.1 ] ], + ] + }; + + var pickerScale = { + X: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 0.8, 4, 1, false ), matInvisible ), [ 0.5, 0, 0 ], [ 0, 0, -Math.PI / 2 ] ] + ], + Y: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 0.8, 4, 1, false ), matInvisible ), [ 0, 0.5, 0 ] ] + ], + Z: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 0.8, 4, 1, false ), matInvisible ), [ 0, 0, 0.5 ], [ Math.PI / 2, 0, 0 ] ] + ], + XY: [ + [ new THREE.Mesh( scaleHandleGeometry, matInvisible ), [ 0.85, 0.85, 0 ], null, [ 3, 3, 0.2 ] ], + ], + YZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matInvisible ), [ 0, 0.85, 0.85 ], null, [ 0.2, 3, 3 ] ], + ], + XZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matInvisible ), [ 0.85, 0, 0.85 ], null, [ 3, 0.2, 3 ] ], + ], + XYZX: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 1.1, 0, 0 ] ], + ], + XYZY: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 0, 1.1, 0 ] ], + ], + XYZZ: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 0, 0, 1.1 ] ], + ] + }; + + var helperScale = { + X: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ -1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] + ], + Y: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, -1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ] + ], + Z: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, 0, -1e3 ], [ 0, -Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ] + ] + }; + + // Creates an Object3D with gizmos described in custom hierarchy definition. + + var setupGizmo = function( gizmoMap ) { + + var gizmo = new THREE.Object3D(); + + for ( var name in gizmoMap ) { + + for ( var i = gizmoMap[ name ].length; i --; ) { + + var object = gizmoMap[ name ][ i ][ 0 ].clone(); + var position = gizmoMap[ name ][ i ][ 1 ]; + var rotation = gizmoMap[ name ][ i ][ 2 ]; + var scale = gizmoMap[ name ][ i ][ 3 ]; + var tag = gizmoMap[ name ][ i ][ 4 ]; + + // name and tag properties are essential for picking and updating logic. + object.name = name; + object.tag = tag; + + if (position) { + object.position.set(position[ 0 ], position[ 1 ], position[ 2 ]); + } + if (rotation) { + object.rotation.set(rotation[ 0 ], rotation[ 1 ], rotation[ 2 ]); + } + if (scale) { + object.scale.set(scale[ 0 ], scale[ 1 ], scale[ 2 ]); + } + + object.updateMatrix(); + + var tempGeometry = object.geometry.clone(); + tempGeometry.applyMatrix(object.matrix); + object.geometry = tempGeometry; + + object.position.set( 0, 0, 0 ); + object.rotation.set( 0, 0, 0 ); + object.scale.set(1, 1, 1); + + gizmo.add(object); + + } + + } + + return gizmo; + + }; + + // Reusable utility variables + + var tempVector = new THREE.Vector3( 0, 0, 0 ); + var tempEuler = new THREE.Euler(); + var alignVector = new THREE.Vector3( 0, 1, 0 ); + var zeroVector = new THREE.Vector3( 0, 0, 0 ); + var lookAtMatrix = new THREE.Matrix4(); + var tempQuaternion = new THREE.Quaternion(); + var tempQuaternion2 = new THREE.Quaternion(); + var identityQuaternion = new THREE.Quaternion(); + + var unitX = new THREE.Vector3( 1, 0, 0 ); + var unitY = new THREE.Vector3( 0, 1, 0 ); + var unitZ = new THREE.Vector3( 0, 0, 1 ); + + // Gizmo creation + + this.gizmo = {}; + this.picker = {}; + this.helper = {}; + + this.add( this.gizmo[ "translate" ] = setupGizmo( gizmoTranslate ) ); + this.add( this.gizmo[ "rotate" ] = setupGizmo( gizmoRotate ) ); + this.add( this.gizmo[ "scale" ] = setupGizmo( gizmoScale ) ); + this.add( this.picker[ "translate" ] = setupGizmo( pickerTranslate ) ); + this.add( this.picker[ "rotate" ] = setupGizmo( pickerRotate ) ); + this.add( this.picker[ "scale" ] = setupGizmo( pickerScale ) ); + this.add( this.helper[ "translate" ] = setupGizmo( helperTranslate ) ); + this.add( this.helper[ "rotate" ] = setupGizmo( helperRotate ) ); + this.add( this.helper[ "scale" ] = setupGizmo( helperScale ) ); + + // Pickers should be hidden always + + this.picker[ "translate" ].visible = false; + this.picker[ "rotate" ].visible = false; + this.picker[ "scale" ].visible = false; + + // updateMatrixWorld will update transformations and appearance of individual handles + + this.updateMatrixWorld = function () { + + var space = this.space; + + if ( this.mode === 'scale' ) space = 'local'; // scale always oriented to local rotation + + var quaternion = space === "local" ? this.worldQuaternion : identityQuaternion; + + // Show only gizmos for current transform mode + + this.gizmo[ "translate" ].visible = this.mode === "translate"; + this.gizmo[ "rotate" ].visible = this.mode === "rotate"; + this.gizmo[ "scale" ].visible = this.mode === "scale"; + + this.helper[ "translate" ].visible = this.mode === "translate"; + this.helper[ "rotate" ].visible = this.mode === "rotate"; + this.helper[ "scale" ].visible = this.mode === "scale"; + + + var handles = []; + handles = handles.concat( this.picker[ this.mode ].children ); + handles = handles.concat( this.gizmo[ this.mode ].children ); + handles = handles.concat( this.helper[ this.mode ].children ); + + for ( var i = 0; i < handles.length; i++ ) { + + var handle = handles[i]; + + // hide aligned to camera + + handle.visible = true; + handle.rotation.set( 0, 0, 0 ); + handle.position.copy( this.worldPosition ); + + var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition); + handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 ); + + // TODO: simplify helpers and consider decoupling from gizmo + + if ( handle.tag === 'helper' ) { + + handle.visible = false; + + if ( handle.name === 'AXIS' ) { + + handle.position.copy( this.worldPositionStart ); + handle.visible = !!this.axis; + + if ( this.axis === 'X' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, 0, 0 ) ); + handle.quaternion.copy( quaternion ).multiply( tempQuaternion ); + + if ( Math.abs( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { + handle.visible = false; + } + + } + + if ( this.axis === 'Y' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, 0, Math.PI / 2 ) ); + handle.quaternion.copy( quaternion ).multiply( tempQuaternion ); + + if ( Math.abs( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { + handle.visible = false; + } + + } + + if ( this.axis === 'Z' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, Math.PI / 2, 0 ) ); + handle.quaternion.copy( quaternion ).multiply( tempQuaternion ); + + if ( Math.abs( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { + handle.visible = false; + } + + } + + if ( this.axis === 'XYZE' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, Math.PI / 2, 0 ) ); + alignVector.copy( this.rotationAxis ); + handle.quaternion.setFromRotationMatrix( lookAtMatrix.lookAt( zeroVector, alignVector, unitY ) ); + handle.quaternion.multiply( tempQuaternion ); + handle.visible = this.dragging; + + } + + if ( this.axis === 'E' ) { + + handle.visible = false; + + } + + + } else if ( handle.name === 'START' ) { + + handle.position.copy( this.worldPositionStart ); + handle.visible = this.dragging; + + } else if ( handle.name === 'END' ) { + + handle.position.copy( this.worldPosition ); + handle.visible = this.dragging; + + } else if ( handle.name === 'DELTA' ) { + + handle.position.copy( this.worldPositionStart ); + handle.quaternion.copy( this.worldQuaternionStart ); + tempVector.set( 1e-10, 1e-10, 1e-10 ).add( this.worldPositionStart ).sub( this.worldPosition ).multiplyScalar( -1 ); + tempVector.applyQuaternion( this.worldQuaternionStart.clone().inverse() ); + handle.scale.copy( tempVector ); + handle.visible = this.dragging; + + } else { + + handle.quaternion.copy( quaternion ); + + if ( this.dragging ) { + + handle.position.copy( this.worldPositionStart ); + + } else { + + handle.position.copy( this.worldPosition ); + + } + + if ( this.axis ) { + + handle.visible = this.axis.search( handle.name ) !== -1; + + } + + } + + // If updating helper, skip rest of the loop + continue; + + } + + // Align handles to current local or world rotation + + handle.quaternion.copy( quaternion ); + + if ( this.mode === 'translate' || this.mode === 'scale' ) { + + // Hide translate and scale axis facing the camera + + var AXIS_HIDE_TRESHOLD = 0.99; + var PLANE_HIDE_TRESHOLD = 0.2; + var AXIS_FLIP_TRESHOLD = -0.4; + + + if ( handle.name === 'X' || handle.name === 'XYZX' ) { + if ( Math.abs( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) { + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + } + } + if ( handle.name === 'Y' || handle.name === 'XYZY' ) { + if ( Math.abs( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) { + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + } + } + if ( handle.name === 'Z' || handle.name === 'XYZZ' ) { + if ( Math.abs( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) { + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + } + } + if ( handle.name === 'XY' ) { + if ( Math.abs( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) { + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + } + } + if ( handle.name === 'YZ' ) { + if ( Math.abs( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) { + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + } + } + if ( handle.name === 'XZ' ) { + if ( Math.abs( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) { + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + } + } + + // Flip translate and scale axis ocluded behind another axis + + if ( handle.name.search( 'X' ) !== -1 ) { + if ( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) < AXIS_FLIP_TRESHOLD ) { + if ( handle.tag === 'fwd' ) { + handle.visible = false; + } else { + handle.scale.x *= -1; + } + } else if ( handle.tag === 'bwd' ) { + handle.visible = false; + } + } + + if ( handle.name.search( 'Y' ) !== -1 ) { + if ( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) < AXIS_FLIP_TRESHOLD ) { + if ( handle.tag === 'fwd' ) { + handle.visible = false; + } else { + handle.scale.y *= -1; + } + } else if ( handle.tag === 'bwd' ) { + handle.visible = false; + } + } + + if ( handle.name.search( 'Z' ) !== -1 ) { + if ( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) < AXIS_FLIP_TRESHOLD ) { + if ( handle.tag === 'fwd' ) { + handle.visible = false; + } else { + handle.scale.z *= -1; + } + } else if ( handle.tag === 'bwd' ) { + handle.visible = false; + } + } + + } else if ( this.mode === 'rotate' ) { + + // Align handles to current local or world rotation + + tempQuaternion2.copy( quaternion ); + alignVector.copy( this.eye ).applyQuaternion( tempQuaternion.copy( quaternion ).inverse() ); + + if ( handle.name.search( "E" ) !== - 1 ) { + + handle.quaternion.setFromRotationMatrix( lookAtMatrix.lookAt( this.eye, zeroVector, unitY ) ); + + } + + if ( handle.name === 'X' ) { + + tempQuaternion.setFromAxisAngle( unitX, Math.atan2( -alignVector.y, alignVector.z ) ); + tempQuaternion.multiplyQuaternions( tempQuaternion2, tempQuaternion ); + handle.quaternion.copy( tempQuaternion ); + + } + + if ( handle.name === 'Y' ) { + + tempQuaternion.setFromAxisAngle( unitY, Math.atan2( alignVector.x, alignVector.z ) ); + tempQuaternion.multiplyQuaternions( tempQuaternion2, tempQuaternion ); + handle.quaternion.copy( tempQuaternion ); + + } + + if ( handle.name === 'Z' ) { + + tempQuaternion.setFromAxisAngle( unitZ, Math.atan2( alignVector.y, alignVector.x ) ); + tempQuaternion.multiplyQuaternions( tempQuaternion2, tempQuaternion ); + handle.quaternion.copy( tempQuaternion ); + + } + + } + + // Hide disabled axes + handle.visible = handle.visible && ( handle.name.indexOf( "X" ) === -1 || this.showX ); + handle.visible = handle.visible && ( handle.name.indexOf( "Y" ) === -1 || this.showY ); + handle.visible = handle.visible && ( handle.name.indexOf( "Z" ) === -1 || this.showZ ); + handle.visible = handle.visible && ( handle.name.indexOf( "E" ) === -1 || ( this.showX && this.showY && this.showZ ) ); + + // highlight selected axis + + handle.material._opacity = handle.material._opacity || handle.material.opacity; + handle.material._color = handle.material._color || handle.material.color.clone(); + + handle.material.color.copy( handle.material._color ); + handle.material.opacity = handle.material._opacity; + + if ( !this.enabled ) { + + handle.material.opacity *= 0.5; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } else if ( this.axis ) { + + if ( handle.name === this.axis ) { + + handle.material.opacity = 1.0; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } else if ( this.axis.split('').some( function( a ) { return handle.name === a; } ) ) { + + handle.material.opacity = 1.0; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } else { + + handle.material.opacity *= 0.25; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } + + } + + } + + THREE.Object3D.prototype.updateMatrixWorld.call( this ); + + }; + +}; + +THREE.TransformControlsGizmo.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), { + + constructor: THREE.TransformControlsGizmo, + + isTransformControlsGizmo: true + +} ); + + +THREE.TransformControlsPlane = function () { + + 'use strict'; + + THREE.Mesh.call( this, + new THREE.PlaneBufferGeometry( 100000, 100000, 2, 2 ), + new THREE.MeshBasicMaterial( { visible: false, wireframe: true, side: THREE.DoubleSide, transparent: true, opacity: 0.1 } ) + ); + + this.type = 'TransformControlsPlane'; + + var unitX = new THREE.Vector3( 1, 0, 0 ); + var unitY = new THREE.Vector3( 0, 1, 0 ); + var unitZ = new THREE.Vector3( 0, 0, 1 ); + + var tempVector = new THREE.Vector3(); + var dirVector = new THREE.Vector3(); + var alignVector = new THREE.Vector3(); + var tempMatrix = new THREE.Matrix4(); + var identityQuaternion = new THREE.Quaternion(); + + this.updateMatrixWorld = function() { + + var space = this.space; + + this.position.copy( this.worldPosition ); + + if ( this.mode === 'scale' ) space = 'local'; // scale always oriented to local rotation + + unitX.set( 1, 0, 0 ).applyQuaternion( space === "local" ? this.worldQuaternion : identityQuaternion ); + unitY.set( 0, 1, 0 ).applyQuaternion( space === "local" ? this.worldQuaternion : identityQuaternion ); + unitZ.set( 0, 0, 1 ).applyQuaternion( space === "local" ? this.worldQuaternion : identityQuaternion ); + + // Align the plane for current transform mode, axis and space. + + alignVector.copy( unitY ); + + switch ( this.mode ) { + case 'translate': + case 'scale': + switch ( this.axis ) { + case 'X': + alignVector.copy( this.eye ).cross( unitX ); + dirVector.copy( unitX ).cross( alignVector ); + break; + case 'Y': + alignVector.copy( this.eye ).cross( unitY ); + dirVector.copy( unitY ).cross( alignVector ); + break; + case 'Z': + alignVector.copy( this.eye ).cross( unitZ ); + dirVector.copy( unitZ ).cross( alignVector ); + break; + case 'XY': + dirVector.copy( unitZ ); + break; + case 'YZ': + dirVector.copy( unitX ); + break; + case 'XZ': + alignVector.copy( unitZ ); + dirVector.copy( unitY ); + break; + case 'XYZ': + case 'E': + dirVector.set( 0, 0, 0 ); + break; + } + break; + case 'rotate': + default: + // special case for rotate + dirVector.set( 0, 0, 0 ); + } + + if ( dirVector.length() === 0 ) { + + // If in rotate mode, make the plane parallel to camera + this.quaternion.copy( this.cameraQuaternion ); + + } else { + + tempMatrix.lookAt( tempVector.set( 0, 0, 0 ), dirVector, alignVector ); + + this.quaternion.setFromRotationMatrix( tempMatrix ); + + } + + THREE.Object3D.prototype.updateMatrixWorld.call( this ); + + }; + +}; + +THREE.TransformControlsPlane.prototype = Object.assign( Object.create( THREE.Mesh.prototype ), { + + constructor: THREE.TransformControlsPlane, + + isTransformControlsPlane: true + +} ); diff --git a/src/jlmap3d/edit/testmodel/LinkList.js b/src/jlmap3d/edit/testmodel/LinkList.js new file mode 100644 index 000000000..306393f51 --- /dev/null +++ b/src/jlmap3d/edit/testmodel/LinkList.js @@ -0,0 +1,31 @@ + +export function LinkList(data,scene){ + + let groups = new THREE.Group(); + let linklist = []; + for(let i=0;i=3){ + console.log(data.sectionList[i]); + + for(let j=1;jpoint2.y){ + section.rotation.z = rotenum; + }else { + section.rotation.z = -rotenum; + } + section.position.set(posx,1,posy); + group.add(section); + } + + }else{ + //获取区段长度 + let dx = Math.abs(point1.x - point2.x); +       let dy = Math.abs(point1.y - point2.y); +       //let distance = Math.sqrt(Math.pow(dx,2)+Math.pow(dy,2)); + let distance = data.sectionList[i].offsetRight - data.sectionList[i].offsetLeft; + //获取区段中心点坐标 + let posx = (point1.x+point2.x)/2; + let posy = (point1.y+point2.y)/2; + //判断是否道岔 + + //创建模型 + + let sectiongeometry = new THREE.PlaneBufferGeometry( distance, 5, 32 ); + let section = new THREE.Mesh( sectiongeometry, sectionmaterial ); + section.name = data.sectionList[i].code; + + section.rotation.x = -Math.PI/2; + + + //判断方向 PS:方法待提炼 + let axix = new THREE.Vector3(1,0,0); + let axixnow = new THREE.Vector3(point2.x-point1.x,0,point2.y-point1.y); + let rotenum = axixnow.angleTo(axix); + //不同坐标系方向值不同 + if(point1.y>point2.y){ + section.rotation.z = rotenum; + }else { + section.rotation.z = -rotenum; + } + section.position.set(posx,1,posy); + group.add(section); + + + } + } + + } + + + //定义区分道岔组 + let switchlist = []; + //遍历道岔数据 + for(let i=0;i { + ModelLoad(data,scope,netdata.data,mapdata,camera,controls3,scene); + }); + + //let stats = new Stats(); + //dom.appendChild( stats.dom ); + //开启渲染 + animate(); + startWorker(); + //动画时间 + let delta; + //循环渲染函数 + function animate() { + //循环渲染 + //requestAnimationFrame(animate); + //renderer.setAnimationLoop(animate); + requestAnimationFrame(animate); + //判断渲染是否开启 + if(scope.animateswitch == true){ + //根据相机渲染场景 + renderer.render(scene,camera2); + //updatcontrols(); + controls3.update(); + //检测动画构造器播放动画 + + } + + } + + function updatcontrols(){ + if(drivingcode){ + controls3.getObject().position.x = mapdata.trainlisttest.list[drivingcode].matrixWorld.elements[12]-27; + controls3.getObject().position.y=10; + controls3.getObject().position.z = mapdata.trainlisttest.list[drivingcode].children[0].matrixWorld.elements[14]; + + } + } + + function startWorker(){ + + if(typeof(Worker)!=="undefined"){ + + + scope.webwork.onmessage = function (event) { + //更新列车位置 + // stats.update(); + UpdateTrain(camera,mapdata.trainlisttest); + delta = clock.getDelta(); + for(let i=scope.mixers.length-1;i>=0;i--){ + if ( scope.mixers[i] ){ + scope.mixers[i].update( delta ); + } + } + + }; + } + + } + this.updatenowspeed = function(speed){ + scope.nowspeed = speed; + } + this.updatenowlen = function(maLen){ + scope.nowmxlen = maLen; + } + this.updateatpspeed = function(atpspeed){ + scope.atpspeed = atpspeed; + } + this.updateatospeed = function(atospeed){ + scope.atospeed = atospeed; + } + this.updatetrainnum = function(trainnum){ + scope.trainnum = trainnum; + } + this.updatestoptime = function(stime){ + scope.stime = stime; + } + + this.updatedrivingcode = function(code){ + drivingcode = code; + mapdata.trainlisttest.list[drivingcode].children[0].add(controls3.getObject()); + mapdata.trainlisttest.list[drivingcode].children[0].add(scope.assetloader.modellist[4].mesh); + controls3.getObject().position.x = 40; + controls3.getObject().position.y= 12.5; + controls3.getObject().rotation.y = -Math.PI/2; + scope.assetloader.modellist[4].mesh.position.x = 34; + scope.assetloader.modellist[4].mesh.position.y = 0; + } + + this.dispose = function(){ + renderer.setAnimationLoop(null); + renderer.dispose(); + scene.dispose(); + // controls.dispose(); + camera = null; + scope.assetloader = null; + + mapdata = null; + scope.selectmodel = null; + + scope.materiallist = null; + scope.selectmodel = null; + scope.helpbox = null; + scope.mixers = null; + scope.actions = null; + scope.Subscribe = null; + //console.log(scope); + //scope = null; + } + + this.rayswitch = function(value){ + this.raycasterswitch = value; + if(scope.helpbox){ + scene.remove( scope.helpbox ); + scope.helpbox = null; + } + }; + + this.showstationmsg = function(showtype){ + if(showtype == "show"){ + for(let st=0;st0){ + jlmap3d.updatenowspeed(data.body[tl].v); + }else{ + jlmap3d.updatenowspeed(Math.abs(data.body[tl].v)); + } + + if(data.body[tl].atpv){ + jlmap3d.updateatpspeed(data.body[tl].atpv); + }else{ + jlmap3d.updateatpspeed(-1); + } + if(data.body[tl].atov){ + jlmap3d.updateatospeed(data.body[tl].atov); + }else{ + jlmap3d.updateatospeed(-1); + } + } + } + } + } + + if(data.type == "SJL3D_TrainStatus"){ + for(let i=data.body.length-1;i>=0;i--){ + if(data.body[i]._type == "Train"){ + //遍历列车对象组 + if(trainlisttest){ + code = data.body[i].code; + //剔除不显示的车 + //找到对应列车 + + if( trainlisttest.list[code]){ + if(code == drivingcode){ + driverswitch = data.body[i].runMode; + jlmap3d.updatetrainnum(data.body[i].groupNumber); + // console.log(trainlisttest.list[code].progress); + let syncdata = { + type:"Train", + code:code, + sectionCode:data.body[i].sectionCode, + percent:0, + }; + + if(trainlisttest.list[code].isStandTrack == true && trainlisttest.list[code].progress>0.95 && trainlisttest.list[code].speed<=0){ + if(data.body[i].directionType == "02"){ + syncdata.percent = 1-(sectionlist.sections.datalist[data.body[i].sectionCode].rstop/trainlisttest.list[code].len); + }else{ + syncdata.percent = sectionlist.sections.datalist[data.body[i].sectionCode].lstop/trainlisttest.list[code].len; + } + scope.teststomp.send("/app/topic/simulation/wgu3d",syncdata); + }else{ + if(data.body[i].directionType == "02"){ + syncdata.percent = trainlisttest.list[code].progress; + }else{ + syncdata.percent = 1 - trainlisttest.list[code].progress; + } + scope.teststomp.send("/app/topic/simulation/wgu3d",syncdata); + } + + if(data.body[i].parkRemainTime>0){ + jlmap3d.updatestoptime("停站时间:"+parseInt(data.body[i].parkRemainTime)); + }else{ + if(data.body[i].runMode == "02"){ + jlmap3d.updatestoptime("列车自动驾驶中"); + }else{ + if(trainlisttest.list[code].isStandTrack == true && trainlisttest.list[code].progress>0.95 && trainlisttest.list[code].speed<=0){ + // if(stoptimer){ + // + // }else{ + // stoptimer = setInterval(function(){ + // if(num >=0){ + // jlmap3d.updatestoptime("停站时间:"+num); + // num --; + // } + // },1000); + // } + + }else{ + jlmap3d.updatestoptime("列车人工驾驶中"); + } + + } + } + // if(trainlisttest.list[code].speed > 0){ + // if(stoptimer){ + // clearInterval( stoptimer ); + // stoptimer = null; + // num = 30; + // } + // } + + } + trainlisttest.list[code].runMode = data.body[i].runMode; + //车门开关验证 + if(data.body[i].directionType == "02"){ + if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "01"){ + //console.log("close"); + trainlisttest.list[code].doorStatus = "01"; + for(let an=actions[code].top.length-1;an>=0;an--){ + actions[code].top[an].reset(); + actions[code].top[an].time = actions[code].top[an]._clip.duration; + actions[code].top[an].timeScale = -1; + actions[code].top[an].play(); + } + }else if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "02"){ + //console.log("open"); + trainlisttest.list[code].doorStatus = "02"; + for(let an=actions[code].top.length-1;an>=0;an--){ + actions[code].top[an].reset(); + actions[code].top[an].time = 0; + actions[code].top[an].timeScale = 1; + actions[code].top[an].play(); + } + } + }else{ + if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "01"){ + //console.log("close"); + trainlisttest.list[code].doorStatus = "01"; + for(let an=actions[code].down.length-1;an>=0;an--){ + actions[code].down[an].reset(); + actions[code].down[an].time = actions[code].top[an]._clip.duration; + actions[code].down[an].timeScale = -1; + actions[code].down[an].play(); + } + }else if(trainlisttest.list[code].doorStatus != data.body[i].doorStatus && data.body[i].doorStatus == "02"){ + //console.log("open"); + trainlisttest.list[code].doorStatus = "02"; + for(let an=actions[code].down.length-1;an>=0;an--){ + actions[code].down[an].reset(); + actions[code].down[an].time = 0; + actions[code].down[an].timeScale = 1; + actions[code].down[an].play(); + } + } + } + //遍历获取所在轨道 + + if(trainlisttest.list[code].dispose != data.body[i].dispose && data.body[i].dispose == false){ + + if(sectionlist.sections.datalist[data.body[i].sectionCode].code){ + trainlisttest.group.add(trainlisttest.list[code]); + trainlisttest.list[code].position.y = 0; + trainlisttest.list[code].progress = 0; + trainlisttest.list[code].oldoffset = data.body[i].sectionOffsetPercent; + trainlisttest.list[code].dispose = false; + trainlisttest.list[code].nowcode = data.body[i].sectionCode; + trainlisttest.list[code].nextcode = data.body[i].nextSectionCode; + let vexlist = []; + let endrotation = null; + + if(data.body[i].directionType == "02"){//向右 + let offset = null; + let rotaposx = null; + + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x+offset*data.body[i].sectionOffsetPercent; + }else{ + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x+offset*data.body[i].sectionOffsetPercent; + } + + let rotaposz = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].z; + trainlisttest.list[code].rotation.y = 0; + trainlisttest.list[code].position.x = rotaposx; + trainlisttest.list[code].position.y = 0; + for(let tl=0;tl<6;tl++){ + trainlisttest.list[code].children[tl].position.z = rotaposz; + } + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + vexlist.push(new THREE.Vector3(rotaposx,0,rotaposz)); + for(let m=sectionlist.sections.datalist[data.body[i].sectionCode].rail.length-1;m>=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x>rotaposx){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + + } + }else{ + vexlist.push(new THREE.Vector3(rotaposx,0,rotaposz)); + for(let m=0;mrotaposx){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + trainlisttest.list[code].status = "02"; + + }else if(data.body[i].directionType == "03"){//向左 + + trainlisttest.list[code].dispose = false; + trainlisttest.group.add(trainlisttest.list[code]); + let offset = null; + let rotaposx = null; + + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x+offset*data.body[i].sectionOffsetPercent; + }else{ + + offset = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x-sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x; + rotaposx = sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x+offset*data.body[i].sectionOffsetPercent; + } + let rotaposz = sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].z; + trainlisttest.list[code].rotation.y = Math.PI; + trainlisttest.list[code].position.x = rotaposx; + trainlisttest.list[code].position.y = 0; + for(let tl=0;tl<6;tl++){ + trainlisttest.list[code].children[tl].position.z = rotaposz; + } + if(data.body[i].groupNumber == "001"){ + } + + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].xsectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x,0,trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for(let m=sectionlist.sections.datalist[data.body[i].sectionCode].rail.length-1;m>=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x>trainlisttest.list[code].position.x){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + }else{ + vexlist.push(new THREE.Vector3(trainlisttest.list[code].position.x,0,trainlisttest.list[code].children[0].matrixWorld.elements[14])); + for(let m=0;mtrainlisttest.list[code].position.x){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + } + } + }else{ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[0].x>sectionlist.sections.datalist[data.body[i].sectionCode].rail[1].x){ + for(let m=sectionlist.sections.datalist[data.body[i].sectionCode].rail.length-1;m>=0;m--){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + }else{ + for(let m=0;m=0;m--){ + if(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m].x=0;m--){ + vexlist.push(sectionlist.sections.datalist[data.body[i].sectionCode].rail[m]); + } + + }else{ + for(let m=0;m=0;i--){ + //0xFFFFFF + //0xCD0000 红 + //0xEEEE00 黄 + //0x32CD32 绿 + if(data.body[i]._type == "Signal"){ + if(signallist){ + signalupdate(data.body[i]); + } + } + + if(data.body[i]._type == "StationStand"){ + if(actions){ + standupdate(data.body[i]); + } + } + + if(data.body[i]._type == "Switch"){ + if(sectionlist){ + switchupdate(data.body[i]); + } + } + + } + } + } + + function standupdate(data){ + code = data.code; + if( actions[code]){ + if(data.screenDoorOpenStatus == "02" && actions[code].status == "01"){ + actions[code].status = "00"; + } + if(data.screenDoorOpenStatus == "02" && actions[code].status == "00"){ + actions[code].status = "02"; + actions[code].action.reset(); + actions[code].action.time = 0; + actions[code].action.timeScale = 1; + actions[code].action.play(); + } + + if(data.screenDoorOpenStatus == "01" && actions[code].status == "02"){ + actions[code].status = "00"; + } + if(data.screenDoorOpenStatus == "01" && actions[code].status == "00"){ + actions[code].status = "01"; + actions[code].action.reset(); + actions[code].action.time = actions[code].action._clip.duration; + actions[code].action.timeScale = -1; + actions[code].action.play(); + } + } + + + } + + function signalupdate(data){ + code = data.code; + if(data.lightType == "01"){ + if(signallist.list[code].mesh.code){ + signallist.list[code].mesh.status = data.status; + + //55 + //33 + //77 + //关闭 + if(data.status == "01"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[0]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //开放 + if(data.status == "02"){ + + if(data.switchLocateType == "01"){ + signallist.list[code].mesh.children[0].material.map = materials[2]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + if(data.switchLocateType == "02"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[1]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + //引导 + if(data.status == "03"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[0]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[1]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //封锁 + if(data.status == "04"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + //故障 + if(data.status == "05"){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + + }else if(data.lightType == "01"){ + if(signallist.list[code].mesh.code){ + signallist.list[code].mesh.children[0].material.map = materials[3]; + signallist.list[code].mesh.children[0].material.map.needsUpdate = true; + signallist.list[code].mesh.children[1].material.map = materials[3]; + signallist.list[code].mesh.children[1].material.map.needsUpdate = true; + signallist.list[code].mesh.children[2].material.map = materials[3]; + signallist.list[code].mesh.children[2].material.map.needsUpdate = true; + + } + + } + + } + + function switchupdate(data){ + code = data.code; + for(let j=sectionlist.switchs.modellist.length-1;j>=0;j--){ + if(sectionlist.switchs.modellist[j].code == code){ + if(sectionlist.switchs.modellist[j].locateType != data.locateType){ + if(data.locateType == "02"){ + if(actions[sectionlist.switchs.modellist[j].code]){ + sectionlist.switchs.modellist[j].locateType = data.locateType; + actions[sectionlist.switchs.modellist[j].code].reset(); + actions[sectionlist.switchs.modellist[j].code].time = 0; + actions[sectionlist.switchs.modellist[j].code].timeScale = 1; + actions[sectionlist.switchs.modellist[j].code].play(); + } + }else if(data.locateType == "01"){ + if(actions[sectionlist.switchs.modellist[j].code]){ + sectionlist.switchs.modellist[j].locateType = data.locateType; + actions[sectionlist.switchs.modellist[j].code].reset(); + actions[sectionlist.switchs.modellist[j].code].time = actions[sectionlist.switchs.modellist[j].code]._clip.duration; + actions[sectionlist.switchs.modellist[j].code].timeScale = -1; + actions[sectionlist.switchs.modellist[j].code].play(); + } + } + } + j = 0; + } + } + } + + +} diff --git a/src/jlmap3d/jl3dsimulation/moveupdate/UpdateTrain.js b/src/jlmap3d/jl3dsimulation/moveupdate/UpdateTrain.js new file mode 100644 index 000000000..5e6d272a6 --- /dev/null +++ b/src/jlmap3d/jl3dsimulation/moveupdate/UpdateTrain.js @@ -0,0 +1,275 @@ + +export function UpdateTrain(camera,traindata,control){ + if(traindata != undefined ){ + + for(let j=traindata.group.children.length-1;j>=0;j--){ + //判断是否有移动事件 + if(traindata.group.children[j].dispose == false){ + + if(traindata.group.children[j].progress != null){ + + let trainmodel = traindata.group.children[j]; + if(trainmodel.speeds > 0 && trainmodel.speeds){ + let speed = null; + if(traindata.group.children[j].progress<1){ + + let movecurve = trainmodel.curve; + + if(trainmodel.status == "03"){ + if(movecurve.points.length>1){ + let point = movecurve.getPointAt(traindata.group.children[j].progress); + if(Math.abs( point.z -trainmodel.children[0].matrixWorld.elements[14]) >0.1){ + trainmodel.children[0].up = new THREE.Vector3(-1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y + } + trainmodel.children[1].rotalist.push(rotas); + + let offsetz = parseFloat(trainmodel.children[0].matrixWorld.elements[14]) - parseFloat(point.z); + trainmodel.children[0].position.z += offsetz; + //trainmodel.position.z = point.z; + } + + trainmodel.position.x = point.x; + trainmodel.position.y = 0; + + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + for(let rs = 1;rs<6;rs++){ + //console.log(rs); + if(trainmodel.children[rs].rotalist[0]){ + let offsetz = parseFloat(trainmodel.children[rs].matrixWorld.elements[14]) - parseFloat(trainmodel.children[rs].rotalist[0].posr.z); + + trainmodel.children[rs].position.z += offsetz; + + for(let xh=0;xh1){ + let point = movecurve.getPointAt(trainmodel.progress); + if(Math.abs( point.z -trainmodel.children[0].matrixWorld.elements[14]) >0.1){ + trainmodel.children[0].up = new THREE.Vector3(1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y + } + trainmodel.children[1].rotalist.push(rotas); + let offsetz = parseFloat(point.z) - parseFloat(trainmodel.children[0].matrixWorld.elements[14]); + trainmodel.children[0].position.z += offsetz; + //trainmodel.position.z = point.z; + } + + trainmodel.position.x = point.x; + trainmodel.position.y = 0; + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + + for(let rs = 1;rs<6;rs++){ + //console.log(rs); + if(trainmodel.children[rs].rotalist[0]){ + + let offsetz = parseFloat(trainmodel.children[rs].rotalist[0].posr.z) - parseFloat(trainmodel.children[rs].matrixWorld.elements[14]); + trainmodel.children[rs].position.z += offsetz; + + for(let xh=0;xh=trainmodel.children[rs].rotalist[0].posr.x){ + + if(rs != 5){ + let asd = trainmodel.children[rs].rotalist[0]; + trainmodel.children[rs+1].rotalist.push(asd); + + } + //let offsetx = trainmodel.children[1].matrixWorld.elements[12]-trainmodel.children[0].children[3].matrixWorld.elements[12]; + + trainmodel.children[rs].rotation.y = trainmodel.children[rs].rotalist[0].rota; + trainmodel.children[rs].rotalist.splice(0,1) + xh--; + }else{ + xh = trainmodel.children[rs].rotalist.length; + } + } + //console.log(trainmodel.children[rs].rotalist.length); + + } + + + } + // console.log(trainmodel.rotalist); + } + + + trainmodel.progress += trainmodel.speeds; + } + } + + } + + }else if(trainmodel.speeds < 0 && trainmodel.speeds){ + let speed = null; + if(traindata.group.children[j].progress<1){ + + let movecurve = trainmodel.curve; + + if(trainmodel.status == "03" && trainmodel.progress>0){ + if(movecurve.points.length>1){ + let point = movecurve.getPointAt(traindata.group.children[j].progress); + if(Math.abs( point.z -trainmodel.children[0].matrixWorld.elements[14]) >0.1){ + trainmodel.children[0].up = new THREE.Vector3(-1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y + } + trainmodel.children[1].rotalist.push(rotas); + + let offsetz = parseFloat(trainmodel.children[0].matrixWorld.elements[14]) - parseFloat(point.z); + trainmodel.children[0].position.z += offsetz; + //trainmodel.position.z = point.z; + } + + trainmodel.position.x = point.x; + trainmodel.position.y = 0; + + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + for(let rs = 1;rs<6;rs++){ + //console.log(rs); + if(trainmodel.children[rs].rotalist[0]){ + let offsetz = parseFloat(trainmodel.children[rs].matrixWorld.elements[14]) - parseFloat(trainmodel.children[rs].rotalist[0].posr.z); + + trainmodel.children[rs].position.z += offsetz; + + for(let xh=0;xh -(trainmodel.speeds)){ + trainmodel.progress += trainmodel.speeds; + } + + } + } + + if(trainmodel.status == "02"){ + if(movecurve.points.length>1 && trainmodel.progress>0){ + + let point = movecurve.getPointAt(trainmodel.progress); + if(Math.abs( point.z -trainmodel.children[0].matrixWorld.elements[14]) >0.1){ + trainmodel.children[0].up = new THREE.Vector3(1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y + } + trainmodel.children[1].rotalist.push(rotas); + let offsetz = parseFloat(point.z) - parseFloat(trainmodel.children[0].matrixWorld.elements[14]); + trainmodel.children[0].position.z += offsetz; + //trainmodel.position.z = point.z; + } + + trainmodel.position.x = point.x; + trainmodel.position.y = 0; + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + + for(let rs = 1;rs<6;rs++){ + //console.log(rs); + if(trainmodel.children[rs].rotalist[0]){ + + let offsetz = parseFloat(trainmodel.children[rs].rotalist[0].posr.z) - parseFloat(trainmodel.children[rs].matrixWorld.elements[14]); + trainmodel.children[rs].position.z += offsetz; + + for(let xh=0;xh=trainmodel.children[rs].rotalist[0].posr.x){ + + if(rs != 5){ + let asd = trainmodel.children[rs].rotalist[0]; + trainmodel.children[rs+1].rotalist.push(asd); + + } + //let offsetx = trainmodel.children[1].matrixWorld.elements[12]-trainmodel.children[0].children[3].matrixWorld.elements[12]; + + trainmodel.children[rs].rotation.y = trainmodel.children[rs].rotalist[0].rota; + trainmodel.children[rs].rotalist.splice(0,1) + xh--; + }else{ + xh = trainmodel.children[rs].rotalist.length; + } + } + //console.log(trainmodel.children[rs].rotalist.length); + + } + + + } + // console.log(trainmodel.rotalist); + } + + + if(trainmodel.progress > -(trainmodel.speeds)){ + trainmodel.progress += trainmodel.speeds; + } + } + } + + } + } + } + } + + } + + } + +} diff --git a/src/jlmap3d/jl3dsimulation/simulationloader.js b/src/jlmap3d/jl3dsimulation/simulationloader.js new file mode 100644 index 000000000..c7dc41945 --- /dev/null +++ b/src/jlmap3d/jl3dsimulation/simulationloader.js @@ -0,0 +1,193 @@ +//componnent +import {SectionList} from '@/jlmap3d/model/SectionList.js'; +import {SignalList} from '@/jlmap3d/model/SignalList.js'; +import {StationStandList} from '@/jlmap3d/model/StationStandList.js'; +import {TrainList} from '@/jlmap3d/model/TrainList.js'; +import {RealSectionList} from '@/jlmap3d/model/RealSectionList.js'; + +import {Materialload} from '@/jlmap3d/component/Materialload.js'; + +import { Loading } from 'element-ui'; +// import {SwitchModel} from '@/jlmap3d/model/SwitchModel.js'; + +export function ModelLoad(data,scope,netdata,mapdata,camera,controls,scene){ + //console.log(mapdata); + Materialload(scope); + //console.log(data); + //console.log(scope); + let sceneload = scene; + let jlmap3ddata = mapdata; + let assetloader = scope.assetloader; + let animateswitch = scope.animateswitch; + + let mixers = scope.mixers; + let actions = scope.actions; + + let loadingInstance = Loading.service({ fullscreen: true }); + + + let isSection = false; + if(netdata.assets){ + let assetsdata = JSON.parse(netdata.assets); + for(let i=0;i { + ModelLoad(data,scope,netdata.data,mapdata,camera,controls,scene); + + + }); + // + // let stats = new Stats(); + // dom.appendChild( stats.dom ); + //开启渲染 + animate(); + startWorker(); + //动画时间 + let delta; + //循环渲染函数 + function animate() { + //循环渲染 + //requestAnimationFrame(animate); + //renderer.setAnimationLoop(animate); + requestAnimationFrame(animate); + //判断渲染是否开启 + if(scope.animateswitch == true){ + //根据相机渲染场景 + renderer.render(scene,camera); + //检测动画构造器播放动画 + //stats.update(); + } + + } + + function startWorker(){ + + if(typeof(Worker)!=="undefined"){ + + + scope.webwork.onmessage = function (event) { + //更新列车位置 + UpdateTrain(camera,mapdata.trainlisttest); + delta = clock.getDelta(); + for(let i=scope.mixers.length-1;i>=0;i--){ + if ( scope.mixers[i] ){ + scope.mixers[i].update( delta ); + } + } + + }; + } + + } + + this.dispose = function(){ + renderer.setAnimationLoop(null); + renderer.dispose(); + scene.dispose(); + controls.dispose(); + camera = null; + scope.assetloader = null; + + mapdata = null; + scope.selectmodel = null; + + scope.materiallist = null; + scope.selectmodel = null; + scope.helpbox = null; + scope.mixers = null; + scope.actions = null; + scope.Subscribe = null; + //console.log(scope); + //scope = null; + } + + this.rayswitch = function(value){ + this.raycasterswitch = value; + if(scope.helpbox){ + scene.remove( scope.helpbox ); + scope.helpbox = null; + } + }; + + this.showstationmsg = function(showtype){ + if(showtype == "show"){ + for(let st=0;sta&&(a=c[p]),c[p]>=1;x=g<<16|p;for(s=m;s>>=1;switch(c){case 0:var d=this.input,a=this.a,b=this.c,e=this.b,f=d.length,g=l,h=l,k=b.length,m=l;this.d=this.f=0;if(a+1>=f)throw Error("invalid uncompressed block header: LEN");g=d[a++]|d[a++]<<8;if(a+1>=f)throw Error("invalid uncompressed block header: NLEN");h=d[a++]|d[a++]<<8;if(g===~h)throw Error("invalid uncompressed block header: length verify");if(a+g>d.length)throw Error("input buffer is broken");switch(this.i){case A:for(;e+ +g>b.length;){m=k-e;g-=m;if(t)b.set(d.subarray(a,a+m),e),e+=m,a+=m;else for(;m--;)b[e++]=d[a++];this.b=e;b=this.e();e=this.b}break;case y:for(;e+g>b.length;)b=this.e({p:2});break;default:throw Error("invalid inflate mode");}if(t)b.set(d.subarray(a,a+g),e),e+=g,a+=g;else for(;g--;)b[e++]=d[a++];this.a=a;this.b=e;this.c=b;break;case 1:this.j(ba,ca);break;case 2:for(var n=C(this,5)+257,p=C(this,5)+1,s=C(this,4)+4,x=new (t?Uint8Array:Array)(D.length),S=l,T=l,U=l,u=l,M=l,F=l,z=l,q=l,V=l,q=0;q=P?8:255>=P?9:279>=P?7:8;var ba=v(O),Q=new (t?Uint8Array:Array)(30),R,ga;R=0;for(ga=Q.length;R=g)throw Error("input buffer is broken");a|=e[f++]<>>d;c.d=b-d;c.a=f;return h} +function E(c,d){for(var a=c.f,b=c.d,e=c.input,f=c.a,g=e.length,h=d[0],k=d[1],m,n;b=g);)a|=e[f++]<>>16;if(n>b)throw Error("invalid code length: "+n);c.f=a>>n;c.d=b-n;c.a=f;return m&65535} +w.prototype.j=function(c,d){var a=this.c,b=this.b;this.o=c;for(var e=a.length-258,f,g,h,k;256!==(f=E(this,c));)if(256>f)b>=e&&(this.b=b,a=this.e(),b=this.b),a[b++]=f;else{g=f-257;k=I[g];0=e&&(this.b=b,a=this.e(),b=this.b);for(;k--;)a[b]=a[b++-h]}for(;8<=this.d;)this.d-=8,this.a--;this.b=b}; +w.prototype.w=function(c,d){var a=this.c,b=this.b;this.o=c;for(var e=a.length,f,g,h,k;256!==(f=E(this,c));)if(256>f)b>=e&&(a=this.e(),e=a.length),a[b++]=f;else{g=f-257;k=I[g];0e&&(a=this.e(),e=a.length);for(;k--;)a[b]=a[b++-h]}for(;8<=this.d;)this.d-=8,this.a--;this.b=b}; +w.prototype.e=function(){var c=new (t?Uint8Array:Array)(this.b-32768),d=this.b-32768,a,b,e=this.c;if(t)c.set(e.subarray(32768,c.length));else{a=0;for(b=c.length;aa;++a)e[a]=e[d+a];this.b=32768;return e}; +w.prototype.z=function(c){var d,a=this.input.length/this.a+1|0,b,e,f,g=this.input,h=this.c;c&&("number"===typeof c.p&&(a=c.p),"number"===typeof c.u&&(a+=c.u));2>a?(b=(g.length-this.a)/this.o[2],f=258*(b/2)|0,e=fd&&(this.c.length=d),c=this.c);return this.buffer=c};function W(c,d){var a,b;this.input=c;this.a=0;if(d||!(d={}))d.index&&(this.a=d.index),d.verify&&(this.A=d.verify);a=c[this.a++];b=c[this.a++];switch(a&15){case ha:this.method=ha;break;default:throw Error("unsupported compression method");}if(0!==((a<<8)+b)%31)throw Error("invalid fcheck flag:"+((a<<8)+b)%31);if(b&32)throw Error("fdict flag is not supported");this.q=new w(c,{index:this.a,bufferSize:d.bufferSize,bufferType:d.bufferType,resize:d.resize})} +W.prototype.k=function(){var c=this.input,d,a;d=this.q.k();this.a=this.q.a;if(this.A){a=(c[this.a++]<<24|c[this.a++]<<16|c[this.a++]<<8|c[this.a++])>>>0;var b=d;if("string"===typeof b){var e=b.split(""),f,g;f=0;for(g=e.length;f>>0;b=e}for(var h=1,k=0,m=b.length,n,p=0;0>>0)throw Error("invalid adler-32 checksum");}return d};var ha=8;r("Zlib.Inflate",W);r("Zlib.Inflate.prototype.decompress",W.prototype.k);var X={ADAPTIVE:B.s,BLOCK:B.t},Y,Z,$,ia;if(Object.keys)Y=Object.keys(X);else for(Z in Y=[],$=0,X)Y[$++]=Z;$=0;for(ia=Y.length;$e+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}}; +Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f, +v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module; diff --git a/src/jlmap3d/main/loaders/AssetLoader.js b/src/jlmap3d/main/loaders/AssetLoader.js new file mode 100644 index 000000000..d952e6d79 --- /dev/null +++ b/src/jlmap3d/main/loaders/AssetLoader.js @@ -0,0 +1,418 @@ +import { AssetModel } from '@/jlmap3d/main/loaders/model/Assetmodel'; +import { Assetmaterial } from '@/jlmap3d/main/loaders/model/Assetmaterial'; + +import { Loading } from 'element-ui'; + +let defaultsignal = { + id:"3", + name:"低位三灯", + deviceType:"signal", + type:"low", + picUrl:"", + assetUrl:"https://joylink.club/oss/models/signal/d3d.FBX" +} + +let defaulttrain = { + id:"9", + name:"6节列车", + deviceType:"train", + type:"num4", + picUrl:"", + assetUrl:"https://joylink.club/oss/models/train/train.FBX" +} + + +let defaultstation = { + id:"8", + name:"福州车站", + deviceType:"stand", + type:"num4", + picUrl:"", + assetUrl:"https://joylink.club/oss/models/station/fuzhou/fuzhou.FBX" +}//https://joylink.club/oss/models/station/fuzhou/fuzhou.FBX +//../../static/model/station/zhantai715(2).FBX + +let defaultswitch = { + id:"11", + name:"道岔", + deviceType:"switch", + type:"fuzhou", + picUrl:"", + assetUrl:"../../static/model/daocha/daocha.FBX" +} + +let defaultdriver = { + id:"15", + name:"驾驶台", + deviceType:"driver", + type:"driver", + picUrl:"", + assetUrl:"https://joylink.club/oss/models/driver/driver.FBX" +} + +let defaultsuidao = { + id:"16", + name:"suidao", + deviceType:"suidao", + type:"suidao", + picUrl:"", + assetUrl:"https://joylink.club/oss/models/suidao/suidao.FBX" +}//https://joylink.club/oss/models/suidao/suidao.FBX +//../../static/model/ + + + + + +export function AssetLoader(){ + + let scope = this; + + this.name = null; + + this.modellist = []; + + this.materiallist = []; + //初始化资源加载器 + this.setmodellist = function (data){ + + let defaultmodel1 = new AssetModel(defaultsignal); + scope.modellist.push(defaultmodel1); + + let defaultmodel2 = new AssetModel(defaulttrain); + scope.modellist.push(defaultmodel2); + + let defaultmodel3 = new AssetModel(defaultstation); + scope.modellist.push(defaultmodel3); + + let defaultmodel4 = new AssetModel(defaultswitch); + scope.modellist.push(defaultmodel4); + + let driver = new AssetModel(defaultdriver); + scope.modellist.push(driver); + + let suidao = new AssetModel(defaultsuidao); + scope.modellist.push(suidao); + + + let modeldata = JSON.parse(data); + + for(let j=0;j { + ////console.log(result); + resolve("loaderassets"); //['成功了', 'success'] + }).catch((error) => { + //console.log(error); + }); + + }); + } + + this.assetinit = function(scene){ + return new Promise(function(resolve, reject){ + let signal = new AssetModel(defaultsignal); + scope.modellist.push(signal); + + let train = new AssetModel(defaulttrain); + scope.modellist.push(train); + + let station = new AssetModel(defaultstation); + scope.modellist.push(station); + + fbxpromise(signal) + .then(function(data){ + ////console.log(data); + return fbxpromise(train); + }) + .then(function(data){ + ////console.log(data); + return fbxpromise(station); + }) + .then(function(data){ + ////console.log(scope.modellist); + resolve("loaderassets"); + }); + }); + } + + this.loadnewsection = function(newdata,jlmap3dedit){ + let loadingInstance = Loading.service({ fullscreen: true }); + let scene = jlmap3dedit.scene; + let newmodel = new AssetModel(newdata); + let jlmap3ddata = jlmap3dedit.mapdata; + scope.modellist.push(newmodel); + + scene.remove(jlmap3dedit.exportmodel); + var loader = new THREE.FBXLoader(); + loader.load( newdata.assetUrl, function ( object ) { + + let newmesh = object; + + //let mixer = new THREE.AnimationMixer( newmesh ); + ////console.log(jlmap3ddata.sectionlist); + for(let i=0;i0;j--){ + let name = "c"+j; + for(let i=0;i> 8 ) & 0xff, + ( value >> 16 ) & 0xff, + ( value >> 24 ) & 0xff + ); + + } + + function loadARGBMip( buffer, dataOffset, width, height ) { + + var dataLength = width * height * 4; + var srcBuffer = new Uint8Array( buffer, dataOffset, dataLength ); + var byteArray = new Uint8Array( dataLength ); + var dst = 0; + var src = 0; + for ( var y = 0; y < height; y ++ ) { + + for ( var x = 0; x < width; x ++ ) { + + var b = srcBuffer[ src ]; src ++; + var g = srcBuffer[ src ]; src ++; + var r = srcBuffer[ src ]; src ++; + var a = srcBuffer[ src ]; src ++; + byteArray[ dst ] = r; dst ++; //r + byteArray[ dst ] = g; dst ++; //g + byteArray[ dst ] = b; dst ++; //b + byteArray[ dst ] = a; dst ++; //a + + } + + } + return byteArray; + + } + + var FOURCC_DXT1 = fourCCToInt32( "DXT1" ); + var FOURCC_DXT3 = fourCCToInt32( "DXT3" ); + var FOURCC_DXT5 = fourCCToInt32( "DXT5" ); + var FOURCC_ETC1 = fourCCToInt32( "ETC1" ); + + var headerLengthInt = 31; // The header length in 32 bit ints + + // Offsets into the header array + + var off_magic = 0; + + var off_size = 1; + var off_flags = 2; + var off_height = 3; + var off_width = 4; + + var off_mipmapCount = 7; + + var off_pfFlags = 20; + var off_pfFourCC = 21; + var off_RGBBitCount = 22; + var off_RBitMask = 23; + var off_GBitMask = 24; + var off_BBitMask = 25; + var off_ABitMask = 26; + + var off_caps = 27; + var off_caps2 = 28; + var off_caps3 = 29; + var off_caps4 = 30; + + // Parse header + + var header = new Int32Array( buffer, 0, headerLengthInt ); + + if ( header[ off_magic ] !== DDS_MAGIC ) { + + console.error( 'THREE.DDSLoader.parse: Invalid magic number in DDS header.' ); + return dds; + + } + + if ( ! header[ off_pfFlags ] & DDPF_FOURCC ) { + + console.error( 'THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.' ); + return dds; + + } + + var blockBytes; + + var fourCC = header[ off_pfFourCC ]; + + var isRGBAUncompressed = false; + + switch ( fourCC ) { + + case FOURCC_DXT1: + + blockBytes = 8; + dds.format = THREE.RGB_S3TC_DXT1_Format; + break; + + case FOURCC_DXT3: + + blockBytes = 16; + dds.format = THREE.RGBA_S3TC_DXT3_Format; + break; + + case FOURCC_DXT5: + + blockBytes = 16; + dds.format = THREE.RGBA_S3TC_DXT5_Format; + break; + + case FOURCC_ETC1: + + blockBytes = 8; + dds.format = THREE.RGB_ETC1_Format; + break; + + default: + + if ( header[ off_RGBBitCount ] === 32 + && header[ off_RBitMask ] & 0xff0000 + && header[ off_GBitMask ] & 0xff00 + && header[ off_BBitMask ] & 0xff + && header[ off_ABitMask ] & 0xff000000 ) { + + isRGBAUncompressed = true; + blockBytes = 64; + dds.format = THREE.RGBAFormat; + + } else { + + console.error( 'THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC( fourCC ) ); + return dds; + + } + + } + + dds.mipmapCount = 1; + + if ( header[ off_flags ] & DDSD_MIPMAPCOUNT && loadMipmaps !== false ) { + + dds.mipmapCount = Math.max( 1, header[ off_mipmapCount ] ); + + } + + var caps2 = header[ off_caps2 ]; + dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false; + if ( dds.isCubemap && ( + ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEX ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEY ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ ) || + ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ ) + ) ) { + + console.error( 'THREE.DDSLoader.parse: Incomplete cubemap faces' ); + return dds; + + } + + dds.width = header[ off_width ]; + dds.height = header[ off_height ]; + + var dataOffset = header[ off_size ] + 4; + + // Extract mipmaps buffers + + var faces = dds.isCubemap ? 6 : 1; + + for ( var face = 0; face < faces; face ++ ) { + + var width = dds.width; + var height = dds.height; + + for ( var i = 0; i < dds.mipmapCount; i ++ ) { + + if ( isRGBAUncompressed ) { + + var byteArray = loadARGBMip( buffer, dataOffset, width, height ); + var dataLength = byteArray.length; + + } else { + + var dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockBytes; + var byteArray = new Uint8Array( buffer, dataOffset, dataLength ); + + } + + var mipmap = { "data": byteArray, "width": width, "height": height }; + dds.mipmaps.push( mipmap ); + + dataOffset += dataLength; + + width = Math.max( width >> 1, 1 ); + height = Math.max( height >> 1, 1 ); + + } + + } + + return dds; + +}; diff --git a/src/jlmap3d/main/loaders/FBXLoader.js b/src/jlmap3d/main/loaders/FBXLoader.js new file mode 100644 index 000000000..d48df4bcc --- /dev/null +++ b/src/jlmap3d/main/loaders/FBXLoader.js @@ -0,0 +1,4134 @@ + +/** + * @author Kyle-Larson https://github.com/Kyle-Larson + * @author Takahiro https://github.com/takahirox + * @author Lewy Blue https://github.com/looeee + * + * Loader loads FBX file and generates Group representing FBX scene. + * Requires FBX file to be >= 7.0 and in ASCII or >= 6400 in Binary format + * Versions lower than this may load but will probably have errors + * + * Needs Support: + * Morph normals / blend shape normals + * + * FBX format references: + * https://wiki.blender.org/index.php/User:Mont29/Foundation/FBX_File_Structure + * http://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html (C++ SDK reference) + * + * Binary format specification: + * https://code.blender.org/2013/08/fbx-binary-file-format-specification/ + */ + + +THREE.FBXLoader = ( function () { + + var fbxTree; + var connections; + var sceneGraph; + + function FBXLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + + } + + FBXLoader.prototype = { + + constructor: FBXLoader, + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var self = this; + + var path = ( self.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : self.path; + + var loader = new THREE.FileLoader( this.manager ); + loader.setPath( self.path ); + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( buffer ) { + + try { + + onLoad( self.parse( buffer, path ) ); + + } catch ( error ) { + + setTimeout( function () { + + if ( onError ) onError( error ); + + self.manager.itemError( url ); + + }, 0 ); + + } + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResourcePath: function ( value ) { + + this.resourcePath = value; + return this; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + parse: function ( FBXBuffer, path ) { + + if ( isFbxFormatBinary( FBXBuffer ) ) { + + fbxTree = new BinaryParser().parse( FBXBuffer ); + + } else { + + var FBXText = convertArrayBufferToString( FBXBuffer ); + + if ( ! isFbxFormatASCII( FBXText ) ) { + + throw new Error( 'THREE.FBXLoader: Unknown format.' ); + + } + + if ( getFbxVersion( FBXText ) < 7000 ) { + + throw new Error( 'THREE.FBXLoader: FBX version not supported, FileVersion: ' + getFbxVersion( FBXText ) ); + + } + + fbxTree = new TextParser().parse( FBXText ); + + } + + var textureLoader = new THREE.TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( 'anonymous' ); + + return new FBXTreeParser( textureLoader ).parse( fbxTree ); + + } + + }; + + // Parse the FBXTree object returned by the BinaryParser or TextParser and return a THREE.Group + function FBXTreeParser( textureLoader ) { + + this.textureLoader = textureLoader; + + } + + FBXTreeParser.prototype = { + + constructor: FBXTreeParser, + + parse: function () { + + connections = this.parseConnections(); + + var images = this.parseImages(); + var textures = this.parseTextures( images ); + var materials = this.parseMaterials( textures ); + var deformers = this.parseDeformers(); + var geometryMap = new GeometryParser().parse( deformers ); + + this.parseScene( deformers, geometryMap, materials ); + + return sceneGraph; + + }, + + // Parses FBXTree.Connections which holds parent-child connections between objects (e.g. material -> texture, model->geometry ) + // and details the connection type + parseConnections: function () { + + var connectionMap = new Map(); + + if ( 'Connections' in fbxTree ) { + + var rawConnections = fbxTree.Connections.connections; + + rawConnections.forEach( function ( rawConnection ) { + + var fromID = rawConnection[ 0 ]; + var toID = rawConnection[ 1 ]; + var relationship = rawConnection[ 2 ]; + + if ( ! connectionMap.has( fromID ) ) { + + connectionMap.set( fromID, { + parents: [], + children: [] + } ); + + } + + var parentRelationship = { ID: toID, relationship: relationship }; + connectionMap.get( fromID ).parents.push( parentRelationship ); + + if ( ! connectionMap.has( toID ) ) { + + connectionMap.set( toID, { + parents: [], + children: [] + } ); + + } + + var childRelationship = { ID: fromID, relationship: relationship }; + connectionMap.get( toID ).children.push( childRelationship ); + + } ); + + } + + return connectionMap; + + }, + + // Parse FBXTree.Objects.Video for embedded image data + // These images are connected to textures in FBXTree.Objects.Textures + // via FBXTree.Connections. + parseImages: function () { + + var images = {}; + var blobs = {}; + + if ( 'Video' in fbxTree.Objects ) { + + var videoNodes = fbxTree.Objects.Video; + + for ( var nodeID in videoNodes ) { + + var videoNode = videoNodes[ nodeID ]; + + var id = parseInt( nodeID ); + + images[ id ] = videoNode.RelativeFilename || videoNode.Filename; + + // raw image data is in videoNode.Content + if ( 'Content' in videoNode ) { + + var arrayBufferContent = ( videoNode.Content instanceof ArrayBuffer ) && ( videoNode.Content.byteLength > 0 ); + var base64Content = ( typeof videoNode.Content === 'string' ) && ( videoNode.Content !== '' ); + + if ( arrayBufferContent || base64Content ) { + + var image = this.parseImage( videoNodes[ nodeID ] ); + + blobs[ videoNode.RelativeFilename || videoNode.Filename ] = image; + + } + + } + + } + + } + + for ( var id in images ) { + + var filename = images[ id ]; + + if ( blobs[ filename ] !== undefined ) images[ id ] = blobs[ filename ]; + else images[ id ] = images[ id ].split( '\\' ).pop(); + + } + + return images; + + }, + + // Parse embedded image data in FBXTree.Video.Content + parseImage: function ( videoNode ) { + + var content = videoNode.Content; + var fileName = videoNode.RelativeFilename || videoNode.Filename; + var extension = fileName.slice( fileName.lastIndexOf( '.' ) + 1 ).toLowerCase(); + + var type; + + switch ( extension ) { + + case 'bmp': + + type = 'image/bmp'; + break; + + case 'jpg': + case 'jpeg': + + type = 'image/jpeg'; + break; + + case 'png': + + type = 'image/png'; + break; + + case 'tif': + + type = 'image/tiff'; + break; + + case 'tga': + + if ( typeof THREE.TGALoader !== 'function' ) { + + console.warn( 'FBXLoader: THREE.TGALoader is required to load TGA textures' ); + return; + + } else { + + if ( THREE.Loader.Handlers.get( '.tga' ) === null ) { + + var tgaLoader = new THREE.TGALoader(); + tgaLoader.setPath( this.textureLoader.path ); + + THREE.Loader.Handlers.add( /\.tga$/i, tgaLoader ); + + } + + type = 'image/tga'; + break; + + } + + default: + + console.warn( 'FBXLoader: Image type "' + extension + '" is not supported.' ); + return; + + } + + if ( typeof content === 'string' ) { // ASCII format + + return 'data:' + type + ';base64,' + content; + + } else { // Binary Format + + var array = new Uint8Array( content ); + return window.URL.createObjectURL( new Blob( [ array ], { type: type } ) ); + + } + + }, + + // Parse nodes in FBXTree.Objects.Texture + // These contain details such as UV scaling, cropping, rotation etc and are connected + // to images in FBXTree.Objects.Video + parseTextures: function ( images ) { + + var textureMap = new Map(); + + if ( 'Texture' in fbxTree.Objects ) { + + var textureNodes = fbxTree.Objects.Texture; + for ( var nodeID in textureNodes ) { + + var texture = this.parseTexture( textureNodes[ nodeID ], images ); + textureMap.set( parseInt( nodeID ), texture ); + + } + + } + + return textureMap; + + }, + + // Parse individual node in FBXTree.Objects.Texture + parseTexture: function ( textureNode, images ) { + + var texture = this.loadTexture( textureNode, images ); + + texture.ID = textureNode.id; + + texture.name = textureNode.attrName; + + var wrapModeU = textureNode.WrapModeU; + var wrapModeV = textureNode.WrapModeV; + + var valueU = wrapModeU !== undefined ? wrapModeU.value : 0; + var valueV = wrapModeV !== undefined ? wrapModeV.value : 0; + + // http://download.autodesk.com/us/fbx/SDKdocs/FBX_SDK_Help/files/fbxsdkref/class_k_fbx_texture.html#889640e63e2e681259ea81061b85143a + // 0: repeat(default), 1: clamp + + texture.wrapS = valueU === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping; + texture.wrapT = valueV === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping; + + if ( 'Scaling' in textureNode ) { + + var values = textureNode.Scaling.value; + + texture.repeat.x = values[ 0 ]; + texture.repeat.y = values[ 1 ]; + + } + + return texture; + + }, + + // load a texture specified as a blob or data URI, or via an external URL using THREE.TextureLoader + loadTexture: function ( textureNode, images ) { + + var fileName; + + var currentPath = this.textureLoader.path; + + var children = connections.get( textureNode.id ).children; + + if ( children !== undefined && children.length > 0 && images[ children[ 0 ].ID ] !== undefined ) { + + fileName = images[ children[ 0 ].ID ]; + + if ( fileName.indexOf( 'blob:' ) === 0 || fileName.indexOf( 'data:' ) === 0 ) { + + this.textureLoader.setPath( undefined ); + + } + + } + + var texture; + + var extension = textureNode.FileName.slice( - 3 ).toLowerCase(); + + if ( extension === 'tga' ) { + + var loader = THREE.Loader.Handlers.get( '.tga' ); + + if ( loader === null ) { + + console.warn( 'FBXLoader: TGALoader not found, creating empty placeholder texture for', fileName ); + texture = new THREE.Texture(); + + } else { + + texture = loader.load( fileName ); + + } + + } else if ( extension === 'psd' ) { + + console.warn( 'FBXLoader: PSD textures are not supported, creating empty placeholder texture for', fileName ); + texture = new THREE.Texture(); + + } else { + + texture = this.textureLoader.load( fileName ); + + } + + this.textureLoader.setPath( currentPath ); + + return texture; + + }, + + // Parse nodes in FBXTree.Objects.Material + parseMaterials: function ( textureMap ) { + + var materialMap = new Map(); + + if ( 'Material' in fbxTree.Objects ) { + + var materialNodes = fbxTree.Objects.Material; + + for ( var nodeID in materialNodes ) { + + var material = this.parseMaterial( materialNodes[ nodeID ], textureMap ); + + if ( material !== null ) materialMap.set( parseInt( nodeID ), material ); + + } + + } + + return materialMap; + + }, + + // Parse single node in FBXTree.Objects.Material + // Materials are connected to texture maps in FBXTree.Objects.Textures + // FBX format currently only supports Lambert and Phong shading models + parseMaterial: function ( materialNode, textureMap ) { + + var ID = materialNode.id; + var name = materialNode.attrName; + var type = materialNode.ShadingModel; + + // Case where FBX wraps shading model in property object. + if ( typeof type === 'object' ) { + + type = type.value; + + } + + // Ignore unused materials which don't have any connections. + if ( ! connections.has( ID ) ) return null; + + var parameters = this.parseParameters( materialNode, textureMap, ID ); + + var material; + + switch ( type.toLowerCase() ) { + + case 'phong': + material = new THREE.MeshPhongMaterial(); + break; + case 'lambert': + material = new THREE.MeshLambertMaterial(); + break; + default: + console.warn( 'THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.', type ); + material = new THREE.MeshPhongMaterial(); + break; + + } + + material.setValues( parameters ); + material.name = name; + + return material; + + }, + + // Parse FBX material and return parameters suitable for a three.js material + // Also parse the texture map and return any textures associated with the material + parseParameters: function ( materialNode, textureMap, ID ) { + + var parameters = {}; + + if ( materialNode.BumpFactor ) { + + parameters.bumpScale = materialNode.BumpFactor.value; + + } + if ( materialNode.Diffuse ) { + + parameters.color = new THREE.Color().fromArray( materialNode.Diffuse.value ); + + } else if ( materialNode.DiffuseColor && materialNode.DiffuseColor.type === 'Color' ) { + + // The blender exporter exports diffuse here instead of in materialNode.Diffuse + parameters.color = new THREE.Color().fromArray( materialNode.DiffuseColor.value ); + + } + + if ( materialNode.DisplacementFactor ) { + + parameters.displacementScale = materialNode.DisplacementFactor.value; + + } + + if ( materialNode.Emissive ) { + + parameters.emissive = new THREE.Color().fromArray( materialNode.Emissive.value ); + + } else if ( materialNode.EmissiveColor && materialNode.EmissiveColor.type === 'Color' ) { + + // The blender exporter exports emissive color here instead of in materialNode.Emissive + parameters.emissive = new THREE.Color().fromArray( materialNode.EmissiveColor.value ); + + } + + if ( materialNode.EmissiveFactor ) { + + parameters.emissiveIntensity = parseFloat( materialNode.EmissiveFactor.value ); + + } + + if ( materialNode.Opacity ) { + + parameters.opacity = parseFloat( materialNode.Opacity.value ); + + } + + if ( parameters.opacity < 1.0 ) { + + parameters.transparent = true; + } + + if ( materialNode.ReflectionFactor ) { + + parameters.reflectivity = materialNode.ReflectionFactor.value; + + } + + if ( materialNode.Shininess ) { + + parameters.shininess = materialNode.Shininess.value; + + } + + if ( materialNode.Specular ) { + + parameters.specular = new THREE.Color().fromArray( materialNode.Specular.value ); + + } else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) { + + // The blender exporter exports specular color here instead of in materialNode.Specular + parameters.specular = new THREE.Color().fromArray( materialNode.SpecularColor.value ); + + } + + var self = this; + connections.get( ID ).children.forEach( function ( child ) { + + var type = child.relationship; + + switch ( type ) { + + case 'Bump': + parameters.bumpMap = self.getTexture( textureMap, child.ID ); + break; + + case 'Maya|TEX_ao_map': + parameters.aoMap = self.getTexture( textureMap, child.ID ); + break; + + case 'DiffuseColor': + case 'Maya|TEX_color_map': + parameters.map = self.getTexture( textureMap, child.ID ); + break; + + case 'DisplacementColor': + parameters.displacementMap = self.getTexture( textureMap, child.ID ); + break; + + case 'EmissiveColor': + parameters.emissiveMap = self.getTexture( textureMap, child.ID ); + break; + + case 'NormalMap': + case 'Maya|TEX_normal_map': + parameters.normalMap = self.getTexture( textureMap, child.ID ); + break; + + case 'ReflectionColor': + parameters.envMap = self.getTexture( textureMap, child.ID ); + parameters.envMap.mapping = THREE.EquirectangularReflectionMapping; + break; + + case 'SpecularColor': + parameters.specularMap = self.getTexture( textureMap, child.ID ); + break; + + case 'TransparentColor': + parameters.alphaMap = self.getTexture( textureMap, child.ID ); + parameters.transparent = true; + break; + + case 'AmbientColor': + case 'ShininessExponent': // AKA glossiness map + case 'SpecularFactor': // AKA specularLevel + case 'VectorDisplacementColor': // NOTE: Seems to be a copy of DisplacementColor + default: + console.warn( 'THREE.FBXLoader: %s map is not supported in three.js, skipping texture.', type ); + break; + + } + + } ); + + return parameters; + + }, + + // get a texture from the textureMap for use by a material. + getTexture: function ( textureMap, id ) { + + // if the texture is a layered texture, just use the first layer and issue a warning + if ( 'LayeredTexture' in fbxTree.Objects && id in fbxTree.Objects.LayeredTexture ) { + + console.warn( 'THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.' ); + id = connections.get( id ).children[ 0 ].ID; + + } + + return textureMap.get( id ); + + }, + + // Parse nodes in FBXTree.Objects.Deformer + // Deformer node can contain skinning or Vertex Cache animation data, however only skinning is supported here + // Generates map of Skeleton-like objects for use later when generating and binding skeletons. + parseDeformers: function () { + + var skeletons = {}; + var morphTargets = {}; + + if ( 'Deformer' in fbxTree.Objects ) { + + var DeformerNodes = fbxTree.Objects.Deformer; + + for ( var nodeID in DeformerNodes ) { + + var deformerNode = DeformerNodes[ nodeID ]; + + var relationships = connections.get( parseInt( nodeID ) ); + + if ( deformerNode.attrType === 'Skin' ) { + + var skeleton = this.parseSkeleton( relationships, DeformerNodes ); + skeleton.ID = nodeID; + + if ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: skeleton attached to more than one geometry is not supported.' ); + skeleton.geometryID = relationships.parents[ 0 ].ID; + + skeletons[ nodeID ] = skeleton; + + } else if ( deformerNode.attrType === 'BlendShape' ) { + + var morphTarget = { + id: nodeID, + }; + + morphTarget.rawTargets = this.parseMorphTargets( relationships, DeformerNodes ); + morphTarget.id = nodeID; + + if ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: morph target attached to more than one geometry is not supported.' ); + + morphTargets[ nodeID ] = morphTarget; + + } + + } + + } + + return { + + skeletons: skeletons, + morphTargets: morphTargets, + + }; + + }, + + // Parse single nodes in FBXTree.Objects.Deformer + // The top level skeleton node has type 'Skin' and sub nodes have type 'Cluster' + // Each skin node represents a skeleton and each cluster node represents a bone + parseSkeleton: function ( relationships, deformerNodes ) { + + var rawBones = []; + + relationships.children.forEach( function ( child ) { + + var boneNode = deformerNodes[ child.ID ]; + + if ( boneNode.attrType !== 'Cluster' ) return; + + var rawBone = { + + ID: child.ID, + indices: [], + weights: [], + transformLink: new THREE.Matrix4().fromArray( boneNode.TransformLink.a ), + // transform: new THREE.Matrix4().fromArray( boneNode.Transform.a ), + // linkMode: boneNode.Mode, + + }; + + if ( 'Indexes' in boneNode ) { + + rawBone.indices = boneNode.Indexes.a; + rawBone.weights = boneNode.Weights.a; + + } + + rawBones.push( rawBone ); + + } ); + + return { + + rawBones: rawBones, + bones: [] + + }; + + }, + + // The top level morph deformer node has type "BlendShape" and sub nodes have type "BlendShapeChannel" + parseMorphTargets: function ( relationships, deformerNodes ) { + + var rawMorphTargets = []; + + for ( var i = 0; i < relationships.children.length; i ++ ) { + + var child = relationships.children[ i ]; + + var morphTargetNode = deformerNodes[ child.ID ]; + + var rawMorphTarget = { + + name: morphTargetNode.attrName, + initialWeight: morphTargetNode.DeformPercent, + id: morphTargetNode.id, + fullWeights: morphTargetNode.FullWeights.a + + }; + + if ( morphTargetNode.attrType !== 'BlendShapeChannel' ) return; + + rawMorphTarget.geoID = connections.get( parseInt( child.ID ) ).children.filter( function ( child ) { + + return child.relationship === undefined; + + } )[ 0 ].ID; + + rawMorphTargets.push( rawMorphTarget ); + + } + + return rawMorphTargets; + + }, + + // create the main THREE.Group() to be returned by the loader + parseScene: function ( deformers, geometryMap, materialMap ) { + + sceneGraph = new THREE.Group(); + + var modelMap = this.parseModels( deformers.skeletons, geometryMap, materialMap ); + + var modelNodes = fbxTree.Objects.Model; + + var self = this; + modelMap.forEach( function ( model ) { + + var modelNode = modelNodes[ model.ID ]; + self.setLookAtProperties( model, modelNode ); + + var parentConnections = connections.get( model.ID ).parents; + + parentConnections.forEach( function ( connection ) { + + var parent = modelMap.get( connection.ID ); + if ( parent !== undefined ) parent.add( model ); + + } ); + + if ( model.parent === null ) { + + sceneGraph.add( model ); + + } + + + } ); + + this.bindSkeleton( deformers.skeletons, geometryMap, modelMap ); + + this.createAmbientLight(); + + this.setupMorphMaterials(); + + sceneGraph.traverse( function ( node ) { + + if ( node.userData.transformData ) { + + if ( node.parent ) node.userData.transformData.parentMatrixWorld = node.parent.matrix; + + var transform = generateTransform( node.userData.transformData ); + + node.applyMatrix( transform ); + + } + + } ); + + var animations = new AnimationParser().parse(); + + // if all the models where already combined in a single group, just return that + if ( sceneGraph.children.length === 1 && sceneGraph.children[ 0 ].isGroup ) { + + sceneGraph.children[ 0 ].animations = animations; + sceneGraph = sceneGraph.children[ 0 ]; + + } + + sceneGraph.animations = animations; + + }, + + // parse nodes in FBXTree.Objects.Model + parseModels: function ( skeletons, geometryMap, materialMap ) { + + var modelMap = new Map(); + var modelNodes = fbxTree.Objects.Model; + + for ( var nodeID in modelNodes ) { + + var id = parseInt( nodeID ); + var node = modelNodes[ nodeID ]; + var relationships = connections.get( id ); + + var model = this.buildSkeleton( relationships, skeletons, id, node.attrName ); + + if ( ! model ) { + + switch ( node.attrType ) { + + case 'Camera': + model = this.createCamera( relationships ); + break; + case 'Light': + model = this.createLight( relationships ); + break; + case 'Mesh': + model = this.createMesh( relationships, geometryMap, materialMap ); + break; + case 'NurbsCurve': + model = this.createCurve( relationships, geometryMap ); + break; + case 'LimbNode': + case 'Root': + model = new THREE.Bone(); + break; + case 'Null': + default: + model = new THREE.Group(); + break; + + } + + model.name = THREE.PropertyBinding.sanitizeNodeName( node.attrName ); + model.ID = id; + + } + + this.getTransformData( model, node ); + modelMap.set( id, model ); + + } + + return modelMap; + + }, + + buildSkeleton: function ( relationships, skeletons, id, name ) { + + var bone = null; + + relationships.parents.forEach( function ( parent ) { + + for ( var ID in skeletons ) { + + var skeleton = skeletons[ ID ]; + + skeleton.rawBones.forEach( function ( rawBone, i ) { + + if ( rawBone.ID === parent.ID ) { + + var subBone = bone; + bone = new THREE.Bone(); + + bone.matrixWorld.copy( rawBone.transformLink ); + + // set name and id here - otherwise in cases where "subBone" is created it will not have a name / id + bone.name = THREE.PropertyBinding.sanitizeNodeName( name ); + bone.ID = id; + + skeleton.bones[ i ] = bone; + + // In cases where a bone is shared between multiple meshes + // duplicate the bone here and and it as a child of the first bone + if ( subBone !== null ) { + + bone.add( subBone ); + + } + + } + + } ); + + } + + } ); + + return bone; + + }, + + // create a THREE.PerspectiveCamera or THREE.OrthographicCamera + createCamera: function ( relationships ) { + + var model; + var cameraAttribute; + + relationships.children.forEach( function ( child ) { + + var attr = fbxTree.Objects.NodeAttribute[ child.ID ]; + + if ( attr !== undefined ) { + + cameraAttribute = attr; + + } + + } ); + + if ( cameraAttribute === undefined ) { + + model = new THREE.Object3D(); + + } else { + + var type = 0; + if ( cameraAttribute.CameraProjectionType !== undefined && cameraAttribute.CameraProjectionType.value === 1 ) { + + type = 1; + + } + + var nearClippingPlane = 1; + if ( cameraAttribute.NearPlane !== undefined ) { + + nearClippingPlane = cameraAttribute.NearPlane.value / 1000; + + } + + var farClippingPlane = 1000; + if ( cameraAttribute.FarPlane !== undefined ) { + + farClippingPlane = cameraAttribute.FarPlane.value / 1000; + + } + + + var width = window.innerWidth; + var height = window.innerHeight; + + if ( cameraAttribute.AspectWidth !== undefined && cameraAttribute.AspectHeight !== undefined ) { + + width = cameraAttribute.AspectWidth.value; + height = cameraAttribute.AspectHeight.value; + + } + + var aspect = width / height; + + var fov = 45; + if ( cameraAttribute.FieldOfView !== undefined ) { + + fov = cameraAttribute.FieldOfView.value; + + } + + var focalLength = cameraAttribute.FocalLength ? cameraAttribute.FocalLength.value : null; + + switch ( type ) { + + case 0: // Perspective + model = new THREE.PerspectiveCamera( fov, aspect, nearClippingPlane, farClippingPlane ); + if ( focalLength !== null ) model.setFocalLength( focalLength ); + break; + + case 1: // Orthographic + model = new THREE.OrthographicCamera( - width / 2, width / 2, height / 2, - height / 2, nearClippingPlane, farClippingPlane ); + break; + + default: + console.warn( 'THREE.FBXLoader: Unknown camera type ' + type + '.' ); + model = new THREE.Object3D(); + break; + + } + + } + + return model; + + }, + + // Create a THREE.DirectionalLight, THREE.PointLight or THREE.SpotLight + createLight: function ( relationships ) { + + var model; + var lightAttribute; + + relationships.children.forEach( function ( child ) { + + var attr = fbxTree.Objects.NodeAttribute[ child.ID ]; + + if ( attr !== undefined ) { + + lightAttribute = attr; + + } + + } ); + + if ( lightAttribute === undefined ) { + + model = new THREE.Object3D(); + + } else { + + var type; + + // LightType can be undefined for Point lights + if ( lightAttribute.LightType === undefined ) { + + type = 0; + + } else { + + type = lightAttribute.LightType.value; + + } + + var color = 0xffffff; + + if ( lightAttribute.Color !== undefined ) { + + color = new THREE.Color().fromArray( lightAttribute.Color.value ); + + } + + var intensity = ( lightAttribute.Intensity === undefined ) ? 1 : lightAttribute.Intensity.value / 100; + + // light disabled + if ( lightAttribute.CastLightOnObject !== undefined && lightAttribute.CastLightOnObject.value === 0 ) { + + intensity = 0; + + } + + var distance = 0; + if ( lightAttribute.FarAttenuationEnd !== undefined ) { + + if ( lightAttribute.EnableFarAttenuation !== undefined && lightAttribute.EnableFarAttenuation.value === 0 ) { + + distance = 0; + + } else { + + distance = lightAttribute.FarAttenuationEnd.value; + + } + + } + + // TODO: could this be calculated linearly from FarAttenuationStart to FarAttenuationEnd? + var decay = 1; + + switch ( type ) { + + case 0: // Point + model = new THREE.PointLight( color, intensity, distance, decay ); + break; + + case 1: // Directional + model = new THREE.DirectionalLight( color, intensity ); + break; + + case 2: // Spot + var angle = Math.PI / 3; + + if ( lightAttribute.InnerAngle !== undefined ) { + + angle = THREE.Math.degToRad( lightAttribute.InnerAngle.value ); + + } + + var penumbra = 0; + if ( lightAttribute.OuterAngle !== undefined ) { + + // TODO: this is not correct - FBX calculates outer and inner angle in degrees + // with OuterAngle > InnerAngle && OuterAngle <= Math.PI + // while three.js uses a penumbra between (0, 1) to attenuate the inner angle + penumbra = THREE.Math.degToRad( lightAttribute.OuterAngle.value ); + penumbra = Math.max( penumbra, 1 ); + + } + + model = new THREE.SpotLight( color, intensity, distance, angle, penumbra, decay ); + break; + + default: + console.warn( 'THREE.FBXLoader: Unknown light type ' + lightAttribute.LightType.value + ', defaulting to a THREE.PointLight.' ); + model = new THREE.PointLight( color, intensity ); + break; + + } + + if ( lightAttribute.CastShadows !== undefined && lightAttribute.CastShadows.value === 1 ) { + + model.castShadow = true; + + } + + } + + return model; + + }, + + createMesh: function ( relationships, geometryMap, materialMap ) { + + var model; + var geometry = null; + var material = null; + var materials = []; + + // get geometry and materials(s) from connections + relationships.children.forEach( function ( child ) { + + if ( geometryMap.has( child.ID ) ) { + + geometry = geometryMap.get( child.ID ); + + } + + if ( materialMap.has( child.ID ) ) { + + materials.push( materialMap.get( child.ID ) ); + + } + + } ); + + if ( materials.length > 1 ) { + + material = materials; + + } else if ( materials.length > 0 ) { + + material = materials[ 0 ]; + + } else { + + material = new THREE.MeshPhongMaterial( { color: 0xcccccc } ); + materials.push( material ); + + } + + if ( 'color' in geometry.attributes ) { + + materials.forEach( function ( material ) { + + material.vertexColors = THREE.VertexColors; + + } ); + + } + + if ( geometry.FBX_Deformer ) { + + materials.forEach( function ( material ) { + + material.skinning = true; + + } ); + + model = new THREE.SkinnedMesh( geometry, material ); + model.normalizeSkinWeights(); + + } else { + + model = new THREE.Mesh( geometry, material ); + + } + + return model; + + }, + + createCurve: function ( relationships, geometryMap ) { + + var geometry = relationships.children.reduce( function ( geo, child ) { + + if ( geometryMap.has( child.ID ) ) geo = geometryMap.get( child.ID ); + + return geo; + + }, null ); + + // FBX does not list materials for Nurbs lines, so we'll just put our own in here. + var material = new THREE.LineBasicMaterial( { color: 0x3300ff, linewidth: 1 } ); + return new THREE.Line( geometry, material ); + + }, + + // parse the model node for transform data + getTransformData: function ( model, modelNode ) { + + var transformData = {}; + + if ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value ); + + if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value ); + else transformData.eulerOrder = 'ZYX'; + + if ( 'Lcl_Translation' in modelNode ) transformData.translation = modelNode.Lcl_Translation.value; + + if ( 'PreRotation' in modelNode ) transformData.preRotation = modelNode.PreRotation.value; + if ( 'Lcl_Rotation' in modelNode ) transformData.rotation = modelNode.Lcl_Rotation.value; + if ( 'PostRotation' in modelNode ) transformData.postRotation = modelNode.PostRotation.value; + + if ( 'Lcl_Scaling' in modelNode ) transformData.scale = modelNode.Lcl_Scaling.value; + + if ( 'ScalingOffset' in modelNode ) transformData.scalingOffset = modelNode.ScalingOffset.value; + if ( 'ScalingPivot' in modelNode ) transformData.scalingPivot = modelNode.ScalingPivot.value; + + if ( 'RotationOffset' in modelNode ) transformData.rotationOffset = modelNode.RotationOffset.value; + if ( 'RotationPivot' in modelNode ) transformData.rotationPivot = modelNode.RotationPivot.value; + + model.userData.transformData = transformData; + + }, + + setLookAtProperties: function ( model, modelNode ) { + + if ( 'LookAtProperty' in modelNode ) { + + var children = connections.get( model.ID ).children; + + children.forEach( function ( child ) { + + if ( child.relationship === 'LookAtProperty' ) { + + var lookAtTarget = fbxTree.Objects.Model[ child.ID ]; + + if ( 'Lcl_Translation' in lookAtTarget ) { + + var pos = lookAtTarget.Lcl_Translation.value; + + // DirectionalLight, SpotLight + if ( model.target !== undefined ) { + + model.target.position.fromArray( pos ); + sceneGraph.add( model.target ); + + } else { // Cameras and other Object3Ds + + model.lookAt( new THREE.Vector3().fromArray( pos ) ); + + } + + } + + } + + } ); + + } + + }, + + bindSkeleton: function ( skeletons, geometryMap, modelMap ) { + + var bindMatrices = this.parsePoseNodes(); + + for ( var ID in skeletons ) { + + var skeleton = skeletons[ ID ]; + + var parents = connections.get( parseInt( skeleton.ID ) ).parents; + + parents.forEach( function ( parent ) { + + if ( geometryMap.has( parent.ID ) ) { + + var geoID = parent.ID; + var geoRelationships = connections.get( geoID ); + + geoRelationships.parents.forEach( function ( geoConnParent ) { + + if ( modelMap.has( geoConnParent.ID ) ) { + + var model = modelMap.get( geoConnParent.ID ); + + model.bind( new THREE.Skeleton( skeleton.bones ), bindMatrices[ geoConnParent.ID ] ); + + } + + } ); + + } + + } ); + + } + + }, + + parsePoseNodes: function () { + + var bindMatrices = {}; + + if ( 'Pose' in fbxTree.Objects ) { + + var BindPoseNode = fbxTree.Objects.Pose; + + for ( var nodeID in BindPoseNode ) { + + if ( BindPoseNode[ nodeID ].attrType === 'BindPose' ) { + + var poseNodes = BindPoseNode[ nodeID ].PoseNode; + + if ( Array.isArray( poseNodes ) ) { + + poseNodes.forEach( function ( poseNode ) { + + bindMatrices[ poseNode.Node ] = new THREE.Matrix4().fromArray( poseNode.Matrix.a ); + + } ); + + } else { + + bindMatrices[ poseNodes.Node ] = new THREE.Matrix4().fromArray( poseNodes.Matrix.a ); + + } + + } + + } + + } + + return bindMatrices; + + }, + + // Parse ambient color in FBXTree.GlobalSettings - if it's not set to black (default), create an ambient light + createAmbientLight: function () { + + if ( 'GlobalSettings' in fbxTree && 'AmbientColor' in fbxTree.GlobalSettings ) { + + var ambientColor = fbxTree.GlobalSettings.AmbientColor.value; + var r = ambientColor[ 0 ]; + var g = ambientColor[ 1 ]; + var b = ambientColor[ 2 ]; + + if ( r !== 0 || g !== 0 || b !== 0 ) { + + var color = new THREE.Color( r, g, b ); + sceneGraph.add( new THREE.AmbientLight( color, 1 ) ); + + } + + } + + }, + + setupMorphMaterials: function () { + + var self = this; + sceneGraph.traverse( function ( child ) { + + if ( child.isMesh ) { + + if ( child.geometry.morphAttributes.position && child.geometry.morphAttributes.position.length ) { + + if ( Array.isArray( child.material ) ) { + + child.material.forEach( function ( material, i ) { + + self.setupMorphMaterial( child, material, i ); + + } ); + + } else { + + self.setupMorphMaterial( child, child.material ); + + } + + } + + } + + } ); + + }, + + setupMorphMaterial: function ( child, material, index ) { + + var uuid = child.uuid; + var matUuid = material.uuid; + + // if a geometry has morph targets, it cannot share the material with other geometries + var sharedMat = false; + + sceneGraph.traverse( function ( node ) { + + if ( node.isMesh ) { + + if ( Array.isArray( node.material ) ) { + + node.material.forEach( function ( mat ) { + + if ( mat.uuid === matUuid && node.uuid !== uuid ) sharedMat = true; + + } ); + + } else if ( node.material.uuid === matUuid && node.uuid !== uuid ) sharedMat = true; + + } + + } ); + + if ( sharedMat === true ) { + + var clonedMat = material.clone(); + clonedMat.morphTargets = true; + + if ( index === undefined ) child.material = clonedMat; + else child.material[ index ] = clonedMat; + + } else material.morphTargets = true; + + } + + }; + + // parse Geometry data from FBXTree and return map of BufferGeometries + function GeometryParser() {} + + GeometryParser.prototype = { + + constructor: GeometryParser, + + // Parse nodes in FBXTree.Objects.Geometry + parse: function ( deformers ) { + + var geometryMap = new Map(); + + if ( 'Geometry' in fbxTree.Objects ) { + + var geoNodes = fbxTree.Objects.Geometry; + + for ( var nodeID in geoNodes ) { + + var relationships = connections.get( parseInt( nodeID ) ); + var geo = this.parseGeometry( relationships, geoNodes[ nodeID ], deformers ); + + geometryMap.set( parseInt( nodeID ), geo ); + + } + + } + + return geometryMap; + + }, + + // Parse single node in FBXTree.Objects.Geometry + parseGeometry: function ( relationships, geoNode, deformers ) { + + switch ( geoNode.attrType ) { + + case 'Mesh': + return this.parseMeshGeometry( relationships, geoNode, deformers ); + break; + + case 'NurbsCurve': + return this.parseNurbsGeometry( geoNode ); + break; + + } + + }, + + // Parse single node mesh geometry in FBXTree.Objects.Geometry + parseMeshGeometry: function ( relationships, geoNode, deformers ) { + + var skeletons = deformers.skeletons; + var morphTargets = deformers.morphTargets; + + var modelNodes = relationships.parents.map( function ( parent ) { + + return fbxTree.Objects.Model[ parent.ID ]; + + } ); + + // don't create geometry if it is not associated with any models + if ( modelNodes.length === 0 ) return; + + var skeleton = relationships.children.reduce( function ( skeleton, child ) { + + if ( skeletons[ child.ID ] !== undefined ) skeleton = skeletons[ child.ID ]; + + return skeleton; + + }, null ); + + var morphTarget = relationships.children.reduce( function ( morphTarget, child ) { + + if ( morphTargets[ child.ID ] !== undefined ) morphTarget = morphTargets[ child.ID ]; + + return morphTarget; + + }, null ); + + // Assume one model and get the preRotation from that + // if there is more than one model associated with the geometry this may cause problems + var modelNode = modelNodes[ 0 ]; + + var transformData = {}; + + if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value ); + if ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value ); + + if ( 'GeometricTranslation' in modelNode ) transformData.translation = modelNode.GeometricTranslation.value; + if ( 'GeometricRotation' in modelNode ) transformData.rotation = modelNode.GeometricRotation.value; + if ( 'GeometricScaling' in modelNode ) transformData.scale = modelNode.GeometricScaling.value; + + var transform = generateTransform( transformData ); + + return this.genGeometry( geoNode, skeleton, morphTarget, transform ); + + }, + + // Generate a THREE.BufferGeometry from a node in FBXTree.Objects.Geometry + genGeometry: function ( geoNode, skeleton, morphTarget, preTransform ) { + + var geo = new THREE.BufferGeometry(); + if ( geoNode.attrName ) geo.name = geoNode.attrName; + + var geoInfo = this.parseGeoNode( geoNode, skeleton ); + var buffers = this.genBuffers( geoInfo ); + + var positionAttribute = new THREE.Float32BufferAttribute( buffers.vertex, 3 ); + + preTransform.applyToBufferAttribute( positionAttribute ); + + geo.addAttribute( 'position', positionAttribute ); + + if ( buffers.colors.length > 0 ) { + + geo.addAttribute( 'color', new THREE.Float32BufferAttribute( buffers.colors, 3 ) ); + + } + + if ( skeleton ) { + + geo.addAttribute( 'skinIndex', new THREE.Uint16BufferAttribute( buffers.weightsIndices, 4 ) ); + + geo.addAttribute( 'skinWeight', new THREE.Float32BufferAttribute( buffers.vertexWeights, 4 ) ); + + // used later to bind the skeleton to the model + geo.FBX_Deformer = skeleton; + + } + + if ( buffers.normal.length > 0 ) { + + var normalAttribute = new THREE.Float32BufferAttribute( buffers.normal, 3 ); + + var normalMatrix = new THREE.Matrix3().getNormalMatrix( preTransform ); + normalMatrix.applyToBufferAttribute( normalAttribute ); + + geo.addAttribute( 'normal', normalAttribute ); + + } + + buffers.uvs.forEach( function ( uvBuffer, i ) { + + // subsequent uv buffers are called 'uv1', 'uv2', ... + var name = 'uv' + ( i + 1 ).toString(); + + // the first uv buffer is just called 'uv' + if ( i === 0 ) { + + name = 'uv'; + + } + + geo.addAttribute( name, new THREE.Float32BufferAttribute( buffers.uvs[ i ], 2 ) ); + + } ); + + if ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) { + + // Convert the material indices of each vertex into rendering groups on the geometry. + var prevMaterialIndex = buffers.materialIndex[ 0 ]; + var startIndex = 0; + + buffers.materialIndex.forEach( function ( currentIndex, i ) { + + if ( currentIndex !== prevMaterialIndex ) { + + geo.addGroup( startIndex, i - startIndex, prevMaterialIndex ); + + prevMaterialIndex = currentIndex; + startIndex = i; + + } + + } ); + + // the loop above doesn't add the last group, do that here. + if ( geo.groups.length > 0 ) { + + var lastGroup = geo.groups[ geo.groups.length - 1 ]; + var lastIndex = lastGroup.start + lastGroup.count; + + if ( lastIndex !== buffers.materialIndex.length ) { + + geo.addGroup( lastIndex, buffers.materialIndex.length - lastIndex, prevMaterialIndex ); + + } + + } + + // case where there are multiple materials but the whole geometry is only + // using one of them + if ( geo.groups.length === 0 ) { + + geo.addGroup( 0, buffers.materialIndex.length, buffers.materialIndex[ 0 ] ); + + } + + } + + this.addMorphTargets( geo, geoNode, morphTarget, preTransform ); + + return geo; + + }, + + parseGeoNode: function ( geoNode, skeleton ) { + + var geoInfo = {}; + + geoInfo.vertexPositions = ( geoNode.Vertices !== undefined ) ? geoNode.Vertices.a : []; + geoInfo.vertexIndices = ( geoNode.PolygonVertexIndex !== undefined ) ? geoNode.PolygonVertexIndex.a : []; + + if ( geoNode.LayerElementColor ) { + + geoInfo.color = this.parseVertexColors( geoNode.LayerElementColor[ 0 ] ); + + } + + if ( geoNode.LayerElementMaterial ) { + + geoInfo.material = this.parseMaterialIndices( geoNode.LayerElementMaterial[ 0 ] ); + + } + + if ( geoNode.LayerElementNormal ) { + + geoInfo.normal = this.parseNormals( geoNode.LayerElementNormal[ 0 ] ); + + } + + if ( geoNode.LayerElementUV ) { + + geoInfo.uv = []; + + var i = 0; + while ( geoNode.LayerElementUV[ i ] ) { + + geoInfo.uv.push( this.parseUVs( geoNode.LayerElementUV[ i ] ) ); + i ++; + + } + + } + + geoInfo.weightTable = {}; + + if ( skeleton !== null ) { + + geoInfo.skeleton = skeleton; + + skeleton.rawBones.forEach( function ( rawBone, i ) { + + // loop over the bone's vertex indices and weights + rawBone.indices.forEach( function ( index, j ) { + + if ( geoInfo.weightTable[ index ] === undefined ) geoInfo.weightTable[ index ] = []; + + geoInfo.weightTable[ index ].push( { + + id: i, + weight: rawBone.weights[ j ], + + } ); + + } ); + + } ); + + } + + return geoInfo; + + }, + + genBuffers: function ( geoInfo ) { + + var buffers = { + vertex: [], + normal: [], + colors: [], + uvs: [], + materialIndex: [], + vertexWeights: [], + weightsIndices: [], + }; + + var polygonIndex = 0; + var faceLength = 0; + var displayedWeightsWarning = false; + + // these will hold data for a single face + var facePositionIndexes = []; + var faceNormals = []; + var faceColors = []; + var faceUVs = []; + var faceWeights = []; + var faceWeightIndices = []; + + var self = this; + geoInfo.vertexIndices.forEach( function ( vertexIndex, polygonVertexIndex ) { + + var endOfFace = false; + + // Face index and vertex index arrays are combined in a single array + // A cube with quad faces looks like this: + // PolygonVertexIndex: *24 { + // a: 0, 1, 3, -3, 2, 3, 5, -5, 4, 5, 7, -7, 6, 7, 1, -1, 1, 7, 5, -4, 6, 0, 2, -5 + // } + // Negative numbers mark the end of a face - first face here is 0, 1, 3, -3 + // to find index of last vertex bit shift the index: ^ - 1 + if ( vertexIndex < 0 ) { + + vertexIndex = vertexIndex ^ - 1; // equivalent to ( x * -1 ) - 1 + endOfFace = true; + + } + + var weightIndices = []; + var weights = []; + + facePositionIndexes.push( vertexIndex * 3, vertexIndex * 3 + 1, vertexIndex * 3 + 2 ); + + if ( geoInfo.color ) { + + var data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.color ); + + faceColors.push( data[ 0 ], data[ 1 ], data[ 2 ] ); + + } + + if ( geoInfo.skeleton ) { + + if ( geoInfo.weightTable[ vertexIndex ] !== undefined ) { + + geoInfo.weightTable[ vertexIndex ].forEach( function ( wt ) { + + weights.push( wt.weight ); + weightIndices.push( wt.id ); + + } ); + + + } + + if ( weights.length > 4 ) { + + if ( ! displayedWeightsWarning ) { + + console.warn( 'THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.' ); + displayedWeightsWarning = true; + + } + + var wIndex = [ 0, 0, 0, 0 ]; + var Weight = [ 0, 0, 0, 0 ]; + + weights.forEach( function ( weight, weightIndex ) { + + var currentWeight = weight; + var currentIndex = weightIndices[ weightIndex ]; + + Weight.forEach( function ( comparedWeight, comparedWeightIndex, comparedWeightArray ) { + + if ( currentWeight > comparedWeight ) { + + comparedWeightArray[ comparedWeightIndex ] = currentWeight; + currentWeight = comparedWeight; + + var tmp = wIndex[ comparedWeightIndex ]; + wIndex[ comparedWeightIndex ] = currentIndex; + currentIndex = tmp; + + } + + } ); + + } ); + + weightIndices = wIndex; + weights = Weight; + + } + + // if the weight array is shorter than 4 pad with 0s + while ( weights.length < 4 ) { + + weights.push( 0 ); + weightIndices.push( 0 ); + + } + + for ( var i = 0; i < 4; ++ i ) { + + faceWeights.push( weights[ i ] ); + faceWeightIndices.push( weightIndices[ i ] ); + + } + + } + + if ( geoInfo.normal ) { + + var data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.normal ); + + faceNormals.push( data[ 0 ], data[ 1 ], data[ 2 ] ); + + } + + if ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) { + + var materialIndex = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.material )[ 0 ]; + + } + + if ( geoInfo.uv ) { + + geoInfo.uv.forEach( function ( uv, i ) { + + var data = getData( polygonVertexIndex, polygonIndex, vertexIndex, uv ); + + if ( faceUVs[ i ] === undefined ) { + + faceUVs[ i ] = []; + + } + + faceUVs[ i ].push( data[ 0 ] ); + faceUVs[ i ].push( data[ 1 ] ); + + } ); + + } + + faceLength ++; + + if ( endOfFace ) { + + self.genFace( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength ); + + polygonIndex ++; + faceLength = 0; + + // reset arrays for the next face + facePositionIndexes = []; + faceNormals = []; + faceColors = []; + faceUVs = []; + faceWeights = []; + faceWeightIndices = []; + + } + + } ); + + return buffers; + + }, + + // Generate data for a single face in a geometry. If the face is a quad then split it into 2 tris + genFace: function ( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength ) { + + for ( var i = 2; i < faceLength; i ++ ) { + + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ 0 ] ] ); + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ 1 ] ] ); + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ 2 ] ] ); + + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ ( i - 1 ) * 3 ] ] ); + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ ( i - 1 ) * 3 + 1 ] ] ); + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ ( i - 1 ) * 3 + 2 ] ] ); + + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i * 3 ] ] ); + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i * 3 + 1 ] ] ); + buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i * 3 + 2 ] ] ); + + if ( geoInfo.skeleton ) { + + buffers.vertexWeights.push( faceWeights[ 0 ] ); + buffers.vertexWeights.push( faceWeights[ 1 ] ); + buffers.vertexWeights.push( faceWeights[ 2 ] ); + buffers.vertexWeights.push( faceWeights[ 3 ] ); + + buffers.vertexWeights.push( faceWeights[ ( i - 1 ) * 4 ] ); + buffers.vertexWeights.push( faceWeights[ ( i - 1 ) * 4 + 1 ] ); + buffers.vertexWeights.push( faceWeights[ ( i - 1 ) * 4 + 2 ] ); + buffers.vertexWeights.push( faceWeights[ ( i - 1 ) * 4 + 3 ] ); + + buffers.vertexWeights.push( faceWeights[ i * 4 ] ); + buffers.vertexWeights.push( faceWeights[ i * 4 + 1 ] ); + buffers.vertexWeights.push( faceWeights[ i * 4 + 2 ] ); + buffers.vertexWeights.push( faceWeights[ i * 4 + 3 ] ); + + buffers.weightsIndices.push( faceWeightIndices[ 0 ] ); + buffers.weightsIndices.push( faceWeightIndices[ 1 ] ); + buffers.weightsIndices.push( faceWeightIndices[ 2 ] ); + buffers.weightsIndices.push( faceWeightIndices[ 3 ] ); + + buffers.weightsIndices.push( faceWeightIndices[ ( i - 1 ) * 4 ] ); + buffers.weightsIndices.push( faceWeightIndices[ ( i - 1 ) * 4 + 1 ] ); + buffers.weightsIndices.push( faceWeightIndices[ ( i - 1 ) * 4 + 2 ] ); + buffers.weightsIndices.push( faceWeightIndices[ ( i - 1 ) * 4 + 3 ] ); + + buffers.weightsIndices.push( faceWeightIndices[ i * 4 ] ); + buffers.weightsIndices.push( faceWeightIndices[ i * 4 + 1 ] ); + buffers.weightsIndices.push( faceWeightIndices[ i * 4 + 2 ] ); + buffers.weightsIndices.push( faceWeightIndices[ i * 4 + 3 ] ); + + } + + if ( geoInfo.color ) { + + buffers.colors.push( faceColors[ 0 ] ); + buffers.colors.push( faceColors[ 1 ] ); + buffers.colors.push( faceColors[ 2 ] ); + + buffers.colors.push( faceColors[ ( i - 1 ) * 3 ] ); + buffers.colors.push( faceColors[ ( i - 1 ) * 3 + 1 ] ); + buffers.colors.push( faceColors[ ( i - 1 ) * 3 + 2 ] ); + + buffers.colors.push( faceColors[ i * 3 ] ); + buffers.colors.push( faceColors[ i * 3 + 1 ] ); + buffers.colors.push( faceColors[ i * 3 + 2 ] ); + + } + + if ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) { + + buffers.materialIndex.push( materialIndex ); + buffers.materialIndex.push( materialIndex ); + buffers.materialIndex.push( materialIndex ); + + } + + if ( geoInfo.normal ) { + + buffers.normal.push( faceNormals[ 0 ] ); + buffers.normal.push( faceNormals[ 1 ] ); + buffers.normal.push( faceNormals[ 2 ] ); + + buffers.normal.push( faceNormals[ ( i - 1 ) * 3 ] ); + buffers.normal.push( faceNormals[ ( i - 1 ) * 3 + 1 ] ); + buffers.normal.push( faceNormals[ ( i - 1 ) * 3 + 2 ] ); + + buffers.normal.push( faceNormals[ i * 3 ] ); + buffers.normal.push( faceNormals[ i * 3 + 1 ] ); + buffers.normal.push( faceNormals[ i * 3 + 2 ] ); + + } + + if ( geoInfo.uv ) { + + geoInfo.uv.forEach( function ( uv, j ) { + + if ( buffers.uvs[ j ] === undefined ) buffers.uvs[ j ] = []; + + buffers.uvs[ j ].push( faceUVs[ j ][ 0 ] ); + buffers.uvs[ j ].push( faceUVs[ j ][ 1 ] ); + + buffers.uvs[ j ].push( faceUVs[ j ][ ( i - 1 ) * 2 ] ); + buffers.uvs[ j ].push( faceUVs[ j ][ ( i - 1 ) * 2 + 1 ] ); + + buffers.uvs[ j ].push( faceUVs[ j ][ i * 2 ] ); + buffers.uvs[ j ].push( faceUVs[ j ][ i * 2 + 1 ] ); + + } ); + + } + + } + + }, + + addMorphTargets: function ( parentGeo, parentGeoNode, morphTarget, preTransform ) { + + if ( morphTarget === null ) return; + + parentGeo.morphAttributes.position = []; + // parentGeo.morphAttributes.normal = []; // not implemented + + var self = this; + morphTarget.rawTargets.forEach( function ( rawTarget ) { + + var morphGeoNode = fbxTree.Objects.Geometry[ rawTarget.geoID ]; + + if ( morphGeoNode !== undefined ) { + + self.genMorphGeometry( parentGeo, parentGeoNode, morphGeoNode, preTransform, rawTarget.name ); + + } + + } ); + + }, + + // a morph geometry node is similar to a standard node, and the node is also contained + // in FBXTree.Objects.Geometry, however it can only have attributes for position, normal + // and a special attribute Index defining which vertices of the original geometry are affected + // Normal and position attributes only have data for the vertices that are affected by the morph + genMorphGeometry: function ( parentGeo, parentGeoNode, morphGeoNode, preTransform, name ) { + + var morphGeo = new THREE.BufferGeometry(); + if ( morphGeoNode.attrName ) morphGeo.name = morphGeoNode.attrName; + + var vertexIndices = ( parentGeoNode.PolygonVertexIndex !== undefined ) ? parentGeoNode.PolygonVertexIndex.a : []; + + // make a copy of the parent's vertex positions + var vertexPositions = ( parentGeoNode.Vertices !== undefined ) ? parentGeoNode.Vertices.a.slice() : []; + + var morphPositions = ( morphGeoNode.Vertices !== undefined ) ? morphGeoNode.Vertices.a : []; + var indices = ( morphGeoNode.Indexes !== undefined ) ? morphGeoNode.Indexes.a : []; + + for ( var i = 0; i < indices.length; i ++ ) { + + var morphIndex = indices[ i ] * 3; + + // FBX format uses blend shapes rather than morph targets. This can be converted + // by additively combining the blend shape positions with the original geometry's positions + vertexPositions[ morphIndex ] += morphPositions[ i * 3 ]; + vertexPositions[ morphIndex + 1 ] += morphPositions[ i * 3 + 1 ]; + vertexPositions[ morphIndex + 2 ] += morphPositions[ i * 3 + 2 ]; + + } + + // TODO: add morph normal support + var morphGeoInfo = { + vertexIndices: vertexIndices, + vertexPositions: vertexPositions, + }; + + var morphBuffers = this.genBuffers( morphGeoInfo ); + + var positionAttribute = new THREE.Float32BufferAttribute( morphBuffers.vertex, 3 ); + positionAttribute.name = name || morphGeoNode.attrName; + + preTransform.applyToBufferAttribute( positionAttribute ); + + parentGeo.morphAttributes.position.push( positionAttribute ); + + }, + + // Parse normal from FBXTree.Objects.Geometry.LayerElementNormal if it exists + parseNormals: function ( NormalNode ) { + + var mappingType = NormalNode.MappingInformationType; + var referenceType = NormalNode.ReferenceInformationType; + var buffer = NormalNode.Normals.a; + var indexBuffer = []; + if ( referenceType === 'IndexToDirect' ) { + + if ( 'NormalIndex' in NormalNode ) { + + indexBuffer = NormalNode.NormalIndex.a; + + } else if ( 'NormalsIndex' in NormalNode ) { + + indexBuffer = NormalNode.NormalsIndex.a; + + } + + } + + return { + dataSize: 3, + buffer: buffer, + indices: indexBuffer, + mappingType: mappingType, + referenceType: referenceType + }; + + }, + + // Parse UVs from FBXTree.Objects.Geometry.LayerElementUV if it exists + parseUVs: function ( UVNode ) { + + var mappingType = UVNode.MappingInformationType; + var referenceType = UVNode.ReferenceInformationType; + var buffer = UVNode.UV.a; + var indexBuffer = []; + if ( referenceType === 'IndexToDirect' ) { + + indexBuffer = UVNode.UVIndex.a; + + } + + return { + dataSize: 2, + buffer: buffer, + indices: indexBuffer, + mappingType: mappingType, + referenceType: referenceType + }; + + }, + + // Parse Vertex Colors from FBXTree.Objects.Geometry.LayerElementColor if it exists + parseVertexColors: function ( ColorNode ) { + + var mappingType = ColorNode.MappingInformationType; + var referenceType = ColorNode.ReferenceInformationType; + var buffer = ColorNode.Colors.a; + var indexBuffer = []; + if ( referenceType === 'IndexToDirect' ) { + + indexBuffer = ColorNode.ColorIndex.a; + + } + + return { + dataSize: 4, + buffer: buffer, + indices: indexBuffer, + mappingType: mappingType, + referenceType: referenceType + }; + + }, + + // Parse mapping and material data in FBXTree.Objects.Geometry.LayerElementMaterial if it exists + parseMaterialIndices: function ( MaterialNode ) { + + var mappingType = MaterialNode.MappingInformationType; + var referenceType = MaterialNode.ReferenceInformationType; + + if ( mappingType === 'NoMappingInformation' ) { + + return { + dataSize: 1, + buffer: [ 0 ], + indices: [ 0 ], + mappingType: 'AllSame', + referenceType: referenceType + }; + + } + + var materialIndexBuffer = MaterialNode.Materials.a; + + // Since materials are stored as indices, there's a bit of a mismatch between FBX and what + // we expect.So we create an intermediate buffer that points to the index in the buffer, + // for conforming with the other functions we've written for other data. + var materialIndices = []; + + for ( var i = 0; i < materialIndexBuffer.length; ++ i ) { + + materialIndices.push( i ); + + } + + return { + dataSize: 1, + buffer: materialIndexBuffer, + indices: materialIndices, + mappingType: mappingType, + referenceType: referenceType + }; + + }, + + // Generate a NurbGeometry from a node in FBXTree.Objects.Geometry + parseNurbsGeometry: function ( geoNode ) { + + if ( THREE.NURBSCurve === undefined ) { + + console.error( 'THREE.FBXLoader: The loader relies on THREE.NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry.' ); + return new THREE.BufferGeometry(); + + } + + var order = parseInt( geoNode.Order ); + + if ( isNaN( order ) ) { + + console.error( 'THREE.FBXLoader: Invalid Order %s given for geometry ID: %s', geoNode.Order, geoNode.id ); + return new THREE.BufferGeometry(); + + } + + var degree = order - 1; + + var knots = geoNode.KnotVector.a; + var controlPoints = []; + var pointsValues = geoNode.Points.a; + + for ( var i = 0, l = pointsValues.length; i < l; i += 4 ) { + + controlPoints.push( new THREE.Vector4().fromArray( pointsValues, i ) ); + + } + + var startKnot, endKnot; + + if ( geoNode.Form === 'Closed' ) { + + controlPoints.push( controlPoints[ 0 ] ); + + } else if ( geoNode.Form === 'Periodic' ) { + + startKnot = degree; + endKnot = knots.length - 1 - startKnot; + + for ( var i = 0; i < degree; ++ i ) { + + controlPoints.push( controlPoints[ i ] ); + + } + + } + + var curve = new THREE.NURBSCurve( degree, knots, controlPoints, startKnot, endKnot ); + var vertices = curve.getPoints( controlPoints.length * 7 ); + + var positions = new Float32Array( vertices.length * 3 ); + + vertices.forEach( function ( vertex, i ) { + + vertex.toArray( positions, i * 3 ); + + } ); + + var geometry = new THREE.BufferGeometry(); + geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) ); + + return geometry; + + }, + + }; + + // parse animation data from FBXTree + function AnimationParser() {} + + AnimationParser.prototype = { + + constructor: AnimationParser, + + // take raw animation clips and turn them into three.js animation clips + parse: function () { + + var animationClips = []; + + var rawClips = this.parseClips(); + + if ( rawClips !== undefined ) { + + for ( var key in rawClips ) { + + var rawClip = rawClips[ key ]; + + var clip = this.addClip( rawClip ); + + animationClips.push( clip ); + + } + + } + + return animationClips; + + }, + + parseClips: function () { + + // since the actual transformation data is stored in FBXTree.Objects.AnimationCurve, + // if this is undefined we can safely assume there are no animations + if ( fbxTree.Objects.AnimationCurve === undefined ) return undefined; + + var curveNodesMap = this.parseAnimationCurveNodes(); + + this.parseAnimationCurves( curveNodesMap ); + + var layersMap = this.parseAnimationLayers( curveNodesMap ); + var rawClips = this.parseAnimStacks( layersMap ); + + return rawClips; + + }, + + // parse nodes in FBXTree.Objects.AnimationCurveNode + // each AnimationCurveNode holds data for an animation transform for a model (e.g. left arm rotation ) + // and is referenced by an AnimationLayer + parseAnimationCurveNodes: function () { + + var rawCurveNodes = fbxTree.Objects.AnimationCurveNode; + + var curveNodesMap = new Map(); + + for ( var nodeID in rawCurveNodes ) { + + var rawCurveNode = rawCurveNodes[ nodeID ]; + + if ( rawCurveNode.attrName.match( /S|R|T|DeformPercent/ ) !== null ) { + + var curveNode = { + + id: rawCurveNode.id, + attr: rawCurveNode.attrName, + curves: {}, + + }; + + curveNodesMap.set( curveNode.id, curveNode ); + + } + + } + + return curveNodesMap; + + }, + + // parse nodes in FBXTree.Objects.AnimationCurve and connect them up to + // previously parsed AnimationCurveNodes. Each AnimationCurve holds data for a single animated + // axis ( e.g. times and values of x rotation) + parseAnimationCurves: function ( curveNodesMap ) { + + var rawCurves = fbxTree.Objects.AnimationCurve; + + // TODO: Many values are identical up to roundoff error, but won't be optimised + // e.g. position times: [0, 0.4, 0. 8] + // position values: [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.235384487103147e-7, 93.67520904541016, -0.9982695579528809] + // clearly, this should be optimised to + // times: [0], positions [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809] + // this shows up in nearly every FBX file, and generally time array is length > 100 + + for ( var nodeID in rawCurves ) { + + var animationCurve = { + + id: rawCurves[ nodeID ].id, + times: rawCurves[ nodeID ].KeyTime.a.map( convertFBXTimeToSeconds ), + values: rawCurves[ nodeID ].KeyValueFloat.a, + + }; + + var relationships = connections.get( animationCurve.id ); + + if ( relationships !== undefined ) { + + var animationCurveID = relationships.parents[ 0 ].ID; + var animationCurveRelationship = relationships.parents[ 0 ].relationship; + + if ( animationCurveRelationship.match( /X/ ) ) { + + curveNodesMap.get( animationCurveID ).curves[ 'x' ] = animationCurve; + + } else if ( animationCurveRelationship.match( /Y/ ) ) { + + curveNodesMap.get( animationCurveID ).curves[ 'y' ] = animationCurve; + + } else if ( animationCurveRelationship.match( /Z/ ) ) { + + curveNodesMap.get( animationCurveID ).curves[ 'z' ] = animationCurve; + + } else if ( animationCurveRelationship.match( /d|DeformPercent/ ) && curveNodesMap.has( animationCurveID ) ) { + + curveNodesMap.get( animationCurveID ).curves[ 'morph' ] = animationCurve; + + } + + } + + } + + }, + + // parse nodes in FBXTree.Objects.AnimationLayer. Each layers holds references + // to various AnimationCurveNodes and is referenced by an AnimationStack node + // note: theoretically a stack can have multiple layers, however in practice there always seems to be one per stack + parseAnimationLayers: function ( curveNodesMap ) { + + var rawLayers = fbxTree.Objects.AnimationLayer; + + var layersMap = new Map(); + + for ( var nodeID in rawLayers ) { + + var layerCurveNodes = []; + + var connection = connections.get( parseInt( nodeID ) ); + + if ( connection !== undefined ) { + + // all the animationCurveNodes used in the layer + var children = connection.children; + + children.forEach( function ( child, i ) { + + if ( curveNodesMap.has( child.ID ) ) { + + var curveNode = curveNodesMap.get( child.ID ); + + // check that the curves are defined for at least one axis, otherwise ignore the curveNode + if ( curveNode.curves.x !== undefined || curveNode.curves.y !== undefined || curveNode.curves.z !== undefined ) { + + if ( layerCurveNodes[ i ] === undefined ) { + + var modelID = connections.get( child.ID ).parents.filter( function ( parent ) { + + return parent.relationship !== undefined; + + } )[ 0 ].ID; + + if ( modelID !== undefined ) { + + var rawModel = fbxTree.Objects.Model[ modelID.toString() ]; + + var node = { + + modelName: THREE.PropertyBinding.sanitizeNodeName( rawModel.attrName ), + ID: rawModel.id, + initialPosition: [ 0, 0, 0 ], + initialRotation: [ 0, 0, 0 ], + initialScale: [ 1, 1, 1 ], + + }; + + sceneGraph.traverse( function ( child ) { + + if ( child.ID === rawModel.id ) { + + node.transform = child.matrix; + + if ( child.userData.transformData ) node.eulerOrder = child.userData.transformData.eulerOrder; + + } + + } ); + + if ( ! node.transform ) node.transform = new THREE.Matrix4(); + + // if the animated model is pre rotated, we'll have to apply the pre rotations to every + // animation value as well + if ( 'PreRotation' in rawModel ) node.preRotation = rawModel.PreRotation.value; + if ( 'PostRotation' in rawModel ) node.postRotation = rawModel.PostRotation.value; + + layerCurveNodes[ i ] = node; + + } + + } + + if ( layerCurveNodes[ i ] ) layerCurveNodes[ i ][ curveNode.attr ] = curveNode; + + } else if ( curveNode.curves.morph !== undefined ) { + + if ( layerCurveNodes[ i ] === undefined ) { + + var deformerID = connections.get( child.ID ).parents.filter( function ( parent ) { + + return parent.relationship !== undefined; + + } )[ 0 ].ID; + + var morpherID = connections.get( deformerID ).parents[ 0 ].ID; + var geoID = connections.get( morpherID ).parents[ 0 ].ID; + + // assuming geometry is not used in more than one model + var modelID = connections.get( geoID ).parents[ 0 ].ID; + + var rawModel = fbxTree.Objects.Model[ modelID ]; + + var node = { + + modelName: THREE.PropertyBinding.sanitizeNodeName( rawModel.attrName ), + morphName: fbxTree.Objects.Deformer[ deformerID ].attrName, + + }; + + layerCurveNodes[ i ] = node; + + } + + layerCurveNodes[ i ][ curveNode.attr ] = curveNode; + + } + + } + + } ); + + layersMap.set( parseInt( nodeID ), layerCurveNodes ); + + } + + } + + return layersMap; + + }, + + // parse nodes in FBXTree.Objects.AnimationStack. These are the top level node in the animation + // hierarchy. Each Stack node will be used to create a THREE.AnimationClip + parseAnimStacks: function ( layersMap ) { + + var rawStacks = fbxTree.Objects.AnimationStack; + + // connect the stacks (clips) up to the layers + var rawClips = {}; + + for ( var nodeID in rawStacks ) { + + var children = connections.get( parseInt( nodeID ) ).children; + + if ( children.length > 1 ) { + + // it seems like stacks will always be associated with a single layer. But just in case there are files + // where there are multiple layers per stack, we'll display a warning + console.warn( 'THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.' ); + + } + + var layer = layersMap.get( children[ 0 ].ID ); + + rawClips[ nodeID ] = { + + name: rawStacks[ nodeID ].attrName, + layer: layer, + + }; + + } + + return rawClips; + + }, + + addClip: function ( rawClip ) { + + var tracks = []; + + var self = this; + rawClip.layer.forEach( function ( rawTracks ) { + + tracks = tracks.concat( self.generateTracks( rawTracks ) ); + + } ); + + return new THREE.AnimationClip( rawClip.name, - 1, tracks ); + + }, + + generateTracks: function ( rawTracks ) { + + var tracks = []; + + var initialPosition = new THREE.Vector3(); + var initialRotation = new THREE.Quaternion(); + var initialScale = new THREE.Vector3(); + + if ( rawTracks.transform ) rawTracks.transform.decompose( initialPosition, initialRotation, initialScale ); + + initialPosition = initialPosition.toArray(); + initialRotation = new THREE.Euler().setFromQuaternion( initialRotation, rawTracks.eulerOrder ).toArray(); + initialScale = initialScale.toArray(); + + if ( rawTracks.T !== undefined && Object.keys( rawTracks.T.curves ).length > 0 ) { + + var positionTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.T.curves, initialPosition, 'position' ); + if ( positionTrack !== undefined ) tracks.push( positionTrack ); + + } + + if ( rawTracks.R !== undefined && Object.keys( rawTracks.R.curves ).length > 0 ) { + + var rotationTrack = this.generateRotationTrack( rawTracks.modelName, rawTracks.R.curves, initialRotation, rawTracks.preRotation, rawTracks.postRotation, rawTracks.eulerOrder ); + if ( rotationTrack !== undefined ) tracks.push( rotationTrack ); + + } + + if ( rawTracks.S !== undefined && Object.keys( rawTracks.S.curves ).length > 0 ) { + + var scaleTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.S.curves, initialScale, 'scale' ); + if ( scaleTrack !== undefined ) tracks.push( scaleTrack ); + + } + + if ( rawTracks.DeformPercent !== undefined ) { + + var morphTrack = this.generateMorphTrack( rawTracks ); + if ( morphTrack !== undefined ) tracks.push( morphTrack ); + + } + + return tracks; + + }, + + generateVectorTrack: function ( modelName, curves, initialValue, type ) { + + var times = this.getTimesForAllAxes( curves ); + var values = this.getKeyframeTrackValues( times, curves, initialValue ); + + return new THREE.VectorKeyframeTrack( modelName + '.' + type, times, values ); + + }, + + generateRotationTrack: function ( modelName, curves, initialValue, preRotation, postRotation, eulerOrder ) { + + if ( curves.x !== undefined ) { + + this.interpolateRotations( curves.x ); + curves.x.values = curves.x.values.map( THREE.Math.degToRad ); + + } + if ( curves.y !== undefined ) { + + this.interpolateRotations( curves.y ); + curves.y.values = curves.y.values.map( THREE.Math.degToRad ); + + } + if ( curves.z !== undefined ) { + + this.interpolateRotations( curves.z ); + curves.z.values = curves.z.values.map( THREE.Math.degToRad ); + + } + + var times = this.getTimesForAllAxes( curves ); + var values = this.getKeyframeTrackValues( times, curves, initialValue ); + + if ( preRotation !== undefined ) { + + preRotation = preRotation.map( THREE.Math.degToRad ); + preRotation.push( eulerOrder ); + + preRotation = new THREE.Euler().fromArray( preRotation ); + preRotation = new THREE.Quaternion().setFromEuler( preRotation ); + + } + + if ( postRotation !== undefined ) { + + postRotation = postRotation.map( THREE.Math.degToRad ); + postRotation.push( eulerOrder ); + + postRotation = new THREE.Euler().fromArray( postRotation ); + postRotation = new THREE.Quaternion().setFromEuler( postRotation ).inverse(); + + } + + var quaternion = new THREE.Quaternion(); + var euler = new THREE.Euler(); + + var quaternionValues = []; + + for ( var i = 0; i < values.length; i += 3 ) { + + euler.set( values[ i ], values[ i + 1 ], values[ i + 2 ], eulerOrder ); + + quaternion.setFromEuler( euler ); + + if ( preRotation !== undefined ) quaternion.premultiply( preRotation ); + if ( postRotation !== undefined ) quaternion.multiply( postRotation ); + + quaternion.toArray( quaternionValues, ( i / 3 ) * 4 ); + + } + + return new THREE.QuaternionKeyframeTrack( modelName + '.quaternion', times, quaternionValues ); + + }, + + generateMorphTrack: function ( rawTracks ) { + + var curves = rawTracks.DeformPercent.curves.morph; + var values = curves.values.map( function ( val ) { + + return val / 100; + + } ); + + var morphNum = sceneGraph.getObjectByName( rawTracks.modelName ).morphTargetDictionary[ rawTracks.morphName ]; + + return new THREE.NumberKeyframeTrack( rawTracks.modelName + '.morphTargetInfluences[' + morphNum + ']', curves.times, values ); + + }, + + // For all animated objects, times are defined separately for each axis + // Here we'll combine the times into one sorted array without duplicates + getTimesForAllAxes: function ( curves ) { + + var times = []; + + // first join together the times for each axis, if defined + if ( curves.x !== undefined ) times = times.concat( curves.x.times ); + if ( curves.y !== undefined ) times = times.concat( curves.y.times ); + if ( curves.z !== undefined ) times = times.concat( curves.z.times ); + + // then sort them and remove duplicates + times = times.sort( function ( a, b ) { + + return a - b; + + } ).filter( function ( elem, index, array ) { + + return array.indexOf( elem ) == index; + + } ); + + return times; + + }, + + getKeyframeTrackValues: function ( times, curves, initialValue ) { + + var prevValue = initialValue; + + var values = []; + + var xIndex = - 1; + var yIndex = - 1; + var zIndex = - 1; + + times.forEach( function ( time ) { + + if ( curves.x ) xIndex = curves.x.times.indexOf( time ); + if ( curves.y ) yIndex = curves.y.times.indexOf( time ); + if ( curves.z ) zIndex = curves.z.times.indexOf( time ); + + // if there is an x value defined for this frame, use that + if ( xIndex !== - 1 ) { + + var xValue = curves.x.values[ xIndex ]; + values.push( xValue ); + prevValue[ 0 ] = xValue; + + } else { + + // otherwise use the x value from the previous frame + values.push( prevValue[ 0 ] ); + + } + + if ( yIndex !== - 1 ) { + + var yValue = curves.y.values[ yIndex ]; + values.push( yValue ); + prevValue[ 1 ] = yValue; + + } else { + + values.push( prevValue[ 1 ] ); + + } + + if ( zIndex !== - 1 ) { + + var zValue = curves.z.values[ zIndex ]; + values.push( zValue ); + prevValue[ 2 ] = zValue; + + } else { + + values.push( prevValue[ 2 ] ); + + } + + } ); + + return values; + + }, + + // Rotations are defined as Euler angles which can have values of any size + // These will be converted to quaternions which don't support values greater than + // PI, so we'll interpolate large rotations + interpolateRotations: function ( curve ) { + + for ( var i = 1; i < curve.values.length; i ++ ) { + + var initialValue = curve.values[ i - 1 ]; + var valuesSpan = curve.values[ i ] - initialValue; + + var absoluteSpan = Math.abs( valuesSpan ); + + if ( absoluteSpan >= 180 ) { + + var numSubIntervals = absoluteSpan / 180; + + var step = valuesSpan / numSubIntervals; + var nextValue = initialValue + step; + + var initialTime = curve.times[ i - 1 ]; + var timeSpan = curve.times[ i ] - initialTime; + var interval = timeSpan / numSubIntervals; + var nextTime = initialTime + interval; + + var interpolatedTimes = []; + var interpolatedValues = []; + + while ( nextTime < curve.times[ i ] ) { + + interpolatedTimes.push( nextTime ); + nextTime += interval; + + interpolatedValues.push( nextValue ); + nextValue += step; + + } + + curve.times = inject( curve.times, i, interpolatedTimes ); + curve.values = inject( curve.values, i, interpolatedValues ); + + } + + } + + }, + + }; + + // parse an FBX file in ASCII format + function TextParser() {} + + TextParser.prototype = { + + constructor: TextParser, + + getPrevNode: function () { + + return this.nodeStack[ this.currentIndent - 2 ]; + + }, + + getCurrentNode: function () { + + return this.nodeStack[ this.currentIndent - 1 ]; + + }, + + getCurrentProp: function () { + + return this.currentProp; + + }, + + pushStack: function ( node ) { + + this.nodeStack.push( node ); + this.currentIndent += 1; + + }, + + popStack: function () { + + this.nodeStack.pop(); + this.currentIndent -= 1; + + }, + + setCurrentProp: function ( val, name ) { + + this.currentProp = val; + this.currentPropName = name; + + }, + + parse: function ( text ) { + + this.currentIndent = 0; + + this.allNodes = new FBXTree(); + this.nodeStack = []; + this.currentProp = []; + this.currentPropName = ''; + + var self = this; + + var split = text.split( /[\r\n]+/ ); + + split.forEach( function ( line, i ) { + + var matchComment = line.match( /^[\s\t]*;/ ); + var matchEmpty = line.match( /^[\s\t]*$/ ); + + if ( matchComment || matchEmpty ) return; + + var matchBeginning = line.match( '^\\t{' + self.currentIndent + '}(\\w+):(.*){', '' ); + var matchProperty = line.match( '^\\t{' + ( self.currentIndent ) + '}(\\w+):[\\s\\t\\r\\n](.*)' ); + var matchEnd = line.match( '^\\t{' + ( self.currentIndent - 1 ) + '}}' ); + + if ( matchBeginning ) { + + self.parseNodeBegin( line, matchBeginning ); + + } else if ( matchProperty ) { + + self.parseNodeProperty( line, matchProperty, split[ ++ i ] ); + + } else if ( matchEnd ) { + + self.popStack(); + + } else if ( line.match( /^[^\s\t}]/ ) ) { + + // large arrays are split over multiple lines terminated with a ',' character + // if this is encountered the line needs to be joined to the previous line + self.parseNodePropertyContinued( line ); + + } + + } ); + + return this.allNodes; + + }, + + parseNodeBegin: function ( line, property ) { + + var nodeName = property[ 1 ].trim().replace( /^"/, '' ).replace( /"$/, '' ); + + var nodeAttrs = property[ 2 ].split( ',' ).map( function ( attr ) { + + return attr.trim().replace( /^"/, '' ).replace( /"$/, '' ); + + } ); + + var node = { name: nodeName }; + var attrs = this.parseNodeAttr( nodeAttrs ); + + var currentNode = this.getCurrentNode(); + + // a top node + if ( this.currentIndent === 0 ) { + + this.allNodes.add( nodeName, node ); + + } else { // a subnode + + // if the subnode already exists, append it + if ( nodeName in currentNode ) { + + // special case Pose needs PoseNodes as an array + if ( nodeName === 'PoseNode' ) { + + currentNode.PoseNode.push( node ); + + } else if ( currentNode[ nodeName ].id !== undefined ) { + + currentNode[ nodeName ] = {}; + currentNode[ nodeName ][ currentNode[ nodeName ].id ] = currentNode[ nodeName ]; + + } + + if ( attrs.id !== '' ) currentNode[ nodeName ][ attrs.id ] = node; + + } else if ( typeof attrs.id === 'number' ) { + + currentNode[ nodeName ] = {}; + currentNode[ nodeName ][ attrs.id ] = node; + + } else if ( nodeName !== 'Properties70' ) { + + if ( nodeName === 'PoseNode' ) currentNode[ nodeName ] = [ node ]; + else currentNode[ nodeName ] = node; + + } + + } + + if ( typeof attrs.id === 'number' ) node.id = attrs.id; + if ( attrs.name !== '' ) node.attrName = attrs.name; + if ( attrs.type !== '' ) node.attrType = attrs.type; + + this.pushStack( node ); + + }, + + parseNodeAttr: function ( attrs ) { + + var id = attrs[ 0 ]; + + if ( attrs[ 0 ] !== '' ) { + + id = parseInt( attrs[ 0 ] ); + + if ( isNaN( id ) ) { + + id = attrs[ 0 ]; + + } + + } + + var name = '', type = ''; + + if ( attrs.length > 1 ) { + + name = attrs[ 1 ].replace( /^(\w+)::/, '' ); + type = attrs[ 2 ]; + + } + + return { id: id, name: name, type: type }; + + }, + + parseNodeProperty: function ( line, property, contentLine ) { + + var propName = property[ 1 ].replace( /^"/, '' ).replace( /"$/, '' ).trim(); + var propValue = property[ 2 ].replace( /^"/, '' ).replace( /"$/, '' ).trim(); + + // for special case: base64 image data follows "Content: ," line + // Content: , + // "/9j/4RDaRXhpZgAATU0A..." + if ( propName === 'Content' && propValue === ',' ) { + + propValue = contentLine.replace( /"/g, '' ).replace( /,$/, '' ).trim(); + + } + + var currentNode = this.getCurrentNode(); + var parentName = currentNode.name; + + if ( parentName === 'Properties70' ) { + + this.parseNodeSpecialProperty( line, propName, propValue ); + return; + + } + + // Connections + if ( propName === 'C' ) { + + var connProps = propValue.split( ',' ).slice( 1 ); + var from = parseInt( connProps[ 0 ] ); + var to = parseInt( connProps[ 1 ] ); + + var rest = propValue.split( ',' ).slice( 3 ); + + rest = rest.map( function ( elem ) { + + return elem.trim().replace( /^"/, '' ); + + } ); + + propName = 'connections'; + propValue = [ from, to ]; + append( propValue, rest ); + + if ( currentNode[ propName ] === undefined ) { + + currentNode[ propName ] = []; + + } + + } + + // Node + if ( propName === 'Node' ) currentNode.id = propValue; + + // connections + if ( propName in currentNode && Array.isArray( currentNode[ propName ] ) ) { + + currentNode[ propName ].push( propValue ); + + } else { + + if ( propName !== 'a' ) currentNode[ propName ] = propValue; + else currentNode.a = propValue; + + } + + this.setCurrentProp( currentNode, propName ); + + // convert string to array, unless it ends in ',' in which case more will be added to it + if ( propName === 'a' && propValue.slice( - 1 ) !== ',' ) { + + currentNode.a = parseNumberArray( propValue ); + + } + + }, + + parseNodePropertyContinued: function ( line ) { + + var currentNode = this.getCurrentNode(); + + currentNode.a += line; + + // if the line doesn't end in ',' we have reached the end of the property value + // so convert the string to an array + if ( line.slice( - 1 ) !== ',' ) { + + currentNode.a = parseNumberArray( currentNode.a ); + + } + + }, + + // parse "Property70" + parseNodeSpecialProperty: function ( line, propName, propValue ) { + + // split this + // P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + // into array like below + // ["Lcl Scaling", "Lcl Scaling", "", "A", "1,1,1" ] + var props = propValue.split( '",' ).map( function ( prop ) { + + return prop.trim().replace( /^\"/, '' ).replace( /\s/, '_' ); + + } ); + + var innerPropName = props[ 0 ]; + var innerPropType1 = props[ 1 ]; + var innerPropType2 = props[ 2 ]; + var innerPropFlag = props[ 3 ]; + var innerPropValue = props[ 4 ]; + + // cast values where needed, otherwise leave as strings + switch ( innerPropType1 ) { + + case 'int': + case 'enum': + case 'bool': + case 'ULongLong': + case 'double': + case 'Number': + case 'FieldOfView': + innerPropValue = parseFloat( innerPropValue ); + break; + + case 'Color': + case 'ColorRGB': + case 'Vector3D': + case 'Lcl_Translation': + case 'Lcl_Rotation': + case 'Lcl_Scaling': + innerPropValue = parseNumberArray( innerPropValue ); + break; + + } + + // CAUTION: these props must append to parent's parent + this.getPrevNode()[ innerPropName ] = { + + 'type': innerPropType1, + 'type2': innerPropType2, + 'flag': innerPropFlag, + 'value': innerPropValue + + }; + + this.setCurrentProp( this.getPrevNode(), innerPropName ); + + }, + + }; + + // Parse an FBX file in Binary format + function BinaryParser() {} + + BinaryParser.prototype = { + + constructor: BinaryParser, + + parse: function ( buffer ) { + + var reader = new BinaryReader( buffer ); + reader.skip( 23 ); // skip magic 23 bytes + + var version = reader.getUint32(); + + //console.log( 'THREE.FBXLoader: FBX binary version: ' + version ); + + var allNodes = new FBXTree(); + + while ( ! this.endOfContent( reader ) ) { + + var node = this.parseNode( reader, version ); + if ( node !== null ) allNodes.add( node.name, node ); + + } + + return allNodes; + + }, + + // Check if reader has reached the end of content. + endOfContent: function ( reader ) { + + // footer size: 160bytes + 16-byte alignment padding + // - 16bytes: magic + // - padding til 16-byte alignment (at least 1byte?) + // (seems like some exporters embed fixed 15 or 16bytes?) + // - 4bytes: magic + // - 4bytes: version + // - 120bytes: zero + // - 16bytes: magic + if ( reader.size() % 16 === 0 ) { + + return ( ( reader.getOffset() + 160 + 16 ) & ~ 0xf ) >= reader.size(); + + } else { + + return reader.getOffset() + 160 + 16 >= reader.size(); + + } + + }, + + // recursively parse nodes until the end of the file is reached + parseNode: function ( reader, version ) { + + var node = {}; + + // The first three data sizes depends on version. + var endOffset = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); + var numProperties = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); + + // note: do not remove this even if you get a linter warning as it moves the buffer forward + var propertyListLen = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); + + var nameLen = reader.getUint8(); + var name = reader.getString( nameLen ); + + // Regards this node as NULL-record if endOffset is zero + if ( endOffset === 0 ) return null; + + var propertyList = []; + + for ( var i = 0; i < numProperties; i ++ ) { + + propertyList.push( this.parseProperty( reader ) ); + + } + + // Regards the first three elements in propertyList as id, attrName, and attrType + var id = propertyList.length > 0 ? propertyList[ 0 ] : ''; + var attrName = propertyList.length > 1 ? propertyList[ 1 ] : ''; + var attrType = propertyList.length > 2 ? propertyList[ 2 ] : ''; + + // check if this node represents just a single property + // like (name, 0) set or (name2, [0, 1, 2]) set of {name: 0, name2: [0, 1, 2]} + node.singleProperty = ( numProperties === 1 && reader.getOffset() === endOffset ) ? true : false; + + while ( endOffset > reader.getOffset() ) { + + var subNode = this.parseNode( reader, version ); + + if ( subNode !== null ) this.parseSubNode( name, node, subNode ); + + } + + node.propertyList = propertyList; // raw property list used by parent + + if ( typeof id === 'number' ) node.id = id; + if ( attrName !== '' ) node.attrName = attrName; + if ( attrType !== '' ) node.attrType = attrType; + if ( name !== '' ) node.name = name; + + return node; + + }, + + parseSubNode: function ( name, node, subNode ) { + + // special case: child node is single property + if ( subNode.singleProperty === true ) { + + var value = subNode.propertyList[ 0 ]; + + if ( Array.isArray( value ) ) { + + node[ subNode.name ] = subNode; + + subNode.a = value; + + } else { + + node[ subNode.name ] = value; + + } + + } else if ( name === 'Connections' && subNode.name === 'C' ) { + + var array = []; + + subNode.propertyList.forEach( function ( property, i ) { + + // first Connection is FBX type (OO, OP, etc.). We'll discard these + if ( i !== 0 ) array.push( property ); + + } ); + + if ( node.connections === undefined ) { + + node.connections = []; + + } + + node.connections.push( array ); + + } else if ( subNode.name === 'Properties70' ) { + + var keys = Object.keys( subNode ); + + keys.forEach( function ( key ) { + + node[ key ] = subNode[ key ]; + + } ); + + } else if ( name === 'Properties70' && subNode.name === 'P' ) { + + var innerPropName = subNode.propertyList[ 0 ]; + var innerPropType1 = subNode.propertyList[ 1 ]; + var innerPropType2 = subNode.propertyList[ 2 ]; + var innerPropFlag = subNode.propertyList[ 3 ]; + var innerPropValue; + + if ( innerPropName.indexOf( 'Lcl ' ) === 0 ) innerPropName = innerPropName.replace( 'Lcl ', 'Lcl_' ); + if ( innerPropType1.indexOf( 'Lcl ' ) === 0 ) innerPropType1 = innerPropType1.replace( 'Lcl ', 'Lcl_' ); + + if ( innerPropType1 === 'Color' || innerPropType1 === 'ColorRGB' || innerPropType1 === 'Vector' || innerPropType1 === 'Vector3D' || innerPropType1.indexOf( 'Lcl_' ) === 0 ) { + + innerPropValue = [ + subNode.propertyList[ 4 ], + subNode.propertyList[ 5 ], + subNode.propertyList[ 6 ] + ]; + + } else { + + innerPropValue = subNode.propertyList[ 4 ]; + + } + + // this will be copied to parent, see above + node[ innerPropName ] = { + + 'type': innerPropType1, + 'type2': innerPropType2, + 'flag': innerPropFlag, + 'value': innerPropValue + + }; + + } else if ( node[ subNode.name ] === undefined ) { + + if ( typeof subNode.id === 'number' ) { + + node[ subNode.name ] = {}; + node[ subNode.name ][ subNode.id ] = subNode; + + } else { + + node[ subNode.name ] = subNode; + + } + + } else { + + if ( subNode.name === 'PoseNode' ) { + + if ( ! Array.isArray( node[ subNode.name ] ) ) { + + node[ subNode.name ] = [ node[ subNode.name ] ]; + + } + + node[ subNode.name ].push( subNode ); + + } else if ( node[ subNode.name ][ subNode.id ] === undefined ) { + + node[ subNode.name ][ subNode.id ] = subNode; + + } + + } + + }, + + parseProperty: function ( reader ) { + + var type = reader.getString( 1 ); + + switch ( type ) { + + case 'C': + return reader.getBoolean(); + + case 'D': + return reader.getFloat64(); + + case 'F': + return reader.getFloat32(); + + case 'I': + return reader.getInt32(); + + case 'L': + return reader.getInt64(); + + case 'R': + var length = reader.getUint32(); + return reader.getArrayBuffer( length ); + + case 'S': + var length = reader.getUint32(); + return reader.getString( length ); + + case 'Y': + return reader.getInt16(); + + case 'b': + case 'c': + case 'd': + case 'f': + case 'i': + case 'l': + + var arrayLength = reader.getUint32(); + var encoding = reader.getUint32(); // 0: non-compressed, 1: compressed + var compressedLength = reader.getUint32(); + + if ( encoding === 0 ) { + + switch ( type ) { + + case 'b': + case 'c': + return reader.getBooleanArray( arrayLength ); + + case 'd': + return reader.getFloat64Array( arrayLength ); + + case 'f': + return reader.getFloat32Array( arrayLength ); + + case 'i': + return reader.getInt32Array( arrayLength ); + + case 'l': + return reader.getInt64Array( arrayLength ); + + } + + } + + if ( typeof Zlib === 'undefined' ) { + + console.error( 'THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js' ); + + } + + var inflate = new Zlib.Inflate( new Uint8Array( reader.getArrayBuffer( compressedLength ) ) ); // eslint-disable-line no-undef + var reader2 = new BinaryReader( inflate.decompress().buffer ); + + switch ( type ) { + + case 'b': + case 'c': + return reader2.getBooleanArray( arrayLength ); + + case 'd': + return reader2.getFloat64Array( arrayLength ); + + case 'f': + return reader2.getFloat32Array( arrayLength ); + + case 'i': + return reader2.getInt32Array( arrayLength ); + + case 'l': + return reader2.getInt64Array( arrayLength ); + + } + + default: + throw new Error( 'THREE.FBXLoader: Unknown property type ' + type ); + + } + + } + + }; + + function BinaryReader( buffer, littleEndian ) { + + this.dv = new DataView( buffer ); + this.offset = 0; + this.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true; + + } + + BinaryReader.prototype = { + + constructor: BinaryReader, + + getOffset: function () { + + return this.offset; + + }, + + size: function () { + + return this.dv.buffer.byteLength; + + }, + + skip: function ( length ) { + + this.offset += length; + + }, + + // seems like true/false representation depends on exporter. + // true: 1 or 'Y'(=0x59), false: 0 or 'T'(=0x54) + // then sees LSB. + getBoolean: function () { + + return ( this.getUint8() & 1 ) === 1; + + }, + + getBooleanArray: function ( size ) { + + var a = []; + + for ( var i = 0; i < size; i ++ ) { + + a.push( this.getBoolean() ); + + } + + return a; + + }, + + getUint8: function () { + + var value = this.dv.getUint8( this.offset ); + this.offset += 1; + return value; + + }, + + getInt16: function () { + + var value = this.dv.getInt16( this.offset, this.littleEndian ); + this.offset += 2; + return value; + + }, + + getInt32: function () { + + var value = this.dv.getInt32( this.offset, this.littleEndian ); + this.offset += 4; + return value; + + }, + + getInt32Array: function ( size ) { + + var a = []; + + for ( var i = 0; i < size; i ++ ) { + + a.push( this.getInt32() ); + + } + + return a; + + }, + + getUint32: function () { + + var value = this.dv.getUint32( this.offset, this.littleEndian ); + this.offset += 4; + return value; + + }, + + // JavaScript doesn't support 64-bit integer so calculate this here + // 1 << 32 will return 1 so using multiply operation instead here. + // There's a possibility that this method returns wrong value if the value + // is out of the range between Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER. + // TODO: safely handle 64-bit integer + getInt64: function () { + + var low, high; + + if ( this.littleEndian ) { + + low = this.getUint32(); + high = this.getUint32(); + + } else { + + high = this.getUint32(); + low = this.getUint32(); + + } + + // calculate negative value + if ( high & 0x80000000 ) { + + high = ~ high & 0xFFFFFFFF; + low = ~ low & 0xFFFFFFFF; + + if ( low === 0xFFFFFFFF ) high = ( high + 1 ) & 0xFFFFFFFF; + + low = ( low + 1 ) & 0xFFFFFFFF; + + return - ( high * 0x100000000 + low ); + + } + + return high * 0x100000000 + low; + + }, + + getInt64Array: function ( size ) { + + var a = []; + + for ( var i = 0; i < size; i ++ ) { + + a.push( this.getInt64() ); + + } + + return a; + + }, + + // Note: see getInt64() comment + getUint64: function () { + + var low, high; + + if ( this.littleEndian ) { + + low = this.getUint32(); + high = this.getUint32(); + + } else { + + high = this.getUint32(); + low = this.getUint32(); + + } + + return high * 0x100000000 + low; + + }, + + getFloat32: function () { + + var value = this.dv.getFloat32( this.offset, this.littleEndian ); + this.offset += 4; + return value; + + }, + + getFloat32Array: function ( size ) { + + var a = []; + + for ( var i = 0; i < size; i ++ ) { + + a.push( this.getFloat32() ); + + } + + return a; + + }, + + getFloat64: function () { + + var value = this.dv.getFloat64( this.offset, this.littleEndian ); + this.offset += 8; + return value; + + }, + + getFloat64Array: function ( size ) { + + var a = []; + + for ( var i = 0; i < size; i ++ ) { + + a.push( this.getFloat64() ); + + } + + return a; + + }, + + getArrayBuffer: function ( size ) { + + var value = this.dv.buffer.slice( this.offset, this.offset + size ); + this.offset += size; + return value; + + }, + + getString: function ( size ) { + + // note: safari 9 doesn't support Uint8Array.indexOf; create intermediate array instead + var a = []; + + for ( var i = 0; i < size; i ++ ) { + + a[ i ] = this.getUint8(); + + } + + var nullByte = a.indexOf( 0 ); + if ( nullByte >= 0 ) a = a.slice( 0, nullByte ); + + return THREE.LoaderUtils.decodeText( new Uint8Array( a ) ); + + } + + }; + + // FBXTree holds a representation of the FBX data, returned by the TextParser ( FBX ASCII format) + // and BinaryParser( FBX Binary format) + function FBXTree() {} + + FBXTree.prototype = { + + constructor: FBXTree, + + add: function ( key, val ) { + + this[ key ] = val; + + }, + + }; + + // ************** UTILITY FUNCTIONS ************** + + function isFbxFormatBinary( buffer ) { + + var CORRECT = 'Kaydara FBX Binary \0'; + + return buffer.byteLength >= CORRECT.length && CORRECT === convertArrayBufferToString( buffer, 0, CORRECT.length ); + + } + + function isFbxFormatASCII( text ) { + + var CORRECT = [ 'K', 'a', 'y', 'd', 'a', 'r', 'a', '\\', 'F', 'B', 'X', '\\', 'B', 'i', 'n', 'a', 'r', 'y', '\\', '\\' ]; + + var cursor = 0; + + function read( offset ) { + + var result = text[ offset - 1 ]; + text = text.slice( cursor + offset ); + cursor ++; + return result; + + } + + for ( var i = 0; i < CORRECT.length; ++ i ) { + + var num = read( 1 ); + if ( num === CORRECT[ i ] ) { + + return false; + + } + + } + + return true; + + } + + function getFbxVersion( text ) { + + var versionRegExp = /FBXVersion: (\d+)/; + var match = text.match( versionRegExp ); + if ( match ) { + + var version = parseInt( match[ 1 ] ); + return version; + + } + throw new Error( 'THREE.FBXLoader: Cannot find the version number for the file given.' ); + + } + + // Converts FBX ticks into real time seconds. + function convertFBXTimeToSeconds( time ) { + + return time / 46186158000; + + } + + var dataArray = []; + + // extracts the data from the correct position in the FBX array based on indexing type + function getData( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { + + var index; + + switch ( infoObject.mappingType ) { + + case 'ByPolygonVertex' : + index = polygonVertexIndex; + break; + case 'ByPolygon' : + index = polygonIndex; + break; + case 'ByVertice' : + index = vertexIndex; + break; + case 'AllSame' : + index = infoObject.indices[ 0 ]; + break; + default : + console.warn( 'THREE.FBXLoader: unknown attribute mapping type ' + infoObject.mappingType ); + + } + + if ( infoObject.referenceType === 'IndexToDirect' ) index = infoObject.indices[ index ]; + + var from = index * infoObject.dataSize; + var to = from + infoObject.dataSize; + + return slice( dataArray, infoObject.buffer, from, to ); + + } + + var tempEuler = new THREE.Euler(); + var tempVec = new THREE.Vector3(); + + // generate transformation from FBX transform data + // ref: https://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_10CDD63C_79C1_4F2D_BB28_AD2BE65A02ED_htm + // ref: http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/_transformations_2main_8cxx-example.html,topicNumber=cpp_ref__transformations_2main_8cxx_example_htmlfc10a1e1-b18d-4e72-9dc0-70d0f1959f5e + function generateTransform( transformData ) { + + var lTranslationM = new THREE.Matrix4(); + var lPreRotationM = new THREE.Matrix4(); + var lRotationM = new THREE.Matrix4(); + var lPostRotationM = new THREE.Matrix4(); + + var lScalingM = new THREE.Matrix4(); + var lScalingPivotM = new THREE.Matrix4(); + var lScalingOffsetM = new THREE.Matrix4(); + var lRotationOffsetM = new THREE.Matrix4(); + var lRotationPivotM = new THREE.Matrix4(); + + var lParentGX = new THREE.Matrix4(); + var lGlobalT = new THREE.Matrix4(); + + var inheritType = ( transformData.inheritType ) ? transformData.inheritType : 0; + + if ( transformData.translation ) lTranslationM.setPosition( tempVec.fromArray( transformData.translation ) ); + + if ( transformData.preRotation ) { + + var array = transformData.preRotation.map( THREE.Math.degToRad ); + array.push( transformData.eulerOrder ); + lPreRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) ); + + } + + if ( transformData.rotation ) { + + var array = transformData.rotation.map( THREE.Math.degToRad ); + array.push( transformData.eulerOrder ); + lRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) ); + + } + + if ( transformData.postRotation ) { + + var array = transformData.postRotation.map( THREE.Math.degToRad ); + array.push( transformData.eulerOrder ); + lPostRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) ); + + } + + if ( transformData.scale ) lScalingM.scale( tempVec.fromArray( transformData.scale ) ); + + // Pivots and offsets + if ( transformData.scalingOffset ) lScalingOffsetM.setPosition( tempVec.fromArray( transformData.scalingOffset ) ); + if ( transformData.scalingPivot ) lScalingPivotM.setPosition( tempVec.fromArray( transformData.scalingPivot ) ); + if ( transformData.rotationOffset ) lRotationOffsetM.setPosition( tempVec.fromArray( transformData.rotationOffset ) ); + if ( transformData.rotationPivot ) lRotationPivotM.setPosition( tempVec.fromArray( transformData.rotationPivot ) ); + + // parent transform + if ( transformData.parentMatrixWorld ) lParentGX = transformData.parentMatrixWorld; + + // Global Rotation + var lLRM = lPreRotationM.multiply( lRotationM ).multiply( lPostRotationM ); + var lParentGRM = new THREE.Matrix4(); + lParentGX.extractRotation( lParentGRM ); + + // Global Shear*Scaling + var lParentTM = new THREE.Matrix4(); + var lLSM; + var lParentGSM; + var lParentGRSM; + + lParentTM.copyPosition( lParentGX ); + lParentGRSM = lParentTM.getInverse( lParentTM ).multiply( lParentGX ); + lParentGSM = lParentGRM.getInverse( lParentGRM ).multiply( lParentGRSM ); + lLSM = lScalingM; + + var lGlobalRS; + if ( inheritType === 0 ) { + + lGlobalRS = lParentGRM.multiply( lLRM ).multiply( lParentGSM ).multiply( lLSM ); + + } else if ( inheritType === 1 ) { + + lGlobalRS = lParentGRM.multiply( lParentGSM ).multiply( lLRM ).multiply( lLSM ); + + } else { + + var lParentLSM = new THREE.Matrix4().copy( lScalingM ); + + var lParentGSM_noLocal = lParentGSM.multiply( lParentLSM.getInverse( lParentLSM ) ); + + lGlobalRS = lParentGRM.multiply( lLRM ).multiply( lParentGSM_noLocal ).multiply( lLSM ); + + } + + // Calculate the local transform matrix + var lTransform = lTranslationM.multiply( lRotationOffsetM ).multiply( lRotationPivotM ).multiply( lPreRotationM ).multiply( lRotationM ).multiply( lPostRotationM ).multiply( lRotationPivotM.getInverse( lRotationPivotM ) ).multiply( lScalingOffsetM ).multiply( lScalingPivotM ).multiply( lScalingM ).multiply( lScalingPivotM.getInverse( lScalingPivotM ) ); + + var lLocalTWithAllPivotAndOffsetInfo = new THREE.Matrix4().copyPosition( lTransform ); + + var lGlobalTranslation = lParentGX.multiply( lLocalTWithAllPivotAndOffsetInfo ); + lGlobalT.copyPosition( lGlobalTranslation ); + + lTransform = lGlobalT.multiply( lGlobalRS ); + + return lTransform; + + } + + // Returns the three.js intrinsic Euler order corresponding to FBX extrinsic Euler order + // ref: http://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_euler_html + function getEulerOrder( order ) { + + order = order || 0; + + var enums = [ + 'ZYX', // -> XYZ extrinsic + 'YZX', // -> XZY extrinsic + 'XZY', // -> YZX extrinsic + 'ZXY', // -> YXZ extrinsic + 'YXZ', // -> ZXY extrinsic + 'XYZ', // -> ZYX extrinsic + //'SphericXYZ', // not possible to support + ]; + + if ( order === 6 ) { + + console.warn( 'THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.' ); + return enums[ 0 ]; + + } + + return enums[ order ]; + + } + + // Parses comma separated list of numbers and returns them an array. + // Used internally by the TextParser + function parseNumberArray( value ) { + + var array = value.split( ',' ).map( function ( val ) { + + return parseFloat( val ); + + } ); + + return array; + + } + + function convertArrayBufferToString( buffer, from, to ) { + + if ( from === undefined ) from = 0; + if ( to === undefined ) to = buffer.byteLength; + + return THREE.LoaderUtils.decodeText( new Uint8Array( buffer, from, to ) ); + + } + + function append( a, b ) { + + for ( var i = 0, j = a.length, l = b.length; i < l; i ++, j ++ ) { + + a[ j ] = b[ i ]; + + } + + } + + function slice( a, b, from, to ) { + + for ( var i = from, j = 0; i < to; i ++, j ++ ) { + + a[ j ] = b[ i ]; + + } + + return a; + + } + + // inject array a2 into array a1 at index + function inject( a1, index, a2 ) { + + return a1.slice( 0, index ).concat( a2 ).concat( a1.slice( index ) ); + + } + + return FBXLoader; + +} )(); diff --git a/src/jlmap3d/main/loaders/FBXLoader2.js b/src/jlmap3d/main/loaders/FBXLoader2.js new file mode 100644 index 000000000..fed5c2ed1 --- /dev/null +++ b/src/jlmap3d/main/loaders/FBXLoader2.js @@ -0,0 +1,3861 @@ +/** + * @author Kyle-Larson https://github.com/Kyle-Larson + * + * Loader loads FBX file and generates Group representing FBX scene. + * Requires FBX file to be >= 7.0 and in ASCII format. + * + * Supports: + * Mesh Generation (Positional Data) + * Normal Data (Per Vertex Drawing Instance) + * UV Data (Per Vertex Drawing Instance) + * Skinning + * Animation + * - Separated Animations based on stacks. + * - Skeletal & Non-Skeletal Animations + * + * Needs Support: + * Indexed Buffers + * PreRotation support. + */ + + +( function () { + + /** + * Generates a loader for loading FBX files from URL and parsing into + * a THREE.Group. + * @param {THREE.LoadingManager} manager - Loading Manager for loader to use. + */ + THREE.FBXLoader = function ( manager ) { + + THREE.Loader.call( this ); + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + this.fileLoader = new THREE.FileLoader( this.manager ); + this.textureLoader = new THREE.TextureLoader( this.manager ); + + }; + + Object.assign( THREE.FBXLoader.prototype, THREE.Loader.prototype ); + + THREE.FBXLoader.prototype.constructor = THREE.FBXLoader; + + Object.assign( THREE.FBXLoader.prototype, { + + /** + * Loads an ASCII FBX file from URL and parses into a THREE.Group. + * THREE.Group will have an animations property of AnimationClips + * of the different animations exported with the FBX. + * @param {string} url - URL of the FBX file. + * @param {function(THREE.Group):void} onLoad - Callback for when FBX file is loaded and parsed. + * @param {function(ProgressEvent):void} onProgress - Callback fired periodically when file is being retrieved from server. + * @param {function(Event):void} onError - Callback fired when error occurs (Currently only with retrieving file, not with parsing errors). + */ + load: function ( url, onLoad, onProgress, onError ) { + + var self = this; + + var resourceDirectory = url.split( /[\\\/]/ ); + resourceDirectory.pop(); + resourceDirectory = resourceDirectory.join( '/' ); + + this.fileLoader.load( url, function ( text ) { + + if ( ! isFbxFormatASCII( text ) ) { + + console.error( 'FBXLoader: FBX Binary format not supported.' ); + self.manager.itemError( url ); + return; + + } + if ( getFbxVersion( text ) < 7000 ) { + + console.error( 'FBXLoader: FBX version not supported for file at ' + url + ', FileVersion: ' + getFbxVersion( text ) ); + self.manager.itemError( url ); + return; + + } + + var scene = self.parse( text, resourceDirectory ); + onLoad( scene ); + + }, onProgress, onError ); + + }, + + /** + * Parses an ASCII FBX file and returns a THREE.Group. + * THREE.Group will have an animations property of AnimationClips + * of the different animations within the FBX file. + * @param {string} FBXText - Contents of FBX file to parse. + * @param {string} resourceDirectory - Directory to load external assets (e.g. textures ) from. + * @returns {THREE.Group} + */ + parse: function ( FBXText, resourceDirectory ) { + + var loader = this; + + var FBXTree = new TextParser().parse( FBXText ); + + var connections = parseConnections( FBXTree ); + + var textures = parseTextures( FBXTree ); + + var materials = parseMaterials( FBXTree, textures, connections ); + + var deformerMap = parseDeformers( FBXTree, connections ); + + var geometryMap = parseGeometries( FBXTree, connections, deformerMap ); + + var sceneGraph = parseScene( FBXTree, connections, deformerMap, geometryMap, materials ); + + return sceneGraph; + + + /** + * @typedef {{value: number}} FBXValue + */ + /** + * @typedef {{value: {x: string, y: string, z: string}}} FBXVector3 + */ + /** + * @typedef {{properties: {a: string}}} FBXArrayNode + */ + /** + * @typedef {{properties: {MappingInformationType: string, ReferenceInformationType: string }, subNodes: Object}} FBXMappedArrayNode + */ + /** + * @typedef {{id: number, name: string, properties: {FileName: string}}} FBXTextureNode + */ + /** + * @typedef {{id: number, attrName: string, properties: {ShadingModel: string, Diffuse: FBXVector3, Specular: FBXVector3, Shininess: FBXValue, Emissive: FBXVector3, EmissiveFactor: FBXValue, Opacity: FBXValue}}} FBXMaterialNode + */ + /** + * @typedef {{subNodes: {Indexes: FBXArrayNode, Weights: FBXArrayNode, Transform: FBXArrayNode, TransformLink: FBXArrayNode}, properties: { Mode: string }}} FBXSubDeformerNode + */ + /** + * @typedef {{id: number, attrName: string, attrType: string, subNodes: {Vertices: FBXArrayNode, PolygonVertexIndex: FBXArrayNode, LayerElementNormal: FBXMappedArrayNode[], LayerElementMaterial: FBXMappedArrayNode[], LayerElementUV: FBXMappedArrayNode[]}}} FBXGeometryNode + */ + /** + * @typedef {{id: number, attrName: string, attrType: string, properties: {Lcl_Translation: FBXValue, Lcl_Rotation: FBXValue, Lcl_Scaling: FBXValue}}} FBXModelNode + */ + + + + + + + + + /** + * Parses map of relationships between objects. + * @param {{Connections: { properties: { connections: [number, number, string][]}}}} FBXTree + * @returns {Map} + */ + function parseConnections( FBXTree ) { + + /** + * @type {Map} + */ + var connectionMap = new Map(); + + if ( 'Connections' in FBXTree ) { + + /** + * @type {[number, number, string][]} + */ + var connectionArray = FBXTree.Connections.properties.connections; + connectionArray.forEach( function ( connection ) { + + if ( ! connectionMap.has( connection[ 0 ] ) ) { + + connectionMap.set( connection[ 0 ], { + parents: [], + children: [] + } ); + + } + + var parentRelationship = { ID: connection[ 1 ], relationship: connection[ 2 ] }; + connectionMap.get( connection[ 0 ] ).parents.push( parentRelationship ); + + if ( ! connectionMap.has( connection[ 1 ] ) ) { + + connectionMap.set( connection[ 1 ], { + parents: [], + children: [] + } ); + + } + + var childRelationship = { ID: connection[ 0 ], relationship: connection[ 2 ] }; + connectionMap.get( connection[ 1 ] ).children.push( childRelationship ); + + } ); + + } + + return connectionMap; + + } + + /** + * Parses map of textures referenced in FBXTree. + * @param {{Objects: {subNodes: {Texture: Object.}}}} FBXTree + * @returns {Map} + */ + function parseTextures( FBXTree ) { + + /** + * @type {Map} + */ + var textureMap = new Map(); + + if ( 'Texture' in FBXTree.Objects.subNodes ) { + + var textureNodes = FBXTree.Objects.subNodes.Texture; + for ( var nodeID in textureNodes ) { + + var texture = parseTexture( textureNodes[ nodeID ] ); + textureMap.set( parseInt( nodeID ), texture ); + + } + + } + + return textureMap; + + /** + * @param {textureNode} textureNode - Node to get texture information from. + * @returns {THREE.Texture} + */ + function parseTexture( textureNode ) { + + var FBX_ID = textureNode.id; + var name = textureNode.name; + var filePath = textureNode.properties.FileName; + var split = filePath.split( /[\\\/]/ ); + if ( split.length > 0 ) { + + var fileName = split[ split.length - 1 ]; + + } else { + + var fileName = filePath; + + } + /** + * @type {THREE.Texture} + */ + var texture = loader.textureLoader.load( resourceDirectory + '/' + fileName ); + texture.name = name; + texture.FBX_ID = FBX_ID; + + return texture; + + } + + } + + /** + * Parses map of Material information. + * @param {{Objects: {subNodes: {Material: Object.}}}} FBXTree + * @param {Map} textureMap + * @param {Map} connections + * @returns {Map} + */ + function parseMaterials( FBXTree, textureMap, connections ) { + + var materialMap = new Map(); + + if ( 'Material' in FBXTree.Objects.subNodes ) { + + var materialNodes = FBXTree.Objects.subNodes.Material; + for ( var nodeID in materialNodes ) { + + var material = parseMaterial( materialNodes[ nodeID ], textureMap, connections ); + materialMap.set( parseInt( nodeID ), material ); + + } + + } + + return materialMap; + + /** + * Takes information from Material node and returns a generated THREE.Material + * @param {FBXMaterialNode} materialNode + * @param {Map} textureMap + * @param {Map} connections + * @returns {THREE.Material} + */ + function parseMaterial( materialNode, textureMap, connections ) { + + var FBX_ID = materialNode.id; + var name = materialNode.attrName; + var type = materialNode.properties.ShadingModel; + + var children = connections.get( FBX_ID ).children; + + var parameters = parseParameters( materialNode.properties, textureMap, children ); + + var material; + switch ( type ) { + + case 'phong': + material = new THREE.MeshPhongMaterial(); + break; + case 'lambert': + material = new THREE.MeshLambertMaterial(); + break; + default: + console.warn( 'No implementation given for material type ' + type + ' in FBXLoader.js. Defaulting to basic material' ); + material = new THREE.MeshBasicMaterial( { color: 0x3300ff } ); + break; + + } + + material.setValues( parameters ); + material.name = name; + + return material; + + /** + * @typedef {{Diffuse: FBXVector3, Specular: FBXVector3, Shininess: FBXValue, Emissive: FBXVector3, EmissiveFactor: FBXValue, Opacity: FBXValue}} FBXMaterialProperties + */ + /** + * @typedef {{color: THREE.Color=, specular: THREE.Color=, shininess: number=, emissive: THREE.Color=, emissiveIntensity: number=, opacity: number=, transparent: boolean=, map: THREE.Texture=}} THREEMaterialParameterPack + */ + /** + * @param {FBXMaterialProperties} properties + * @param {Map} textureMap + * @param {{ID: number, relationship: string}[]} childrenRelationships + * @returns {THREEMaterialParameterPack} + */ + function parseParameters( properties, textureMap, childrenRelationships ) { + + var parameters = {}; + + if ( properties.Diffuse ) { + + parameters.color = parseColor( properties.Diffuse ); + + } + if ( properties.Specular ) { + + parameters.specular = parseColor( properties.Specular ); + + } + if ( properties.Shininess ) { + + parameters.shininess = properties.Shininess.value; + + } + if ( properties.Emissive ) { + + parameters.emissive = parseColor( properties.Emissive ); + + } + if ( properties.EmissiveFactor ) { + + parameters.emissiveIntensity = properties.EmissiveFactor.value; + + } + if ( properties.Opacity ) { + + parameters.opacity = properties.Opacity.value; + + } + if ( parameters.opacity < 1.0 ) { + + parameters.transparent = true; + + } + + childrenRelationships.forEach( function ( relationship ) { + + var type = relationship.relationship; + switch ( type ) { + + case " \"AmbientColor": + //TODO: Support AmbientColor textures + break; + + case " \"DiffuseColor": + parameters.map = textureMap.get( relationship.ID ); + break; + + default: + console.warn( 'Unknown texture application of type ' + type + ', skipping texture' ); + break; + + } + + } ); + + return parameters; + + } + + } + + } + + /** + * Generates map of Skeleton-like objects for use later when generating and binding skeletons. + * @param {{Objects: {subNodes: {Deformer: Object.}}}} FBXTree + * @param {Map} connections + * @returns {Map, array: {FBX_ID: number, indices: number[], weights: number[], transform: number[], transformLink: number[], linkMode: string}[], skeleton: THREE.Skeleton|null}>} + */ + function parseDeformers( FBXTree, connections ) { + + var skeletonMap = new Map(); + + if ( 'Deformer' in FBXTree.Objects.subNodes ) { + + var DeformerNodes = FBXTree.Objects.subNodes.Deformer; + for ( var nodeID in DeformerNodes ) { + + var deformerNode = DeformerNodes[ nodeID ]; + if ( deformerNode.attrType === 'Skin' ) { + + var conns = connections.get( parseInt( nodeID ) ); + var skeleton = parseSkeleton( conns, DeformerNodes ); + skeleton.FBX_ID = parseInt( nodeID ); + skeletonMap.set( parseInt( nodeID ), skeleton ); + + } + + } + + } + + return skeletonMap; + + /** + * Generates a "Skeleton Representation" of FBX nodes based on an FBX Skin Deformer's connections and an object containing SubDeformer nodes. + * @param {{parents: {ID: number, relationship: string}[], children: {ID: number, relationship: string}[]}} connections + * @param {Object.} DeformerNodes + * @returns {{map: Map, array: {FBX_ID: number, indices: number[], weights: number[], transform: number[], transformLink: number[], linkMode: string}[], skeleton: THREE.Skeleton|null}} + */ + function parseSkeleton( connections, DeformerNodes ) { + + var subDeformers = new Map(); + var subDeformerArray = []; + connections.children.forEach( function ( child ) { + + var subDeformerNode = DeformerNodes[ child.ID ]; + var subDeformer = { + FBX_ID: child.ID, + indices: parseIntArray( subDeformerNode.subNodes.Indexes.properties.a ), + weights: parseFloatArray( subDeformerNode.subNodes.Weights.properties.a ), + transform: parseMatrixArray( subDeformerNode.subNodes.Transform.properties.a ), + transformLink: parseMatrixArray( subDeformerNode.subNodes.TransformLink.properties.a ), + linkMode: subDeformerNode.properties.Mode + }; + subDeformers.set( child.ID, subDeformer ); + subDeformerArray.push( subDeformer ); + + } ); + + return { + map: subDeformers, + array: subDeformerArray, + bones: [] + }; + + } + + } + + /** + * Generates Buffer geometries from geometry information in FBXTree, and generates map of THREE.BufferGeometries + * @param {{Objects: {subNodes: {Geometry: Object.} connections + * @param {Map, array: {FBX_ID: number, indices: number[], weights: number[], transform: number[], transformLink: number[], linkMode: string}[], skeleton: THREE.Skeleton|null}>} deformerMap + * @returns {Map} + */ + function parseGeometries( FBXTree, connections, deformerMap ) { + + var geometryMap = new Map(); + + if ( 'Geometry' in FBXTree.Objects.subNodes ) { + + var geometryNodes = FBXTree.Objects.subNodes.Geometry; + for ( var nodeID in geometryNodes ) { + + var relationships = connections.get( parseInt( nodeID ) ); + var geo = parseGeometry( geometryNodes[ nodeID ], relationships, deformerMap ); + geometryMap.set( parseInt( nodeID ), geo ); + + } + + } + + return geometryMap; + + /** + * Generates BufferGeometry from FBXGeometryNode. + * @param {FBXGeometryNode} geometryNode + * @param {{parents: {ID: number, relationship: string}[], children: {ID: number, relationship: string}[]}} relationships + * @param {Map, array: {FBX_ID: number, indices: number[], weights: number[], transform: number[], transformLink: number[], linkMode: string}[]}>} deformerMap + * @returns {THREE.BufferGeometry} + */ + function parseGeometry( geometryNode, relationships, deformerMap ) { + + switch ( geometryNode.attrType ) { + + case 'Mesh': + return parseMeshGeometry( geometryNode, relationships, deformerMap ); + break; + + case 'NurbsCurve': + return parseNurbsGeometry( geometryNode, relationships, deformerMap ); + break; + + } + + /** + * Specialty function for parsing Mesh based Geometry Nodes. + * @param {FBXGeometryNode} geometryNode + * @param {{parents: {ID: number, relationship: string}[], children: {ID: number, relationship: string}[]}} relationships - Object representing relationships between specific geometry node and other nodes. + * @param {Map, array: {FBX_ID: number, indices: number[], weights: number[], transform: number[], transformLink: number[], linkMode: string}[]}>} deformerMap - Map object of deformers and subDeformers by ID. + * @returns {THREE.BufferGeometry} + */ + function parseMeshGeometry( geometryNode, relationships, deformerMap ) { + + var FBX_ID = geometryNode.id; + var name = geometryNode.attrName; + for ( var i = 0; i < relationships.children.length; ++ i ) { + + if ( deformerMap.has( relationships.children[ i ].ID ) ) { + + var deformer = deformerMap.get( relationships.children[ i ].ID ); + break; + + } + + } + + var geometry = genGeometry( geometryNode, deformer ); + + return geometry; + + /** + * @param {{map: Map, array: {FBX_ID: number, indices: number[], weights: number[], transform: number[], transformLink: number[], linkMode: string}[]}} deformer - Skeleton representation for geometry instance. + * @returns {THREE.BufferGeometry} + */ + function genGeometry( geometryNode, deformer ) { + + var geometry = new Geometry(); + + //First, each index is going to be its own vertex. + var vertexBuffer = parseFloatArray( geometryNode.subNodes.Vertices.properties.a ); + var indexBuffer = parseIntArray( geometryNode.subNodes.PolygonVertexIndex.properties.a ); + + if ( 'LayerElementNormal' in geometryNode.subNodes ) { + + var normalInfo = getNormals( geometryNode ); + + } + + if ( 'LayerElementUV' in geometryNode.subNodes ) { + + var uvInfo = getUVs( geometryNode ); + + } + + if ( 'LayerElementMaterial' in geometryNode.subNodes ) { + + var materialInfo = getMaterials( geometryNode ); + + } + + var faceVertexBuffer = []; + var polygonIndex = 0; + for ( var polygonVertexIndex = 0; polygonVertexIndex < indexBuffer.length; ++ polygonVertexIndex ) { + + var endOfFace; + var vertexIndex = indexBuffer[ polygonVertexIndex ]; + if ( indexBuffer[ polygonVertexIndex ] < 0 ) { + + vertexIndex = vertexIndex ^ - 1; + indexBuffer[ polygonVertexIndex ] = vertexIndex; + endOfFace = true; + + } + var vertex = new Vertex(); + var weightIndices = []; + var weights = []; + vertex.position.fromArray( vertexBuffer, vertexIndex * 3 ); + + // If we have a deformer for this geometry, get the skinIndex and skinWeights for this object. + // They are stored as vertex indices on each deformer, and we need them as deformer indices + // for each vertex. + if ( deformer ) { + + for ( var j = 0; j < deformer.array.length; ++ j ) { + + var index = deformer.array[ j ].indices.findIndex( function ( index ) { + + return index === indexBuffer[ polygonVertexIndex ]; + + } ); + + if ( index !== - 1 ) { + + weights.push( deformer.array[ j ].weights[ index ] ); + weightIndices.push( j ); + + } + + } + + if ( weights.length > 4 ) { + + console.warn( 'FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.' ); + + var WIndex = [ 0, 0, 0, 0 ]; + var Weight = [ 0, 0, 0, 0 ]; + + for ( var polygonVertexIndex = 0; polygonVertexIndex < weights.length; ++ polygonVertexIndex ) { + + var currentWeight = weights[ polygonVertexIndex ]; + var currentIndex = weightIndices[ polygonVertexIndex ]; + for ( var j = 0; j < Weight.length; ++ j ) { + + if ( currentWeight > Weight[ j ] ) { + + var tmp = Weight[ j ]; + Weight[ j ] = currentWeight; + currentWeight = tmp; + + tmp = WIndex[ j ]; + WIndex[ j ] = currentIndex; + currentIndex = tmp; + + } + + } + + } + + weightIndices = WIndex; + weights = Weight; + + } + + for ( var i = weights.length; i < 4; i ++ ) { + + weights[ i ] = 0; + weightIndices[ i ] = 0; + + } + + vertex.skinWeights.fromArray( weights ); + vertex.skinIndices.fromArray( weightIndices ); + + //vertex.skinWeights.normalize(); + + } + + if ( normalInfo ) { + + vertex.normal.fromArray( getData( polygonVertexIndex, polygonIndex, vertexIndex, normalInfo ) ); + + } + + if ( uvInfo ) { + + vertex.uv.fromArray( getData( polygonVertexIndex, polygonIndex, vertexIndex, uvInfo ) ); + + } + + + + //Add vertex to face buffer. + faceVertexBuffer.push( vertex ); + + // If index was negative to start with, we have finished this individual face + // and can generate the face data to the geometry. + if ( endOfFace ) { + + var face = new Face(); + var materials = getData( polygonVertexIndex, polygonIndex, vertexIndex, materialInfo ); + face.genTrianglesFromVertices( faceVertexBuffer ); + face.materialIndex = materials[ 0 ]; + geometry.faces.push( face ); + faceVertexBuffer = []; + polygonIndex ++; + endOfFace = false; + + } + + } + + /** + * @type {{vertexBuffer: number[], normalBuffer: number[], uvBuffer: number[], skinIndexBuffer: number[], skinWeightBuffer: number[], materialIndexBuffer: number[]}} + */ + var bufferInfo = geometry.flattenToBuffers(); + + var geo = new THREE.BufferGeometry(); + geo.name = geometryNode.name; + geo.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( bufferInfo.vertexBuffer ), 3 ) ); + + if ( bufferInfo.normalBuffer.length > 0 ) { + + geo.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( bufferInfo.normalBuffer ), 3 ) ); + + } + if ( bufferInfo.uvBuffer.length > 0 ) { + + geo.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( bufferInfo.uvBuffer ), 2 ) ); + + } + + if ( deformer ) { + + geo.addAttribute( 'skinIndex', new THREE.BufferAttribute( new Float32Array( bufferInfo.skinIndexBuffer ), 4 ) ); + + geo.addAttribute( 'skinWeight', new THREE.BufferAttribute( new Float32Array( bufferInfo.skinWeightBuffer ), 4 ) ); + + geo.FBX_Deformer = deformer; + + } + + // Convert the material indices of each vertex into rendering groups on the geometry. + var prevMaterialIndex = bufferInfo.materialIndexBuffer[ 0 ]; + var startIndex = 0; + for ( var materialBufferIndex = 0; materialBufferIndex < bufferInfo.materialIndexBuffer.length; ++ materialBufferIndex ) { + + if ( bufferInfo.materialIndexBuffer[ materialBufferIndex ] !== prevMaterialIndex ) { + + geo.addGroup( startIndex, materialBufferIndex - startIndex, prevMaterialIndex ); + startIndex = materialBufferIndex; + prevMaterialIndex = bufferInfo.materialIndexBuffer[ materialBufferIndex ]; + + } + + } + + return geo; + + /** + * Parses normal information for geometry. + * @param {FBXGeometryNode} geometryNode + * @returns {{dataSize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} + */ + function getNormals( geometryNode ) { + + var NormalNode = geometryNode.subNodes.LayerElementNormal[ 0 ]; + + var mappingType = NormalNode.properties.MappingInformationType; + var referenceType = NormalNode.properties.ReferenceInformationType; + var buffer = parseFloatArray( NormalNode.subNodes.Normals.properties.a ); + var indexBuffer = []; + if ( referenceType === 'IndexToDirect' ) { + + indexBuffer = parseIntArray( NormalNode.subNodes.NormalIndex.properties.a ); + + } + + return { + dataSize: 3, + buffer: buffer, + indices: indexBuffer, + mappingType: mappingType, + referenceType: referenceType + }; + + } + + /** + * Parses UV information for geometry. + * @param {FBXGeometryNode} geometryNode + * @returns {{dataSize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} + */ + function getUVs( geometryNode ) { + + var UVNode = geometryNode.subNodes.LayerElementUV[ 0 ]; + + var mappingType = UVNode.properties.MappingInformationType; + var referenceType = UVNode.properties.ReferenceInformationType; + var buffer = parseFloatArray( UVNode.subNodes.UV.properties.a ); + var indexBuffer = []; + if ( referenceType === 'IndexToDirect' ) { + + indexBuffer = parseIntArray( UVNode.subNodes.UVIndex.properties.a ); + + } + + return { + dataSize: 2, + buffer: buffer, + indices: indexBuffer, + mappingType: mappingType, + referenceType: referenceType + }; + + } + + /** + * Parses material application information for geometry. + * @param {FBXGeometryNode} + * @returns {{dataSize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} + */ + function getMaterials( geometryNode ) { + + var MaterialNode = geometryNode.subNodes.LayerElementMaterial[ 0 ]; + var mappingType = MaterialNode.properties.MappingInformationType; + var referenceType = MaterialNode.properties.ReferenceInformationType; + var materialIndexBuffer = parseIntArray( MaterialNode.subNodes.Materials.properties.a ); + + // Since materials are stored as indices, there's a bit of a mismatch between FBX and what + // we expect. So we create an intermediate buffer that points to the index in the buffer, + // for conforming with the other functions we've written for other data. + var materialIndices = []; + materialIndexBuffer.forEach( function ( materialIndex, index ) { + + materialIndices.push( index ); + + } ); + + return { + dataSize: 1, + buffer: materialIndexBuffer, + indices: materialIndices, + mappingType: mappingType, + referenceType: referenceType + }; + + } + + /** + * Function uses the infoObject and given indices to return value array of object. + * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex). + * @param {number} polygonIndex - Index of polygon in geometry. + * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore). + * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data. + * @returns {number[]} + */ + function getData( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { + + var GetData = { + + ByPolygonVertex: { + + /** + * Function uses the infoObject and given indices to return value array of object. + * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex). + * @param {number} polygonIndex - Index of polygon in geometry. + * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore). + * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data. + * @returns {number[]} + */ + Direct: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { + + return infoObject.buffer.slice( ( polygonVertexIndex * infoObject.dataSize ), ( polygonVertexIndex * infoObject.dataSize ) + infoObject.dataSize ); + + }, + + /** + * Function uses the infoObject and given indices to return value array of object. + * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex). + * @param {number} polygonIndex - Index of polygon in geometry. + * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore). + * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data. + * @returns {number[]} + */ + IndexToDirect: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { + + var index = infoObject.indices[ polygonVertexIndex ]; + return infoObject.buffer.slice( ( index * infoObject.dataSize ), ( index * infoObject.dataSize ) + infoObject.dataSize ); + + } + + }, + + ByPolygon: { + + /** + * Function uses the infoObject and given indices to return value array of object. + * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex). + * @param {number} polygonIndex - Index of polygon in geometry. + * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore). + * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data. + * @returns {number[]} + */ + Direct: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { + + return infoObject.buffer.slice( polygonIndex * infoObject.dataSize, polygonIndex * infoObject.dataSize + infoObject.dataSize ); + + }, + + /** + * Function uses the infoObject and given indices to return value array of object. + * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex). + * @param {number} polygonIndex - Index of polygon in geometry. + * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore). + * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data. + * @returns {number[]} + */ + IndexToDirect: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { + + var index = infoObject.indices[ polygonIndex ]; + return infoObject.buffer.slice( index * infoObject.dataSize, index * infoObject.dataSize + infoObject.dataSize ); + + } + + }, + + AllSame: { + + /** + * Function uses the infoObject and given indices to return value array of object. + * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex). + * @param {number} polygonIndex - Index of polygon in geometry. + * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore). + * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data. + * @returns {number[]} + */ + IndexToDirect: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { + + return infoObject.buffer.slice( infoObject.indices[ 0 ] * infoObject.dataSize, infoObject.indices[ 0 ] * infoObject.dataSize + infoObject.dataSize ); + + } + + } + + }; + + return GetData[ infoObject.mappingType ][ infoObject.referenceType ]( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ); + + } + + } + + } + + /** + * Specialty function for parsing NurbsCurve based Geometry Nodes. + * @param {FBXGeometryNode} geometryNode + * @param {{parents: {ID: number, relationship: string}[], children: {ID: number, relationship: string}[]}} relationships + * @returns {THREE.BufferGeometry} + */ + function parseNurbsGeometry( geometryNode, relationships ) { + + if ( THREE.NURBSCurve === undefined ) { + + console.error( "THREE.FBXLoader relies on THREE.NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry." ); + return new THREE.BufferGeometry(); + + } + + var order = parseInt( geometryNode.properties.Order ); + + if ( isNaN( order ) ) { + + console.error( "FBXLoader: Invalid Order " + geometryNode.properties.Order + " given for geometry ID: " + geometryNode.id ); + return new THREE.BufferGeometry(); + + } + + var knots = parseFloatArray( geometryNode.subNodes.KnotVector.properties.a ); + var controlPoints = []; + var pointsValues = parseFloatArray( geometryNode.subNodes.Points.properties.a ); + + for ( var i = 0; i < pointsValues.length; i += 4 ) { + + controlPoints.push( new THREE.Vector4( pointsValues[ i ], pointsValues[ i + 1 ], pointsValues[ i + 2 ], pointsValues[ i + 3 ] ) ); + + } + + if ( geometryNode.properties.Form === 'Closed' ) { + + controlPoints.push( controlPoints[ 0 ] ); + + } + + var curve = new THREE.NURBSCurve( order - 1, knots, controlPoints ); + var vertices = curve.getPoints( controlPoints.length * 1.5 ); + + var vertexBuffer = []; + vertices.forEach( function ( position ) { + + var array = position.toArray(); + vertexBuffer = vertexBuffer.concat( array ); + + } ); + + var geometry = new THREE.BufferGeometry(); + geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( vertexBuffer ), 3 ) ); + + return geometry; + + } + + } + + } + + /** + * Finally generates Scene graph and Scene graph Objects. + * @param {{Objects: {subNodes: {Model: Object.}}}} FBXTree + * @param {Map} connections + * @param {Map, array: {FBX_ID: number, indices: number[], weights: number[], transform: number[], transformLink: number[], linkMode: string}[], skeleton: THREE.Skeleton|null}>} deformerMap + * @param {Map} geometryMap + * @param {Map} materialMap + * @returns {THREE.Group} + */ + function parseScene( FBXTree, connections, deformerMap, geometryMap, materialMap ) { + + var sceneGraph = new THREE.Group(); + + var ModelNode = FBXTree.Objects.subNodes.Model; + + /** + * @type {Array.} + */ + var modelArray = []; + + /** + * @type {Map.} + */ + var modelMap = new Map(); + + for ( var nodeID in ModelNode ) { + + var id = parseInt( nodeID ); + var node = ModelNode[ nodeID ]; + var conns = connections.get( id ); + var model = null; + for ( var i = 0; i < conns.parents.length; ++ i ) { + + deformerMap.forEach( function ( deformer ) { + + if ( deformer.map.has( conns.parents[ i ].ID ) ) { + + model = new THREE.Bone(); + var index = deformer.array.findIndex( function ( subDeformer ) { + + return subDeformer.FBX_ID === conns.parents[ i ].ID; + + } ); + deformer.bones[ index ] = model; + + } + + } ); + + } + if ( ! model ) { + + switch ( node.attrType ) { + + case "Mesh": + /** + * @type {?THREE.BufferGeometry} + */ + var geometry = null; + + /** + * @type {THREE.MultiMaterial|THREE.Material} + */ + var material = null; + + /** + * @type {Array.} + */ + var materials = []; + + conns.children.forEach( function ( child ) { + + if ( geometryMap.has( child.ID ) ) { + + geometry = geometryMap.get( child.ID ); + + } + + if ( materialMap.has( child.ID ) ) { + + materials.push( materialMap.get( child.ID ) ); + + } + + } ); + if ( materials.length > 1 ) { + + material = new THREE.MultiMaterial( materials ); + + } else if ( materials.length > 0 ) { + + material = materials[ 0 ]; + + } else { + + material = new THREE.MeshBasicMaterial( { color: 0x3300ff } ); + + } + if ( geometry.FBX_Deformer ) { + + materials.forEach( function ( material ) { + + material.skinning = true; + + } ); + material.skinning = true; + model = new THREE.SkinnedMesh( geometry, material ); + + } else { + + model = new THREE.Mesh( geometry, material ); + + } + break; + + case "NurbsCurve": + var geometry = null; + + conns.children.forEach( function ( child ) { + + if ( geometryMap.has( child.ID ) ) { + + geometry = geometryMap.get( child.ID ); + + } + + } ); + + // FBX does not list materials for Nurbs lines, so we'll just put our own in here. + material = new THREE.LineBasicMaterial( { color: 0x3300ff, linewidth: 5 } ); + model = new THREE.Line( geometry, material ); + break; + + default: + model = new THREE.Object3D(); + break; + + } + + } + + model.name = node.attrName.replace( /:/, '' ).replace( /_/, '' ).replace( /-/, '' ); + model.FBX_ID = id; + + modelArray.push( model ); + modelMap.set( id, model ); + + } + + modelArray.forEach( function ( model ) { + + var node = ModelNode[ model.FBX_ID ]; + + if ( 'Lcl_Translation' in node.properties ) { + + model.position.fromArray( parseFloatArray( node.properties.Lcl_Translation.value ) ); + + } + + if ( 'Lcl_Rotation' in node.properties ) { + + var rotation = parseFloatArray( node.properties.Lcl_Rotation.value ).map( function ( value ) { + + return value * Math.PI / 180; + + } ); + rotation.push( 'ZYX' ); + model.rotation.fromArray( rotation ); + + } + + if ( 'Lcl_Scaling' in node.properties ) { + + model.scale.fromArray( parseFloatArray( node.properties.Lcl_Scaling.value ) ); + + } + + var conns = connections.get( model.FBX_ID ); + for ( var parentIndex = 0; parentIndex < conns.parents.length; parentIndex ++ ) { + + var pIndex = modelArray.findIndex( function ( mod ) { + + return mod.FBX_ID === conns.parents[ parentIndex ].ID; + + } ); + if ( pIndex > - 1 ) { + + modelArray[ pIndex ].add( model ); + break; + + } + + } + if ( model.parent === null ) { + + sceneGraph.add( model ); + + } + + } ); + + + // Now with the bones created, we can update the skeletons and bind them to the skinned meshes. + sceneGraph.updateMatrixWorld( true ); + + // Put skeleton into bind pose. + var BindPoseNode = FBXTree.Objects.subNodes.Pose; + for ( var nodeID in BindPoseNode ) { + + if ( BindPoseNode[ nodeID ].attrType === 'BindPose' ) { + + BindPoseNode = BindPoseNode[ nodeID ]; + break; + + } + + } + if ( BindPoseNode ) { + + var PoseNode = BindPoseNode.subNodes.PoseNode; + var worldMatrices = new Map(); + + PoseNode.forEach( function ( node ) { + + var rawMatWrd = parseMatrixArray( node.subNodes.Matrix.properties.a ); + + worldMatrices.set( parseInt( node.id ), rawMatWrd ); + + } ); + + } + + deformerMap.forEach( function ( deformer, FBX_ID ) { + + deformer.array.forEach( function ( subDeformer, subDeformerIndex ) { + + /** + * @type {THREE.Bone} + */ + var bone = deformer.bones[ subDeformerIndex ]; + if ( ! worldMatrices.has( bone.FBX_ID ) ) { + + return; + + } + var mat = worldMatrices.get( bone.FBX_ID ); + bone.matrixWorld.copy( mat ); + + } ); + + // Now that skeleton is in bind pose, bind to model. + deformer.skeleton = new THREE.Skeleton( deformer.bones ); + var conns = connections.get( FBX_ID ); + conns.parents.forEach( function ( parent ) { + + if ( geometryMap.has( parent.ID ) ) { + + var geoID = parent.ID; + var geoConns = connections.get( geoID ); + for ( var i = 0; i < geoConns.parents.length; ++ i ) { + + if ( modelMap.has( geoConns.parents[ i ].ID ) ) { + + var model = modelMap.get( geoConns.parents[ i ].ID ); + //ASSERT model typeof SkinnedMesh + model.bind( deformer.skeleton, model.matrixWorld ); + break; + + } + + } + + } + + } ); + + } ); + + // Skeleton is now bound, we are now free to set up the + // scene graph. + modelArray.forEach( function ( model ) { + + var node = ModelNode[ model.FBX_ID ]; + + if ( 'Lcl_Translation' in node.properties ) { + + model.position.fromArray( parseFloatArray( node.properties.Lcl_Translation.value ) ); + + } + + if ( 'Lcl_Rotation' in node.properties ) { + + var rotation = parseFloatArray( node.properties.Lcl_Rotation.value ).map( function ( value ) { + + return value * Math.PI / 180; + + } ); + rotation.push( 'ZYX' ); + model.rotation.fromArray( rotation ); + + } + + if ( 'Lcl_Scaling' in node.properties ) { + + model.scale.fromArray( parseFloatArray( node.properties.Lcl_Scaling.value ) ); + + } + + } ); + + // Silly hack with the animation parsing. We're gonna pretend the scene graph has a skeleton + // to attach animations to, since FBXs treat animations as animations for the entire scene, + // not just for individual objects. + sceneGraph.skeleton = { + bones: modelArray + }; + + var animations = parseAnimations( FBXTree, connections, sceneGraph ); + + addAnimations( sceneGraph, animations ); + + return sceneGraph; + + } + + /** + * Parses animation information from FBXTree and generates an AnimationInfoObject. + * @param {{Objects: {subNodes: {AnimationCurveNode: any, AnimationCurve: any, AnimationLayer: any, AnimationStack: any}}}} FBXTree + * @param {Map} connections + */ + function parseAnimations( FBXTree, connections, sceneGraph ) { + + var rawNodes = FBXTree.Objects.subNodes.AnimationCurveNode; + var rawCurves = FBXTree.Objects.subNodes.AnimationCurve; + var rawLayers = FBXTree.Objects.subNodes.AnimationLayer; + var rawStacks = FBXTree.Objects.subNodes.AnimationStack; + + /** + * @type {{ + curves: Map, + layers: Map, + stacks: Map, + length: number, + fps: number, + frames: number + }} + */ + var returnObject = { + curves: new Map(), + layers: new Map(), + stacks: new Map(), + length: 0, + fps: 30, + frames: 0 + }; + + /** + * @type {Array.<{ + id: number; + attr: string; + internalID: number; + attrX: boolean; + attrY: boolean; + attrZ: boolean; + containerBoneID: number; + containerID: number; + }>} + */ + var animationCurveNodes = []; + for ( var nodeID in rawNodes ) { + + if ( nodeID.match( /\d+/ ) ) { + + var animationNode = parseAnimationNode( FBXTree, rawNodes[ nodeID ], connections, sceneGraph ); + animationCurveNodes.push( animationNode ); + + } + + } + + /** + * @type {Map.} + */ + var tmpMap = new Map(); + for ( var animationCurveNodeIndex = 0; animationCurveNodeIndex < animationCurveNodes.length; ++ animationCurveNodeIndex ) { + + if ( animationCurveNodes[ animationCurveNodeIndex ] === null ) { + + continue; + + } + tmpMap.set( animationCurveNodes[ animationCurveNodeIndex ].id, animationCurveNodes[ animationCurveNodeIndex ] ); + + } + + + /** + * @type {{ + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }[]} + */ + var animationCurves = []; + for ( nodeID in rawCurves ) { + + if ( nodeID.match( /\d+/ ) ) { + + var animationCurve = parseAnimationCurve( rawCurves[ nodeID ] ); + animationCurves.push( animationCurve ); + + var firstParentConn = connections.get( animationCurve.id ).parents[ 0 ]; + var firstParentID = firstParentConn.ID; + var firstParentRelationship = firstParentConn.relationship; + var axis = ''; + + if ( firstParentRelationship.match( /X/ ) ) { + + axis = 'x'; + + } else if ( firstParentRelationship.match( /Y/ ) ) { + + axis = 'y'; + + } else if ( firstParentRelationship.match( /Z/ ) ) { + + axis = 'z'; + + } else { + + continue; + + } + + tmpMap.get( firstParentID ).curves[ axis ] = animationCurve; + + } + + } + + tmpMap.forEach( function ( curveNode ) { + + var id = curveNode.containerBoneID; + if ( ! returnObject.curves.has( id ) ) { + + returnObject.curves.set( id, { T: null, R: null, S: null } ); + + } + returnObject.curves.get( id )[ curveNode.attr ] = curveNode; + + } ); + + for ( var nodeID in rawLayers ) { + + /** + * @type {{ + T: { + id: number; + attr: string; + internalID: number; + attrX: boolean; + attrY: boolean; + attrZ: boolean; + containerBoneID: number; + containerID: number; + curves: { + x: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + y: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + z: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + }, + }, + R: { + id: number; + attr: string; + internalID: number; + attrX: boolean; + attrY: boolean; + attrZ: boolean; + containerBoneID: number; + containerID: number; + curves: { + x: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + y: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + z: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + }, + }, + S: { + id: number; + attr: string; + internalID: number; + attrX: boolean; + attrY: boolean; + attrZ: boolean; + containerBoneID: number; + containerID: number; + curves: { + x: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + y: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + z: { + version: any; + id: number; + internalID: number; + times: number[]; + values: number[]; + attrFlag: number[]; + attrData: number[]; + }; + }, + } + }[]} + */ + var layer = []; + var children = connections.get( parseInt( nodeID ) ).children; + for ( var childIndex = 0; childIndex < children.length; childIndex ++ ) { + + // Skip lockInfluenceWeights + if ( tmpMap.has( children[ childIndex ].ID ) ) { + + var curveNode = tmpMap.get( children[ childIndex ].ID ); + var boneID = curveNode.containerBoneID; + if ( layer[ boneID ] === undefined ) { + + layer[ boneID ] = { + T: null, + R: null, + S: null + }; + + } + + layer[ boneID ][ curveNode.attr ] = curveNode; + + } + + } + + returnObject.layers.set( parseInt( nodeID ), layer ); + + } + + for ( var nodeID in rawStacks ) { + + var layers = []; + var children = connections.get( parseInt( nodeID ) ).children; + var maxTimeStamp = 0; + var minTimeStamp = Number.MAX_VALUE; + for ( var childIndex = 0; childIndex < children.length; ++ childIndex ) { + + if ( returnObject.layers.has( children[ childIndex ].ID ) ) { + + var currentLayer = returnObject.layers.get( children[ childIndex ].ID ); + layers.push( currentLayer ); + + currentLayer.forEach( function ( layer ) { + + if ( layer ) { + + getCurveNodeMaxMinTimeStamps( layer ); + + } + + /** + * Sets the maxTimeStamp and minTimeStamp variables if it has timeStamps that are either larger or smaller + * than the max or min respectively. + * @param {{ + T: { + id: number, + attr: string, + internalID: number, + attrX: boolean, + attrY: boolean, + attrZ: boolean, + containerBoneID: number, + containerID: number, + curves: { + x: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + y: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + z: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + }, + }, + R: { + id: number, + attr: string, + internalID: number, + attrX: boolean, + attrY: boolean, + attrZ: boolean, + containerBoneID: number, + containerID: number, + curves: { + x: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + y: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + z: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + }, + }, + S: { + id: number, + attr: string, + internalID: number, + attrX: boolean, + attrY: boolean, + attrZ: boolean, + containerBoneID: number, + containerID: number, + curves: { + x: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + y: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + z: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + }, + }, + }} layer + */ + function getCurveNodeMaxMinTimeStamps( layer ) { + + /** + * Sets the maxTimeStamp and minTimeStamp if one of the curve's time stamps + * exceeds the maximum or minimum. + * @param {{ + x: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + y: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + }, + z: { + version: any, + id: number, + internalID: number, + times: number[], + values: number[], + attrFlag: number[], + attrData: number[], + } + }} curve + */ + function getCurveMaxMinTimeStamp( curve ) { + + /** + * Sets the maxTimeStamp and minTimeStamp if one of its timestamps exceeds the maximum or minimum. + * @param {{times: number[]}} axis + */ + function getCurveAxisMaxMinTimeStamps( axis ) { + + maxTimeStamp = axis.times[ axis.times.length - 1 ] > maxTimeStamp ? axis.times[ axis.times.length - 1 ] : maxTimeStamp; + minTimeStamp = axis.times[ 0 ] < minTimeStamp ? axis.times[ 0 ] : minTimeStamp; + + } + + if ( curve.x ) { + + getCurveAxisMaxMinTimeStamps( curve.x ); + + } + if ( curve.y ) { + + getCurveAxisMaxMinTimeStamps( curve.y ); + + } + if ( curve.z ) { + + getCurveAxisMaxMinTimeStamps( curve.z ); + + } + + } + + if ( layer.R ) { + + getCurveMaxMinTimeStamp( layer.R.curves ); + + } + if ( layer.S ) { + + getCurveMaxMinTimeStamp( layer.S.curves ); + + } + if ( layer.T ) { + + getCurveMaxMinTimeStamp( layer.T.curves ); + + } + + } + + } ); + + } + + } + + // Do we have an animation clip with actual length? + if ( maxTimeStamp > minTimeStamp ) { + + returnObject.stacks.set( parseInt( nodeID ), { + name: rawStacks[ nodeID ].attrName, + layers: layers, + length: maxTimeStamp - minTimeStamp, + frames: ( maxTimeStamp - minTimeStamp ) * 30 + } ); + + } + + } + + return returnObject; + + /** + * @param {Object} FBXTree + * @param {{id: number, attrName: string, properties: Object}} animationCurveNode + * @param {Map} connections + * @param {{skeleton: {bones: {FBX_ID: number}[]}}} sceneGraph + */ + function parseAnimationNode( FBXTree, animationCurveNode, connections, sceneGraph ) { + + var returnObject = { + /** + * @type {number} + */ + id: animationCurveNode.id, + + /** + * @type {string} + */ + attr: animationCurveNode.attrName, + + /** + * @type {number} + */ + internalID: animationCurveNode.id, + + /** + * @type {boolean} + */ + attrX: false, + + /** + * @type {boolean} + */ + attrY: false, + + /** + * @type {boolean} + */ + attrZ: false, + + /** + * @type {number} + */ + containerBoneID: - 1, + + /** + * @type {number} + */ + containerID: - 1, + + curves: { + x: null, + y: null, + z: null + } + }; + + if ( returnObject.attr.match( /S|R|T/ ) ) { + + for ( var attributeKey in animationCurveNode.properties ) { + + if ( attributeKey.match( /X/ ) ) { + + returnObject.attrX = true; + + } + if ( attributeKey.match( /Y/ ) ) { + + returnObject.attrY = true; + + } + if ( attributeKey.match( /Z/ ) ) { + + returnObject.attrZ = true; + + } + + } + + } else { + + return null; + + } + + var conns = connections.get( returnObject.id ); + var containerIndices = conns.parents; + + for ( var containerIndicesIndex = containerIndices.length - 1; containerIndicesIndex >= 0; -- containerIndicesIndex ) { + + var boneID = sceneGraph.skeleton.bones.findIndex( function ( bone ) { + + return bone.FBX_ID === containerIndices[ containerIndicesIndex ].ID; + + } ); + if ( boneID > - 1 ) { + + returnObject.containerBoneID = boneID; + returnObject.containerID = containerIndices[ containerIndicesIndex ].ID; + break; + + } + + } + + return returnObject; + + } + + /** + * @param {{id: number, subNodes: {KeyTime: {properties: {a: string}}, KeyValueFloat: {properties: {a: string}}, KeyAttrFlags: {properties: {a: string}}, KeyAttrDataFloat: {properties: {a: string}}}}} animationCurve + */ + function parseAnimationCurve( animationCurve ) { + + return { + version: null, + id: animationCurve.id, + internalID: animationCurve.id, + times: parseFloatArray( animationCurve.subNodes.KeyTime.properties.a ).map( function ( time ) { + + return ConvertFBXTimeToSeconds( time ); + + } ), + values: parseFloatArray( animationCurve.subNodes.KeyValueFloat.properties.a ), + + attrFlag: parseIntArray( animationCurve.subNodes.KeyAttrFlags.properties.a ), + attrData: parseFloatArray( animationCurve.subNodes.KeyAttrDataFloat.properties.a ) + }; + + } + + } + + /** + * @param {{ + curves: Map; + layers: Map; + stacks: Map; + length: number; + fps: number; + frames: number; + }} animations, + * @param {{skeleton: { bones: THREE.Bone[]}}} group + */ + function addAnimations( group, animations ) { + + if ( group.animations === undefined ) { + + group.animations = []; + + } + + animations.stacks.forEach( function ( stack ) { + + var animationData = { + name: stack.name, + fps: 30, + length: stack.length, + hierarchy: [] + }; + + var bones = group.skeleton.bones; + + bones.forEach( function ( bone ) { + + var name = bone.name.replace( /.*:/, '' ); + var parentIndex = bones.findIndex( function ( parentBone ) { + + return bone.parent === parentBone; + + } ); + animationData.hierarchy.push( { parent: parentIndex, name: name, keys: [] } ); + + } ); + + for ( var frame = 0; frame < stack.frames; frame ++ ) { + + bones.forEach( function ( bone, boneIndex ) { + + var animationNode = stack.layers[ 0 ][ boneIndex ]; + + animationData.hierarchy.forEach( function ( node ) { + + if ( node.name === bone.name ) { + + node.keys.push( generateKey( animationNode, bone, frame ) ); + + } + + } ); + + } ); + + } + + group.animations.push( THREE.AnimationClip.parseAnimation( animationData, bones ) ); + + + /** + * @param {THREE.Bone} bone + */ + function generateKey( animationNode, bone, frame ) { + + var key = { + time: frame / animations.fps, + pos: bone.position.toArray(), + rot: bone.quaternion.toArray(), + scl: bone.scale.toArray() + }; + + if ( animationNode === undefined ) { + + return key; + + } + + try { + + if ( hasCurve( animationNode, 'T' ) && hasKeyOnFrame( animationNode.T, frame ) ) { + + key.pos = [ animationNode.T.curves.x.values[ frame ], animationNode.T.curves.y.values[ frame ], animationNode.T.curves.z.values[ frame ] ]; + + } + + if ( hasCurve( animationNode, 'R' ) && hasKeyOnFrame( animationNode.R, frame ) ) { + + var rotationX = degreeToRadian( animationNode.R.curves.x.values[ frame ] ); + var rotationY = degreeToRadian( animationNode.R.curves.y.values[ frame ] ); + var rotationZ = degreeToRadian( animationNode.R.curves.z.values[ frame ] ); + var euler = new THREE.Euler( rotationX, rotationY, rotationZ, 'ZYX' ); + key.rot = new THREE.Quaternion().setFromEuler( euler ).toArray(); + + } + + if ( hasCurve( animationNode, 'S' ) && hasKeyOnFrame( animationNode.S, frame ) ) { + + key.scl = [ animationNode.S.curves.x.values[ frame ], animationNode.S.curves.y.values[ frame ], animationNode.S.curves.z.values[ frame ] ]; + + } + + } catch ( error ) { + + // Curve is not fully plotted. + console.log( bone ); + console.log( error ); + + } + + return key; + + function hasCurve( animationNode, attribute ) { + + if ( animationNode === undefined ) { + + return false; + + } + + var attributeNode = animationNode[ attribute ]; + if ( ! attributeNode ) { + + return false; + + } + + return [ 'x', 'y', 'z' ].every( function ( key ) { + + return attributeNode.curves[ key ] !== undefined; + + } ); + + } + + function hasKeyOnFrame( attributeNode, frame ) { + + return [ 'x', 'y', 'z' ].every( function ( key ) { + + return isKeyExistOnFrame( attributeNode.curves[ key ], frame ); + + function isKeyExistOnFrame( curve, frame ) { + + return curve.values[ frame ] !== undefined; + + } + + } ); + + } + + } + + } ); + + } + + + + // UTILS + /** + * Parses Vector3 property from FBXTree. Property is given as .value.x, .value.y, etc. + * @param {FBXVector3} property - Property to parse as Vector3. + * @returns {THREE.Vector3} + */ + function parseVector3( property ) { + + return new THREE.Vector3( parseFloat( property.value.x ), parseFloat( property.value.y ), parseFloat( property.value.z ) ); + + } + + /** + * Parses Color property from FBXTree. Property is given as .value.x, .value.y, etc. + * @param {FBXVector3} property - Property to parse as Color. + * @returns {THREE.Color} + */ + function parseColor( property ) { + + return new THREE.Color().fromArray( parseVector3( property ).toArray() ); + + } + + } + + } ); + + /** + * An instance of a Vertex with data for drawing vertices to the screen. + * @constructor + */ + function Vertex() { + + /** + * Position of the vertex. + * @type {THREE.Vector3} + */ + this.position = new THREE.Vector3( ); + + /** + * Normal of the vertex + * @type {THREE.Vector3} + */ + this.normal = new THREE.Vector3( ); + + /** + * UV coordinates of the vertex. + * @type {THREE.Vector2} + */ + this.uv = new THREE.Vector2( ); + + /** + * Indices of the bones vertex is influenced by. + * @type {THREE.Vector4} + */ + this.skinIndices = new THREE.Vector4( 0, 0, 0, 0 ); + + /** + * Weights that each bone influences the vertex. + * @type {THREE.Vector4} + */ + this.skinWeights = new THREE.Vector4( 0, 0, 0, 0 ); + + } + + Object.assign( Vertex.prototype, { + + copy: function ( target ) { + + var returnVar = target || new Vertex(); + + returnVar.position.copy( this.position ); + returnVar.normal.copy( this.normal ); + returnVar.uv.copy( this.uv ); + returnVar.skinIndices.copy( this.skinIndices ); + returnVar.skinWeights.copy( this.skinWeights ); + + return returnVar; + + }, + + flattenToBuffers: function () { + + var vertexBuffer = this.position.toArray(); + var normalBuffer = this.normal.toArray(); + var uvBuffer = this.uv.toArray(); + var skinIndexBuffer = this.skinIndices.toArray(); + var skinWeightBuffer = this.skinWeights.toArray(); + + return { + vertexBuffer: vertexBuffer, + normalBuffer: normalBuffer, + uvBuffer: uvBuffer, + skinIndexBuffer: skinIndexBuffer, + skinWeightBuffer: skinWeightBuffer, + }; + + } + + } ); + + /** + * @constructor + */ + function Triangle() { + + /** + * @type {{position: THREE.Vector3, normal: THREE.Vector3, uv: THREE.Vector2, skinIndices: THREE.Vector4, skinWeights: THREE.Vector4}[]} + */ + this.vertices = [ ]; + + } + + Object.assign( Triangle.prototype, { + + copy: function ( target ) { + + var returnVar = target || new Triangle(); + + for ( var i = 0; i < this.vertices.length; ++ i ) { + + this.vertices[ i ].copy( returnVar.vertices[ i ] ); + + } + + return returnVar; + + }, + + flattenToBuffers: function () { + + var vertexBuffer = []; + var normalBuffer = []; + var uvBuffer = []; + var skinIndexBuffer = []; + var skinWeightBuffer = []; + + this.vertices.forEach( function ( vertex ) { + + var flatVertex = vertex.flattenToBuffers(); + vertexBuffer = vertexBuffer.concat( flatVertex.vertexBuffer ); + normalBuffer = normalBuffer.concat( flatVertex.normalBuffer ); + uvBuffer = uvBuffer.concat( flatVertex.uvBuffer ); + skinIndexBuffer = skinIndexBuffer.concat( flatVertex.skinIndexBuffer ); + skinWeightBuffer = skinWeightBuffer.concat( flatVertex.skinWeightBuffer ); + + } ); + + return { + vertexBuffer: vertexBuffer, + normalBuffer: normalBuffer, + uvBuffer: uvBuffer, + skinIndexBuffer: skinIndexBuffer, + skinWeightBuffer: skinWeightBuffer, + }; + + } + + } ); + + /** + * @constructor + */ + function Face() { + + /** + * @type {{vertices: {position: THREE.Vector3, normal: THREE.Vector3, uv: THREE.Vector2, skinIndices: THREE.Vector4, skinWeights: THREE.Vector4}[]}[]} + */ + this.triangles = [ ]; + this.materialIndex = 0; + + } + + Object.assign( Face.prototype, { + + copy: function ( target ) { + + var returnVar = target || new Face(); + + for ( var i = 0; i < this.triangles.length; ++ i ) { + + this.triangles[ i ].copy( returnVar.triangles[ i ] ); + + } + + returnVar.materialIndex = this.materialIndex; + + return returnVar; + + }, + + genTrianglesFromVertices: function ( vertexArray ) { + + for ( var i = 2; i < vertexArray.length; ++ i ) { + + var triangle = new Triangle(); + triangle.vertices[ 0 ] = vertexArray[ 0 ]; + triangle.vertices[ 1 ] = vertexArray[ i - 1 ]; + triangle.vertices[ 2 ] = vertexArray[ i ]; + this.triangles.push( triangle ); + + } + + }, + + flattenToBuffers: function () { + + var vertexBuffer = []; + var normalBuffer = []; + var uvBuffer = []; + var skinIndexBuffer = []; + var skinWeightBuffer = []; + + var materialIndexBuffer = []; + + var materialIndex = this.materialIndex; + + this.triangles.forEach( function ( triangle ) { + + var flatTriangle = triangle.flattenToBuffers(); + vertexBuffer = vertexBuffer.concat( flatTriangle.vertexBuffer ); + normalBuffer = normalBuffer.concat( flatTriangle.normalBuffer ); + uvBuffer = uvBuffer.concat( flatTriangle.uvBuffer ); + skinIndexBuffer = skinIndexBuffer.concat( flatTriangle.skinIndexBuffer ); + skinWeightBuffer = skinWeightBuffer.concat( flatTriangle.skinWeightBuffer ); + materialIndexBuffer = materialIndexBuffer.concat( [ materialIndex, materialIndex, materialIndex ] ); + + } ); + + return { + vertexBuffer: vertexBuffer, + normalBuffer: normalBuffer, + uvBuffer: uvBuffer, + skinIndexBuffer: skinIndexBuffer, + skinWeightBuffer: skinWeightBuffer, + materialIndexBuffer: materialIndexBuffer + }; + + } + + } ); + + /** + * @constructor + */ + function Geometry() { + + /** + * @type {{triangles: {vertices: {position: THREE.Vector3, normal: THREE.Vector3, uv: THREE.Vector2, skinIndices: THREE.Vector4, skinWeights: THREE.Vector4}[]}[], materialIndex: number}[]} + */ + this.faces = [ ]; + + /** + * @type {{}|THREE.Skeleton} + */ + this.skeleton = null; + + } + + Object.assign( Geometry.prototype, { + + /** + * @returns {{vertexBuffer: number[], normalBuffer: number[], uvBuffer: number[], skinIndexBuffer: number[], skinWeightBuffer: number[], materialIndexBuffer: number[]}} + */ + flattenToBuffers: function () { + + var vertexBuffer = []; + var normalBuffer = []; + var uvBuffer = []; + var skinIndexBuffer = []; + var skinWeightBuffer = []; + + var materialIndexBuffer = []; + + this.faces.forEach( function ( face ) { + + var flatFace = face.flattenToBuffers(); + vertexBuffer = vertexBuffer.concat( flatFace.vertexBuffer ); + normalBuffer = normalBuffer.concat( flatFace.normalBuffer ); + uvBuffer = uvBuffer.concat( flatFace.uvBuffer ); + skinIndexBuffer = skinIndexBuffer.concat( flatFace.skinIndexBuffer ); + skinWeightBuffer = skinWeightBuffer.concat( flatFace.skinWeightBuffer ); + materialIndexBuffer = materialIndexBuffer.concat( flatFace.materialIndexBuffer ); + + } ); + + return { + vertexBuffer: vertexBuffer, + normalBuffer: normalBuffer, + uvBuffer: uvBuffer, + skinIndexBuffer: skinIndexBuffer, + skinWeightBuffer: skinWeightBuffer, + materialIndexBuffer: materialIndexBuffer + }; + + } + + } ); + + function TextParser() {} + + Object.assign( TextParser.prototype, { + + getPrevNode: function () { + + return this.nodeStack[ this.currentIndent - 2 ]; + + }, + + getCurrentNode: function () { + + return this.nodeStack[ this.currentIndent - 1 ]; + + }, + + getCurrentProp: function () { + + return this.currentProp; + + }, + + pushStack: function ( node ) { + + this.nodeStack.push( node ); + this.currentIndent += 1; + + }, + + popStack: function () { + + this.nodeStack.pop(); + this.currentIndent -= 1; + + }, + + setCurrentProp: function ( val, name ) { + + this.currentProp = val; + this.currentPropName = name; + + }, + + // ----------parse --------------------------------------------------- + parse: function ( text ) { + + this.currentIndent = 0; + this.allNodes = new FBXTree(); + this.nodeStack = []; + this.currentProp = []; + this.currentPropName = ''; + + var split = text.split( "\n" ); + for ( var line in split ) { + + var l = split[ line ]; + + // short cut + if ( l.match( /^[\s\t]*;/ ) ) { + + continue; + + } // skip comment line + if ( l.match( /^[\s\t]*$/ ) ) { + + continue; + + } // skip empty line + + // beginning of node + var beginningOfNodeExp = new RegExp( "^\\t{" + this.currentIndent + "}(\\w+):(.*){", '' ); + var match = l.match( beginningOfNodeExp ); + if ( match ) { + + var nodeName = match[ 1 ].trim().replace( /^"/, '' ).replace( /"$/, "" ); + var nodeAttrs = match[ 2 ].split( ',' ).map( function ( element ) { + + return element.trim().replace( /^"/, '' ).replace( /"$/, '' ); + + } ); + + this.parseNodeBegin( l, nodeName, nodeAttrs || null ); + continue; + + } + + // node's property + var propExp = new RegExp( "^\\t{" + ( this.currentIndent ) + "}(\\w+):[\\s\\t\\r\\n](.*)" ); + var match = l.match( propExp ); + if ( match ) { + + var propName = match[ 1 ].replace( /^"/, '' ).replace( /"$/, "" ).trim(); + var propValue = match[ 2 ].replace( /^"/, '' ).replace( /"$/, "" ).trim(); + + this.parseNodeProperty( l, propName, propValue ); + continue; + + } + + // end of node + var endOfNodeExp = new RegExp( "^\\t{" + ( this.currentIndent - 1 ) + "}}" ); + if ( l.match( endOfNodeExp ) ) { + + this.nodeEnd(); + continue; + + } + + // for special case, + // + // Vertices: *8670 { + // a: 0.0356229953467846,13.9599733352661,-0.399196773.....(snip) + // -0.0612030513584614,13.960485458374,-0.409748703241348,-0.10..... + // 0.12490539252758,13.7450733184814,-0.454119384288788,0.09272..... + // 0.0836158767342567,13.5432004928589,-0.435397416353226,0.028..... + // + // these case the lines must contiue with previous line + if ( l.match( /^[^\s\t}]/ ) ) { + + this.parseNodePropertyContinued( l ); + + } + + } + + return this.allNodes; + + }, + + parseNodeBegin: function ( line, nodeName, nodeAttrs ) { + + // var nodeName = match[1]; + var node = { 'name': nodeName, properties: {}, 'subNodes': {} }; + var attrs = this.parseNodeAttr( nodeAttrs ); + var currentNode = this.getCurrentNode(); + + // a top node + if ( this.currentIndent === 0 ) { + + this.allNodes.add( nodeName, node ); + + } else { + + // a subnode + + // already exists subnode, then append it + if ( nodeName in currentNode.subNodes ) { + + var tmp = currentNode.subNodes[ nodeName ]; + + // console.log( "duped entry found\nkey: " + nodeName + "\nvalue: " + propValue ); + if ( this.isFlattenNode( currentNode.subNodes[ nodeName ] ) ) { + + + if ( attrs.id === '' ) { + + currentNode.subNodes[ nodeName ] = []; + currentNode.subNodes[ nodeName ].push( tmp ); + + } else { + + currentNode.subNodes[ nodeName ] = {}; + currentNode.subNodes[ nodeName ][ tmp.id ] = tmp; + + } + + } + + if ( attrs.id === '' ) { + + currentNode.subNodes[ nodeName ].push( node ); + + } else { + + currentNode.subNodes[ nodeName ][ attrs.id ] = node; + + } + + } else if ( typeof attrs.id === 'number' || attrs.id.match( /^\d+$/ ) ) { + + currentNode.subNodes[ nodeName ] = {}; + currentNode.subNodes[ nodeName ][ attrs.id ] = node; + + } else { + + currentNode.subNodes[ nodeName ] = node; + + } + + } + + // for this ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + // NodeAttribute: 1001463072, "NodeAttribute::", "LimbNode" { + if ( nodeAttrs ) { + + node.id = attrs.id; + node.attrName = attrs.name; + node.attrType = attrs.type; + + } + + this.pushStack( node ); + + }, + + parseNodeAttr: function ( attrs ) { + + var id = attrs[ 0 ]; + + if ( attrs[ 0 ] !== "" ) { + + id = parseInt( attrs[ 0 ] ); + + if ( isNaN( id ) ) { + + // PolygonVertexIndex: *16380 { + id = attrs[ 0 ]; + + } + + } + + var name; + var type; + if ( attrs.length > 1 ) { + + name = attrs[ 1 ].replace( /^(\w+)::/, '' ); + type = attrs[ 2 ]; + + } + + return { id: id, name: name || '', type: type || '' }; + + }, + + parseNodeProperty: function ( line, propName, propValue ) { + + var currentNode = this.getCurrentNode(); + var parentName = currentNode.name; + + // special case parent node's is like "Properties70" + // these chilren nodes must treat with careful + if ( parentName !== undefined ) { + + var propMatch = parentName.match( /Properties(\d)+/ ); + if ( propMatch ) { + + this.parseNodeSpecialProperty( line, propName, propValue ); + return; + + } + + } + + // special case Connections + if ( propName == 'C' ) { + + var connProps = propValue.split( ',' ).slice( 1 ); + var from = parseInt( connProps[ 0 ] ); + var to = parseInt( connProps[ 1 ] ); + + var rest = propValue.split( ',' ).slice( 3 ); + + propName = 'connections'; + propValue = [ from, to ]; + propValue = propValue.concat( rest ); + + if ( currentNode.properties[ propName ] === undefined ) { + + currentNode.properties[ propName ] = []; + + } + + } + + // special case Connections + if ( propName == 'Node' ) { + + var id = parseInt( propValue ); + currentNode.properties.id = id; + currentNode.id = id; + + } + + // already exists in properties, then append this + if ( propName in currentNode.properties ) { + + // console.log( "duped entry found\nkey: " + propName + "\nvalue: " + propValue ); + if ( Array.isArray( currentNode.properties[ propName ] ) ) { + + currentNode.properties[ propName ].push( propValue ); + + } else { + + currentNode.properties[ propName ] += propValue; + + } + + } else { + + // console.log( propName + ": " + propValue ); + if ( Array.isArray( currentNode.properties[ propName ] ) ) { + + currentNode.properties[ propName ].push( propValue ); + + } else { + + currentNode.properties[ propName ] = propValue; + + } + + } + + this.setCurrentProp( currentNode.properties, propName ); + + }, + + // TODO: + parseNodePropertyContinued: function ( line ) { + + this.currentProp[ this.currentPropName ] += line; + + }, + + parseNodeSpecialProperty: function ( line, propName, propValue ) { + + // split this + // P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + // into array like below + // ["Lcl Scaling", "Lcl Scaling", "", "A", "1,1,1" ] + var props = propValue.split( '",' ).map( function ( element ) { + + return element.trim().replace( /^\"/, '' ).replace( /\s/, '_' ); + + } ); + + var innerPropName = props[ 0 ]; + var innerPropType1 = props[ 1 ]; + var innerPropType2 = props[ 2 ]; + var innerPropFlag = props[ 3 ]; + var innerPropValue = props[ 4 ]; + + /* + if ( innerPropValue === undefined ) { + innerPropValue = props[3]; + } + */ + + // cast value in its type + switch ( innerPropType1 ) { + + case "int": + innerPropValue = parseInt( innerPropValue ); + break; + + case "double": + innerPropValue = parseFloat( innerPropValue ); + break; + + case "ColorRGB": + case "Vector3D": + var tmp = innerPropValue.split( ',' ); + innerPropValue = new THREE.Vector3( tmp[ 0 ], tmp[ 1 ], tmp[ 2 ] ); + break; + + } + + // CAUTION: these props must append to parent's parent + this.getPrevNode().properties[ innerPropName ] = { + + 'type': innerPropType1, + 'type2': innerPropType2, + 'flag': innerPropFlag, + 'value': innerPropValue + + }; + + this.setCurrentProp( this.getPrevNode().properties, innerPropName ); + + }, + + nodeEnd: function () { + + this.popStack(); + + }, + + /* ---------------------------------------------------------------- */ + /* util */ + isFlattenNode: function ( node ) { + + return ( 'subNodes' in node && 'properties' in node ) ? true : false; + + } + + } ); + + function FBXTree() {} + + Object.assign( FBXTree.prototype, { + + add: function ( key, val ) { + + this[ key ] = val; + + }, + + searchConnectionParent: function ( id ) { + + if ( this.__cache_search_connection_parent === undefined ) { + + this.__cache_search_connection_parent = []; + + } + + if ( this.__cache_search_connection_parent[ id ] !== undefined ) { + + return this.__cache_search_connection_parent[ id ]; + + } else { + + this.__cache_search_connection_parent[ id ] = []; + + } + + var conns = this.Connections.properties.connections; + + var results = []; + for ( var i = 0; i < conns.length; ++ i ) { + + if ( conns[ i ][ 0 ] == id ) { + + // 0 means scene root + var res = conns[ i ][ 1 ] === 0 ? - 1 : conns[ i ][ 1 ]; + results.push( res ); + + } + + } + + if ( results.length > 0 ) { + + this.__cache_search_connection_parent[ id ] = this.__cache_search_connection_parent[ id ].concat( results ); + return results; + + } else { + + this.__cache_search_connection_parent[ id ] = [ - 1 ]; + return [ - 1 ]; + + } + + }, + + searchConnectionChildren: function ( id ) { + + if ( this.__cache_search_connection_children === undefined ) { + + this.__cache_search_connection_children = []; + + } + + if ( this.__cache_search_connection_children[ id ] !== undefined ) { + + return this.__cache_search_connection_children[ id ]; + + } else { + + this.__cache_search_connection_children[ id ] = []; + + } + + var conns = this.Connections.properties.connections; + + var res = []; + for ( var i = 0; i < conns.length; ++ i ) { + + if ( conns[ i ][ 1 ] == id ) { + + // 0 means scene root + res.push( conns[ i ][ 0 ] === 0 ? - 1 : conns[ i ][ 0 ] ); + // there may more than one kid, then search to the end + + } + + } + + if ( res.length > 0 ) { + + this.__cache_search_connection_children[ id ] = this.__cache_search_connection_children[ id ].concat( res ); + return res; + + } else { + + this.__cache_search_connection_children[ id ] = [ ]; + return [ ]; + + } + + }, + + searchConnectionType: function ( id, to ) { + + var key = id + ',' + to; // TODO: to hash + if ( this.__cache_search_connection_type === undefined ) { + + this.__cache_search_connection_type = {}; + + } + + if ( this.__cache_search_connection_type[ key ] !== undefined ) { + + return this.__cache_search_connection_type[ key ]; + + } else { + + this.__cache_search_connection_type[ key ] = ''; + + } + + var conns = this.Connections.properties.connections; + + for ( var i = 0; i < conns.length; ++ i ) { + + if ( conns[ i ][ 0 ] == id && conns[ i ][ 1 ] == to ) { + + // 0 means scene root + this.__cache_search_connection_type[ key ] = conns[ i ][ 2 ]; + return conns[ i ][ 2 ]; + + } + + } + + this.__cache_search_connection_type[ id ] = null; + return null; + + } + + } ); + + /** + * @returns {boolean} + */ + function isFbxFormatASCII( text ) { + + var CORRECT = [ 'K', 'a', 'y', 'd', 'a', 'r', 'a', '\\', 'F', 'B', 'X', '\\', 'B', 'i', 'n', 'a', 'r', 'y', '\\', '\\' ]; + + var cursor = 0; + var read = function ( offset ) { + + var result = text[ offset - 1 ]; + text = text.slice( cursor + offset ); + cursor ++; + return result; + + }; + + for ( var i = 0; i < CORRECT.length; ++ i ) { + + var num = read( 1 ); + if ( num == CORRECT[ i ] ) { + + return false; + + } + + } + + return true; + + } + + /** + * @returns {number} + */ + function getFbxVersion( text ) { + + var versionRegExp = /FBXVersion: (\d+)/; + var match = text.match( versionRegExp ); + if ( match ) { + + var version = parseInt( match[ 1 ] ); + return version; + + } + throw new Error( 'FBXLoader: Cannot find the version number for the file given.' ); + + } + + /** + * Converts FBX ticks into real time seconds. + * @param {number} time - FBX tick timestamp to convert. + * @returns {number} - FBX tick in real world time. + */ + function ConvertFBXTimeToSeconds( time ) { + + // Constant is FBX ticks per second. + return time / 46186158000; + + } + + /** + * Parses comma separated list of float numbers and returns them in an array. + * @example + * // Returns [ 5.6, 9.4, 2.5, 1.4 ] + * parseFloatArray( "5.6,9.4,2.5,1.4" ) + * @returns {number[]} + */ + function parseFloatArray( floatString ) { + + return floatString.split( ',' ).map( function ( stringValue ) { + + return parseFloat( stringValue ); + + } ); + + } + + /** + * Parses comma separated list of int numbers and returns them in an array. + * @example + * // Returns [ 5, 8, 2, 3 ] + * parseFloatArray( "5,8,2,3" ) + * @returns {number[]} + */ + function parseIntArray( intString ) { + + return intString.split( ',' ).map( function ( stringValue ) { + + return parseInt( stringValue ); + + } ); + + } + + function parseMatrixArray( floatString ) { + + return new THREE.Matrix4().fromArray( parseFloatArray( floatString ) ); + + } + + /** + * Converts number from degrees into radians. + * @param {number} value + * @returns {number} + */ + function degreeToRadian( value ) { + + return value * Math.PI / 180; + + } + +} )(); diff --git a/src/jlmap3d/main/loaders/MTLLoader.js b/src/jlmap3d/main/loaders/MTLLoader.js new file mode 100644 index 000000000..50de5b936 --- /dev/null +++ b/src/jlmap3d/main/loaders/MTLLoader.js @@ -0,0 +1,583 @@ +/** + * Loads a Wavefront .mtl file specifying materials + * + * @author angelxuanchang + */ + +THREE.MTLLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + +}; + +THREE.MTLLoader.prototype = { + + constructor: THREE.MTLLoader, + + /** + * Loads and parses a MTL asset from a URL. + * + * @param {String} url - URL to the MTL file. + * @param {Function} [onLoad] - Callback invoked with the loaded object. + * @param {Function} [onProgress] - Callback for download progress. + * @param {Function} [onError] - Callback for download errors. + * + * @see setPath setResourcePath + * + * @note In order for relative texture references to resolve correctly + * you must call setResourcePath() explicitly prior to load. + */ + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = ( this.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : this.path; + + var loader = new THREE.FileLoader( this.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( text, path ) ); + + }, onProgress, onError ); + + }, + + /** + * Set base path for resolving references. + * If set this path will be prepended to each loaded and found reference. + * + * @see setResourcePath + * @param {String} path + * @return {THREE.MTLLoader} + * + * @example + * mtlLoader.setPath( 'assets/obj/' ); + * mtlLoader.load( 'my.mtl', ... ); + */ + setPath: function ( path ) { + + this.path = path; + return this; + + }, + + /** + * Set base path for additional resources like textures. + * + * @see setPath + * @param {String} path + * @return {THREE.MTLLoader} + * + * @example + * mtlLoader.setPath( 'assets/obj/' ); + * mtlLoader.setResourcePath( 'assets/textures/' ); + * mtlLoader.load( 'my.mtl', ... ); + */ + setResourcePath: function ( path ) { + + this.resourcePath = path; + return this; + + }, + + setTexturePath: function ( path ) { + + console.warn( 'THREE.MTLLoader: .setTexturePath() has been renamed to .setResourcePath().' ); + return this.setResourcePath( path ); + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setMaterialOptions: function ( value ) { + + this.materialOptions = value; + return this; + + }, + + /** + * Parses a MTL file. + * + * @param {String} text - Content of MTL file + * @return {THREE.MTLLoader.MaterialCreator} + * + * @see setPath setResourcePath + * + * @note In order for relative texture references to resolve correctly + * you must call setResourcePath() explicitly prior to parse. + */ + parse: function ( text, path ) { + + var lines = text.split( '\n' ); + var info = {}; + var delimiter_pattern = /\s+/; + var materialsInfo = {}; + + for ( var i = 0; i < lines.length; i ++ ) { + + var line = lines[ i ]; + line = line.trim(); + + if ( line.length === 0 || line.charAt( 0 ) === '#' ) { + + // Blank line or comment ignore + continue; + + } + + var pos = line.indexOf( ' ' ); + + var key = ( pos >= 0 ) ? line.substring( 0, pos ) : line; + key = key.toLowerCase(); + + var value = ( pos >= 0 ) ? line.substring( pos + 1 ) : ''; + value = value.trim(); + + if ( key === 'newmtl' ) { + + // New material + + info = { name: value }; + materialsInfo[ value ] = info; + + } else { + + if ( key === 'ka' || key === 'kd' || key === 'ks' || key ==='ke' ) { + + var ss = value.split( delimiter_pattern, 3 ); + info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ]; + + } else { + + info[ key ] = value; + + } + + } + + } + + var materialCreator = new THREE.MTLLoader.MaterialCreator( this.resourcePath || path, this.materialOptions ); + materialCreator.setCrossOrigin( this.crossOrigin ); + materialCreator.setManager( this.manager ); + materialCreator.setMaterials( materialsInfo ); + return materialCreator; + + } + +}; + +/** + * Create a new THREE-MTLLoader.MaterialCreator + * @param baseUrl - Url relative to which textures are loaded + * @param options - Set of options on how to construct the materials + * side: Which side to apply the material + * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide + * wrap: What type of wrapping to apply for textures + * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping + * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 + * Default: false, assumed to be already normalized + * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's + * Default: false + * @constructor + */ + +THREE.MTLLoader.MaterialCreator = function ( baseUrl, options ) { + + this.baseUrl = baseUrl || ''; + this.options = options; + this.materialsInfo = {}; + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + this.side = ( this.options && this.options.side ) ? this.options.side : THREE.FrontSide; + this.wrap = ( this.options && this.options.wrap ) ? this.options.wrap : THREE.RepeatWrapping; + +}; + +THREE.MTLLoader.MaterialCreator.prototype = { + + constructor: THREE.MTLLoader.MaterialCreator, + + crossOrigin: 'anonymous', + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setManager: function ( value ) { + + this.manager = value; + + }, + + setMaterials: function ( materialsInfo ) { + + this.materialsInfo = this.convert( materialsInfo ); + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + }, + + convert: function ( materialsInfo ) { + + if ( ! this.options ) return materialsInfo; + + var converted = {}; + + for ( var mn in materialsInfo ) { + + // Convert materials info into normalized form based on options + + var mat = materialsInfo[ mn ]; + + var covmat = {}; + + converted[ mn ] = covmat; + + for ( var prop in mat ) { + + var save = true; + var value = mat[ prop ]; + var lprop = prop.toLowerCase(); + + switch ( lprop ) { + + case 'kd': + case 'ka': + case 'ks': + + // Diffuse color (color under white light) using RGB values + + if ( this.options && this.options.normalizeRGB ) { + + value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ]; + + } + + if ( this.options && this.options.ignoreZeroRGBs ) { + + if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0 ) { + + // ignore + + save = false; + + } + + } + + break; + + default: + + break; + + } + + if ( save ) { + + covmat[ lprop ] = value; + + } + + } + + } + + return converted; + + }, + + preload: function () { + + for ( var mn in this.materialsInfo ) { + + this.create( mn ); + + } + + }, + + getIndex: function ( materialName ) { + + return this.nameLookup[ materialName ]; + + }, + + getAsArray: function () { + + var index = 0; + + for ( var mn in this.materialsInfo ) { + + this.materialsArray[ index ] = this.create( mn ); + this.nameLookup[ mn ] = index; + index ++; + + } + + return this.materialsArray; + + }, + + create: function ( materialName ) { + + if ( this.materials[ materialName ] === undefined ) { + + this.createMaterial_( materialName ); + + } + + return this.materials[ materialName ]; + + }, + + createMaterial_: function ( materialName ) { + + // Create material + + var scope = this; + var mat = this.materialsInfo[ materialName ]; + var params = { + + name: materialName, + side: this.side + + }; + + function resolveURL( baseUrl, url ) { + + if ( typeof url !== 'string' || url === '' ) + return ''; + + // Absolute URL + if ( /^https?:\/\//i.test( url ) ) return url; + + return baseUrl + url; + + } + + function setMapForType( mapType, value ) { + + if ( params[ mapType ] ) return; // Keep the first encountered texture + + var texParams = scope.getTextureParams( value, params ); + var map = scope.loadTexture( resolveURL( scope.baseUrl, texParams.url ) ); + + map.repeat.copy( texParams.scale ); + map.offset.copy( texParams.offset ); + + map.wrapS = scope.wrap; + map.wrapT = scope.wrap; + + params[ mapType ] = map; + + } + + for ( var prop in mat ) { + + var value = mat[ prop ]; + var n; + + if ( value === '' ) continue; + + switch ( prop.toLowerCase() ) { + + // Ns is material specular exponent + + case 'kd': + + // Diffuse color (color under white light) using RGB values + + params.color = new THREE.Color().fromArray( value ); + + break; + + case 'ks': + + // Specular color (color when light is reflected from shiny surface) using RGB values + params.specular = new THREE.Color().fromArray( value ); + + break; + + case 'ke': + + // Emissive using RGB values + params.emissive = new THREE.Color().fromArray( value ); + + break; + + case 'map_kd': + + // Diffuse texture map + + setMapForType( "map", value ); + + break; + + case 'map_ks': + + // Specular map + + setMapForType( "specularMap", value ); + + break; + + case 'map_ke': + + // Emissive map + + setMapForType( "emissiveMap", value ); + + break; + + case 'norm': + + setMapForType( "normalMap", value ); + + break; + + case 'map_bump': + case 'bump': + + // Bump texture map + + setMapForType( "bumpMap", value ); + + break; + + case 'map_d': + + // Alpha map + + setMapForType( "alphaMap", value ); + params.transparent = true; + + break; + + case 'ns': + + // The specular exponent (defines the focus of the specular highlight) + // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. + + params.shininess = parseFloat( value ); + + break; + + case 'd': + n = parseFloat( value ); + + if ( n < 1 ) { + + params.opacity = n; + params.transparent = true; + + } + + break; + + case 'tr': + n = parseFloat( value ); + + if ( this.options && this.options.invertTrProperty ) n = 1 - n; + + if ( n > 0 ) { + + params.opacity = 1 - n; + params.transparent = true; + + } + + break; + + default: + break; + + } + + } + + this.materials[ materialName ] = new THREE.MeshPhongMaterial( params ); + return this.materials[ materialName ]; + + }, + + getTextureParams: function ( value, matParams ) { + + var texParams = { + + scale: new THREE.Vector2( 1, 1 ), + offset: new THREE.Vector2( 0, 0 ) + + }; + + var items = value.split( /\s+/ ); + var pos; + + pos = items.indexOf( '-bm' ); + + if ( pos >= 0 ) { + + matParams.bumpScale = parseFloat( items[ pos + 1 ] ); + items.splice( pos, 2 ); + + } + + pos = items.indexOf( '-s' ); + + if ( pos >= 0 ) { + + texParams.scale.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); + items.splice( pos, 4 ); // we expect 3 parameters here! + + } + + pos = items.indexOf( '-o' ); + + if ( pos >= 0 ) { + + texParams.offset.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); + items.splice( pos, 4 ); // we expect 3 parameters here! + + } + + texParams.url = items.join( ' ' ).trim(); + return texParams; + + }, + + loadTexture: function ( url, mapping, onLoad, onProgress, onError ) { + + var texture; + var loader = THREE.Loader.Handlers.get( url ); + var manager = ( this.manager !== undefined ) ? this.manager : THREE.DefaultLoadingManager; + + if ( loader === null ) { + + loader = new THREE.TextureLoader( manager ); + + } + + if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin ); + texture = loader.load( url, onLoad, onProgress, onError ); + + if ( mapping !== undefined ) texture.mapping = mapping; + + return texture; + + } + +}; diff --git a/src/jlmap3d/main/loaders/OBJLoader.js b/src/jlmap3d/main/loaders/OBJLoader.js new file mode 100644 index 000000000..1408c1b4d --- /dev/null +++ b/src/jlmap3d/main/loaders/OBJLoader.js @@ -0,0 +1,797 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.OBJLoader = ( function () { + + // o object_name | g group_name + var object_pattern = /^[og]\s*(.+)?/; + // mtllib file_reference + var material_library_pattern = /^mtllib /; + // usemtl material_name + var material_use_pattern = /^usemtl /; + + function ParserState() { + + var state = { + objects: [], + object: {}, + + vertices: [], + normals: [], + colors: [], + uvs: [], + + materialLibraries: [], + + startObject: function ( name, fromDeclaration ) { + + // If the current object (initial from reset) is not from a g/o declaration in the parsed + // file. We need to use it for the first parsed g/o to keep things in sync. + if ( this.object && this.object.fromDeclaration === false ) { + + this.object.name = name; + this.object.fromDeclaration = ( fromDeclaration !== false ); + return; + + } + + var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined ); + + if ( this.object && typeof this.object._finalize === 'function' ) { + + this.object._finalize( true ); + + } + + this.object = { + name: name || '', + fromDeclaration: ( fromDeclaration !== false ), + + geometry: { + vertices: [], + normals: [], + colors: [], + uvs: [] + }, + materials: [], + smooth: true, + + startMaterial: function ( name, libraries ) { + + var previous = this._finalize( false ); + + // New usemtl declaration overwrites an inherited material, except if faces were declared + // after the material, then it must be preserved for proper MultiMaterial continuation. + if ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) { + + this.materials.splice( previous.index, 1 ); + + } + + var material = { + index: this.materials.length, + name: name || '', + mtllib: ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ), + smooth: ( previous !== undefined ? previous.smooth : this.smooth ), + groupStart: ( previous !== undefined ? previous.groupEnd : 0 ), + groupEnd: - 1, + groupCount: - 1, + inherited: false, + + clone: function ( index ) { + + var cloned = { + index: ( typeof index === 'number' ? index : this.index ), + name: this.name, + mtllib: this.mtllib, + smooth: this.smooth, + groupStart: 0, + groupEnd: - 1, + groupCount: - 1, + inherited: false + }; + cloned.clone = this.clone.bind( cloned ); + return cloned; + + } + }; + + this.materials.push( material ); + + return material; + + }, + + currentMaterial: function () { + + if ( this.materials.length > 0 ) { + + return this.materials[ this.materials.length - 1 ]; + + } + + return undefined; + + }, + + _finalize: function ( end ) { + + var lastMultiMaterial = this.currentMaterial(); + if ( lastMultiMaterial && lastMultiMaterial.groupEnd === - 1 ) { + + lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; + lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; + lastMultiMaterial.inherited = false; + + } + + // Ignore objects tail materials if no face declarations followed them before a new o/g started. + if ( end && this.materials.length > 1 ) { + + for ( var mi = this.materials.length - 1; mi >= 0; mi -- ) { + + if ( this.materials[ mi ].groupCount <= 0 ) { + + this.materials.splice( mi, 1 ); + + } + + } + + } + + // Guarantee at least one empty material, this makes the creation later more straight forward. + if ( end && this.materials.length === 0 ) { + + this.materials.push( { + name: '', + smooth: this.smooth + } ); + + } + + return lastMultiMaterial; + + } + }; + + // Inherit previous objects material. + // Spec tells us that a declared material must be set to all objects until a new material is declared. + // If a usemtl declaration is encountered while this new object is being parsed, it will + // overwrite the inherited material. Exception being that there was already face declarations + // to the inherited material, then it will be preserved for proper MultiMaterial continuation. + + if ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) { + + var declared = previousMaterial.clone( 0 ); + declared.inherited = true; + this.object.materials.push( declared ); + + } + + this.objects.push( this.object ); + + }, + + finalize: function () { + + if ( this.object && typeof this.object._finalize === 'function' ) { + + this.object._finalize( true ); + + } + + }, + + parseVertexIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; + + }, + + parseNormalIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; + + }, + + parseUVIndex: function ( value, len ) { + + var index = parseInt( value, 10 ); + return ( index >= 0 ? index - 1 : index + len / 2 ) * 2; + + }, + + addVertex: function ( a, b, c ) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); + + }, + + addVertexPoint: function ( a ) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + + }, + + addVertexLine: function ( a ) { + + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + + }, + + addNormal: function ( a, b, c ) { + + var src = this.normals; + var dst = this.object.geometry.normals; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); + + }, + + addColor: function ( a, b, c ) { + + var src = this.colors; + var dst = this.object.geometry.colors; + + dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); + + }, + + addUV: function ( a, b, c ) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push( src[ a + 0 ], src[ a + 1 ] ); + dst.push( src[ b + 0 ], src[ b + 1 ] ); + dst.push( src[ c + 0 ], src[ c + 1 ] ); + + }, + + addUVLine: function ( a ) { + + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push( src[ a + 0 ], src[ a + 1 ] ); + + }, + + addFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) { + + var vLen = this.vertices.length; + + var ia = this.parseVertexIndex( a, vLen ); + var ib = this.parseVertexIndex( b, vLen ); + var ic = this.parseVertexIndex( c, vLen ); + + this.addVertex( ia, ib, ic ); + + if ( ua !== undefined && ua !== '' ) { + + var uvLen = this.uvs.length; + ia = this.parseUVIndex( ua, uvLen ); + ib = this.parseUVIndex( ub, uvLen ); + ic = this.parseUVIndex( uc, uvLen ); + this.addUV( ia, ib, ic ); + + } + + if ( na !== undefined && na !== '' ) { + + // Normals are many times the same. If so, skip function call and parseInt. + var nLen = this.normals.length; + ia = this.parseNormalIndex( na, nLen ); + + ib = na === nb ? ia : this.parseNormalIndex( nb, nLen ); + ic = na === nc ? ia : this.parseNormalIndex( nc, nLen ); + + this.addNormal( ia, ib, ic ); + + } + + if ( this.colors.length > 0 ) { + + this.addColor( ia, ib, ic ); + + } + + }, + + addPointGeometry: function ( vertices ) { + + this.object.geometry.type = 'Points'; + + var vLen = this.vertices.length; + + for ( var vi = 0, l = vertices.length; vi < l; vi ++ ) { + + this.addVertexPoint( this.parseVertexIndex( vertices[ vi ], vLen ) ); + + } + + }, + + addLineGeometry: function ( vertices, uvs ) { + + this.object.geometry.type = 'Line'; + + var vLen = this.vertices.length; + var uvLen = this.uvs.length; + + for ( var vi = 0, l = vertices.length; vi < l; vi ++ ) { + + this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) ); + + } + + for ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) { + + this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) ); + + } + + } + + }; + + state.startObject( '', false ); + + return state; + + } + + // + + function OBJLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + + this.materials = null; + + } + + OBJLoader.prototype = { + + constructor: OBJLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new THREE.FileLoader( scope.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( text ) ); + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + + return this; + + }, + + setMaterials: function ( materials ) { + + this.materials = materials; + + return this; + + }, + + parse: function ( text ) { + + //console.time( 'OBJLoader' ); + + var state = new ParserState(); + + if ( text.indexOf( '\r\n' ) !== - 1 ) { + + // This is faster than String.split with regex that splits on both + text = text.replace( /\r\n/g, '\n' ); + + } + + if ( text.indexOf( '\\\n' ) !== - 1 ) { + + // join lines separated by a line continuation character (\) + text = text.replace( /\\\n/g, '' ); + + } + + var lines = text.split( '\n' ); + var line = '', lineFirstChar = ''; + var lineLength = 0; + var result = []; + + // Faster to just trim left side of the line. Use if available. + var trimLeft = ( typeof ''.trimLeft === 'function' ); + + for ( var i = 0, l = lines.length; i < l; i ++ ) { + + line = lines[ i ]; + + line = trimLeft ? line.trimLeft() : line.trim(); + + lineLength = line.length; + + if ( lineLength === 0 ) continue; + + lineFirstChar = line.charAt( 0 ); + + // @todo invoke passed in handler if any + if ( lineFirstChar === '#' ) continue; + + if ( lineFirstChar === 'v' ) { + + var data = line.split( /\s+/ ); + + switch ( data[ 0 ] ) { + + case 'v': + state.vertices.push( + parseFloat( data[ 1 ] ), + parseFloat( data[ 2 ] ), + parseFloat( data[ 3 ] ) + ); + if ( data.length === 8 ) { + + state.colors.push( + parseFloat( data[ 4 ] ), + parseFloat( data[ 5 ] ), + parseFloat( data[ 6 ] ) + + ); + + } + break; + case 'vn': + state.normals.push( + parseFloat( data[ 1 ] ), + parseFloat( data[ 2 ] ), + parseFloat( data[ 3 ] ) + ); + break; + case 'vt': + state.uvs.push( + parseFloat( data[ 1 ] ), + parseFloat( data[ 2 ] ) + ); + break; + + } + + } else if ( lineFirstChar === 'f' ) { + + var lineData = line.substr( 1 ).trim(); + var vertexData = lineData.split( /\s+/ ); + var faceVertices = []; + + // Parse the face vertex data into an easy to work with format + + for ( var j = 0, jl = vertexData.length; j < jl; j ++ ) { + + var vertex = vertexData[ j ]; + + if ( vertex.length > 0 ) { + + var vertexParts = vertex.split( '/' ); + faceVertices.push( vertexParts ); + + } + + } + + // Draw an edge between the first vertex and all subsequent vertices to form an n-gon + + var v1 = faceVertices[ 0 ]; + + for ( var j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) { + + var v2 = faceVertices[ j ]; + var v3 = faceVertices[ j + 1 ]; + + state.addFace( + v1[ 0 ], v2[ 0 ], v3[ 0 ], + v1[ 1 ], v2[ 1 ], v3[ 1 ], + v1[ 2 ], v2[ 2 ], v3[ 2 ] + ); + + } + + } else if ( lineFirstChar === 'l' ) { + + var lineParts = line.substring( 1 ).trim().split( " " ); + var lineVertices = [], lineUVs = []; + + if ( line.indexOf( "/" ) === - 1 ) { + + lineVertices = lineParts; + + } else { + + for ( var li = 0, llen = lineParts.length; li < llen; li ++ ) { + + var parts = lineParts[ li ].split( "/" ); + + if ( parts[ 0 ] !== "" ) lineVertices.push( parts[ 0 ] ); + if ( parts[ 1 ] !== "" ) lineUVs.push( parts[ 1 ] ); + + } + + } + state.addLineGeometry( lineVertices, lineUVs ); + + } else if ( lineFirstChar === 'p' ) { + + var lineData = line.substr( 1 ).trim(); + var pointData = lineData.split( " " ); + + state.addPointGeometry( pointData ); + + } else if ( ( result = object_pattern.exec( line ) ) !== null ) { + + // o object_name + // or + // g group_name + + // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 + // var name = result[ 0 ].substr( 1 ).trim(); + var name = ( " " + result[ 0 ].substr( 1 ).trim() ).substr( 1 ); + + state.startObject( name ); + + } else if ( material_use_pattern.test( line ) ) { + + // material + + state.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries ); + + } else if ( material_library_pattern.test( line ) ) { + + // mtl file + + state.materialLibraries.push( line.substring( 7 ).trim() ); + + } else if ( lineFirstChar === 's' ) { + + result = line.split( ' ' ); + + // smooth shading + + // @todo Handle files that have varying smooth values for a set of faces inside one geometry, + // but does not define a usemtl for each face set. + // This should be detected and a dummy material created (later MultiMaterial and geometry groups). + // This requires some care to not create extra material on each smooth value for "normal" obj files. + // where explicit usemtl defines geometry groups. + // Example asset: examples/models/obj/cerberus/Cerberus.obj + + /* + * http://paulbourke.net/dataformats/obj/ + * or + * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf + * + * From chapter "Grouping" Syntax explanation "s group_number": + * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. + * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form + * surfaces, smoothing groups are either turned on or off; there is no difference between values greater + * than 0." + */ + if ( result.length > 1 ) { + + var value = result[ 1 ].trim().toLowerCase(); + state.object.smooth = ( value !== '0' && value !== 'off' ); + + } else { + + // ZBrush can produce "s" lines #11707 + state.object.smooth = true; + + } + var material = state.object.currentMaterial(); + if ( material ) material.smooth = state.object.smooth; + + } else { + + // Handle null terminated files without exception + if ( line === '\0' ) continue; + + throw new Error( 'THREE.OBJLoader: Unexpected line: "' + line + '"' ); + + } + + } + + state.finalize(); + + var container = new THREE.Group(); + container.materialLibraries = [].concat( state.materialLibraries ); + + for ( var i = 0, l = state.objects.length; i < l; i ++ ) { + + var object = state.objects[ i ]; + var geometry = object.geometry; + var materials = object.materials; + var isLine = ( geometry.type === 'Line' ); + var isPoints = ( geometry.type === 'Points' ); + var hasVertexColors = false; + + // Skip o/g line declarations that did not follow with any faces + if ( geometry.vertices.length === 0 ) continue; + + var buffergeometry = new THREE.BufferGeometry(); + + buffergeometry.addAttribute( 'position', new THREE.Float32BufferAttribute( geometry.vertices, 3 ) ); + + if ( geometry.normals.length > 0 ) { + + buffergeometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( geometry.normals, 3 ) ); + + } else { + + buffergeometry.computeVertexNormals(); + + } + + if ( geometry.colors.length > 0 ) { + + hasVertexColors = true; + buffergeometry.addAttribute( 'color', new THREE.Float32BufferAttribute( geometry.colors, 3 ) ); + + } + + if ( geometry.uvs.length > 0 ) { + + buffergeometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( geometry.uvs, 2 ) ); + + } + + // Create materials + + var createdMaterials = []; + + for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { + + var sourceMaterial = materials[ mi ]; + var material = undefined; + + if ( this.materials !== null ) { + + material = this.materials.create( sourceMaterial.name ); + + // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. + if ( isLine && material && ! ( material instanceof THREE.LineBasicMaterial ) ) { + + var materialLine = new THREE.LineBasicMaterial(); + THREE.Material.prototype.copy.call( materialLine, material ); + materialLine.color.copy( material.color ); + materialLine.lights = false; + material = materialLine; + + } else if ( isPoints && material && ! ( material instanceof THREE.PointsMaterial ) ) { + + var materialPoints = new THREE.PointsMaterial( { size: 10, sizeAttenuation: false } ); + THREE.Material.prototype.copy.call( materialPoints, material ); + materialPoints.color.copy( material.color ); + materialPoints.map = material.map; + materialPoints.lights = false; + material = materialPoints; + + } + + } + + if ( ! material ) { + + if ( isLine ) { + + material = new THREE.LineBasicMaterial(); + + } else if ( isPoints ) { + + material = new THREE.PointsMaterial( { size: 1, sizeAttenuation: false } ); + + } else { + + material = new THREE.MeshPhongMaterial(); + + } + + material.name = sourceMaterial.name; + + } + + material.flatShading = sourceMaterial.smooth ? false : true; + material.vertexColors = hasVertexColors ? THREE.VertexColors : THREE.NoColors; + + createdMaterials.push( material ); + + } + + // Create mesh + + var mesh; + + if ( createdMaterials.length > 1 ) { + + for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { + + var sourceMaterial = materials[ mi ]; + buffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi ); + + } + + if ( isLine ) { + + mesh = new THREE.LineSegments( buffergeometry, createdMaterials ); + + } else if ( isPoints ) { + + mesh = new THREE.Points( buffergeometry, createdMaterials ); + + } else { + + mesh = new THREE.Mesh( buffergeometry, createdMaterials ); + + } + + } else { + + if ( isLine ) { + + mesh = new THREE.LineSegments( buffergeometry, createdMaterials[ 0 ] ); + + } else if ( isPoints ) { + + mesh = new THREE.Points( buffergeometry, createdMaterials[ 0 ] ); + + } else { + + mesh = new THREE.Mesh( buffergeometry, createdMaterials[ 0 ] ); + + } + + } + + mesh.name = object.name; + + container.add( mesh ); + + } + + //console.timeEnd( 'OBJLoader' ); + + return container; + + } + + }; + + return OBJLoader; + +} )(); diff --git a/src/jlmap3d/main/loaders/model/Assetmaterial.js b/src/jlmap3d/main/loaders/model/Assetmaterial.js new file mode 100644 index 000000000..4f103890c --- /dev/null +++ b/src/jlmap3d/main/loaders/model/Assetmaterial.js @@ -0,0 +1,23 @@ +export function Assetmaterial(){ + + let scope = this; + + this.uuid = null; + + this.name = null; + + this.classtype = null; + + this.modeltype = null; + + this.asseturl = null; + + this.create = function(){ + + } + + this.dispose = function (){ + + } + +} diff --git a/src/jlmap3d/main/loaders/model/Assetmodel.js b/src/jlmap3d/main/loaders/model/Assetmodel.js new file mode 100644 index 000000000..bb5c5ad2c --- /dev/null +++ b/src/jlmap3d/main/loaders/model/Assetmodel.js @@ -0,0 +1,27 @@ +export function AssetModel(data){ + + let scope = this; + + this.id = data.id; + + this.name = data.name; + + this.deviceType = data.deviceType; + + this.type = data.type; + + this.assetUrl = data.assetUrl; + + this.mesh = null; + + this.animate = null; + + this.create = function(){ + + } + + this.dispose = function(){ + + } + +} diff --git a/src/jlmap3d/main/three.min.js b/src/jlmap3d/main/three.min.js new file mode 100644 index 000000000..87bc1451e --- /dev/null +++ b/src/jlmap3d/main/three.min.js @@ -0,0 +1,971 @@ +// threejs.org/license +(function(l,ka){"object"===typeof exports&&"undefined"!==typeof module?ka(exports):"function"===typeof define&&define.amd?define(["exports"],ka):(l=l||self,ka(l.THREE={}))})(this,function(l){function ka(){}function B(a,b){this.x=a||0;this.y=b||0}function J(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];0b&&(b=a[c]);return b}function C(){Object.defineProperty(this,"id",{value:Xf+=2});this.uuid=H.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}} +function Ob(a,b,c,d,e,f){G.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.fromBufferGeometry(new rb(a,b,c,d,e,f));this.mergeVertices()}function rb(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,l,fa,A,B){var r=f/fa,u=g/A,w=f/2,x=g/2,z=l/2;g=fa+1;var D=A+1,y=f=0,Q,Fa,ta=new n;for(Fa=0;Fam;m++){if(q=d[m])if(h=q[0],k=q[1]){p&&e.addAttribute("morphTarget"+m, +p[h]);f&&e.addAttribute("morphNormal"+m,f[h]);c[m]=k;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function ig(a,b){var c={};return{update:function(d){var e=b.render.frame,f=d.geometry,g=a.get(d,f);c[g.id]!==e&&(f.isGeometry&&g.updateFromObject(d),a.update(g),c[g.id]=e);return g},dispose:function(){c={}}}}function $a(a,b,c,d,e,f,g,h,k,m){a=void 0!==a?a:[];V.call(this,a,void 0!==b?b:301,c,d,e,f,void 0!==g?g:1022,h,k,m);this.flipY=!1}function Qb(a,b,c,d){V.call(this,null); +this.image={data:a,width:b,height:c,depth:d};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1}function Rb(a,b,c){var d=a[0];if(0>=d||0/gm, +function(a,c){a=U[c];if(void 0===a)throw Error("Can not resolve #include <"+c+">");return fe(a)})}function kf(a){return a.replace(/#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(a,c,d,e){a="";for(c=parseInt(c);cd||a.height>d)e=d/Math.max(a.width,a.height);if(1>e||!0===b){if(a instanceof ImageBitmap||a instanceof HTMLImageElement||a instanceof HTMLCanvasElement)return d=b?H.floorPowerOfTwo:Math.floor,b=d(e*a.width),e=d(e*a.height),void 0===B&&(B=h(b,e)),c=c?h(b,e):B,c.width=b,c.height=e,c.getContext("2d").drawImage(a,0,0,b,e),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+ +a.width+"x"+a.height+") to ("+b+"x"+e+")."),F?c.transferToImageBitmap():c;"data"in a&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+a.width+"x"+a.height+").")}return a}function m(a){return H.isPowerOfTwo(a.width)&&H.isPowerOfTwo(a.height)}function p(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function q(b,c,e,f){a.generateMipmap(b);d.get(c).__maxMipLevel=Math.log(Math.max(e,f))*Math.LOG2E}function v(a,c){if(!e.isWebGL2)return a;var d=a;6403===a&& +(5126===c&&(d=33326),5131===c&&(d=33325),5121===c&&(d=33321));6407===a&&(5126===c&&(d=34837),5131===c&&(d=34843),5121===c&&(d=32849));6408===a&&(5126===c&&(d=34836),5131===c&&(d=34842),5121===c&&(d=32856));33325===d||33326===d||34842===d||34836===d?b.get("EXT_color_buffer_float"):(34843===d||34837===d)&&console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.");return d}function l(a){return 1003===a||1004===a||1005===a?9728:9729}function r(b){b= +b.target;b.removeEventListener("dispose",r);var c=d.get(b);void 0!==c.__webglInit&&(a.deleteTexture(c.__webglTexture),d.remove(b));b.isVideoTexture&&delete A[b.id];g.memory.textures--}function u(b){b=b.target;b.removeEventListener("dispose",u);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]); +else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.remove(b.texture);d.remove(b)}g.memory.textures--}function n(a,b){var e=d.get(a);if(a.isVideoTexture){var f=a.id,h=g.render.frame;A[f]!==h&&(A[f]=h,a.update())}if(0r;r++)t[r]=g||l?l?b.image[r].image:b.image[r]:k(b.image[r],!1,!0,e.maxCubemapSize);var u=t[0],n=m(u)||e.isWebGL2,w=f.convert(b.format),y=f.convert(b.type),D=v(w,y); +z(34067,b,n);for(r=0;6>r;r++)if(g)for(var A,fa=t[r].mipmaps,Q=0,Ac=fa.length;Qr;r++)h.__webglFramebuffer[r]=a.createFramebuffer();else if(h.__webglFramebuffer=a.createFramebuffer(),r)if(e.isWebGL2){h.__webglMultisampledFramebuffer=a.createFramebuffer();h.__webglColorRenderbuffer=a.createRenderbuffer();a.bindRenderbuffer(36161,h.__webglColorRenderbuffer);r=f.convert(b.texture.format);var w=f.convert(b.texture.type);r=v(r,w);w=fa(b);a.renderbufferStorageMultisample(36161,w,r,b.width, +b.height);a.bindFramebuffer(36160,h.__webglMultisampledFramebuffer);a.framebufferRenderbuffer(36160,36064,36161,h.__webglColorRenderbuffer);a.bindRenderbuffer(36161,null);b.depthBuffer&&(h.__webglDepthRenderbuffer=a.createRenderbuffer(),Q(h.__webglDepthRenderbuffer,b,!0));a.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");if(l){c.bindTexture(34067,k.__webglTexture);z(34067,b.texture,t);for(r=0;6>r;r++)y(h.__webglFramebuffer[r], +b,36064,34069+r);p(b.texture,t)&&q(34067,b.texture,b.width,b.height);c.bindTexture(34067,null)}else c.bindTexture(3553,k.__webglTexture),z(3553,b.texture,t),y(h.__webglFramebuffer,b,36064,3553),p(b.texture,t)&&q(3553,b.texture,b.width,b.height),c.bindTexture(3553,null);if(b.depthBuffer){h=d.get(b);k=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(k)throw Error("target.depthTexture not supported in Cube render targets");if(b&&b.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported"); +a.bindFramebuffer(36160,h.__webglFramebuffer);if(!b.depthTexture||!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);n(b.depthTexture,0);h=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(36160, +36096,3553,h,0);else if(1027===b.depthTexture.format)a.framebufferTexture2D(36160,33306,3553,h,0);else throw Error("Unknown depthTexture format");}else if(k)for(h.__webglDepthbuffer=[],k=0;6>k;k++)a.bindFramebuffer(36160,h.__webglFramebuffer[k]),h.__webglDepthbuffer[k]=a.createRenderbuffer(),Q(h.__webglDepthbuffer[k],b);else a.bindFramebuffer(36160,h.__webglFramebuffer),h.__webglDepthbuffer=a.createRenderbuffer(),Q(h.__webglDepthbuffer,b);a.bindFramebuffer(36160,null)}};this.updateRenderTargetMipmap= +function(a){var b=a.texture,f=m(a)||e.isWebGL2;if(p(b,f)){f=a.isWebGLRenderTargetCube?34067:3553;var g=d.get(b).__webglTexture;c.bindTexture(f,g);q(f,b,a.width,a.height);c.bindTexture(f,null)}};this.updateMultisampleRenderTarget=function(b){if(b.isWebGLMultisampleRenderTarget)if(e.isWebGL2){var c=d.get(b);a.bindFramebuffer(36008,c.__webglMultisampledFramebuffer);a.bindFramebuffer(36009,c.__webglFramebuffer);c=b.width;var f=b.height,g=16384;b.depthBuffer&&(g|=256);b.stencilBuffer&&(g|=1024);a.blitFramebuffer(0, +0,c,f,0,0,c,f,g,9728)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")}}function of(a,b,c){return{convert:function(a){if(1E3===a)return 10497;if(1001===a)return 33071;if(1002===a)return 33648;if(1003===a)return 9728;if(1004===a)return 9984;if(1005===a)return 9986;if(1006===a)return 9729;if(1007===a)return 9985;if(1008===a)return 9987;if(1009===a)return 5121;if(1017===a)return 32819;if(1018===a)return 32820;if(1019===a)return 33635;if(1010===a)return 5120; +if(1011===a)return 5122;if(1012===a)return 5123;if(1013===a)return 5124;if(1014===a)return 5125;if(1015===a)return 5126;if(1016===a){if(c.isWebGL2)return 5131;var d=b.get("OES_texture_half_float");if(null!==d)return d.HALF_FLOAT_OES}if(1021===a)return 6406;if(1022===a)return 6407;if(1023===a)return 6408;if(1024===a)return 6409;if(1025===a)return 6410;if(1026===a)return 6402;if(1027===a)return 34041;if(1028===a)return 6403;if(100===a)return 32774;if(101===a)return 32778;if(102===a)return 32779;if(200=== +a)return 0;if(201===a)return 1;if(202===a)return 768;if(203===a)return 769;if(204===a)return 770;if(205===a)return 771;if(206===a)return 772;if(207===a)return 773;if(208===a)return 774;if(209===a)return 775;if(210===a)return 776;if(33776===a||33777===a||33778===a||33779===a)if(d=b.get("WEBGL_compressed_texture_s3tc"),null!==d){if(33776===a)return d.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===a)return d.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===a)return d.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===a)return d.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(35840=== +a||35841===a||35842===a||35843===a)if(d=b.get("WEBGL_compressed_texture_pvrtc"),null!==d){if(35840===a)return d.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===a)return d.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===a)return d.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===a)return d.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===a&&(d=b.get("WEBGL_compressed_texture_etc1"),null!==d))return d.COMPRESSED_RGB_ETC1_WEBGL;if(37808===a||37809===a||37810===a||37811===a||37812===a||37813===a||37814===a||37815===a||37816=== +a||37817===a||37818===a||37819===a||37820===a||37821===a)if(d=b.get("WEBGL_compressed_texture_astc"),null!==d)return a;if(103===a||104===a){if(c.isWebGL2){if(103===a)return 32775;if(104===a)return 32776}d=b.get("EXT_blend_minmax");if(null!==d){if(103===a)return d.MIN_EXT;if(104===a)return d.MAX_EXT}}if(1020===a){if(c.isWebGL2)return 34042;d=b.get("WEBGL_depth_texture");if(null!==d)return d.UNSIGNED_INT_24_8_WEBGL}return 0}}}function Sb(){E.call(this);this.type="Group"}function Ua(){E.call(this);this.type= +"Camera";this.matrixWorldInverse=new J;this.projectionMatrix=new J;this.projectionMatrixInverse=new J}function S(a,b,c,d){Ua.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!==c?c:.1;this.far=void 0!==d?d:2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function Ec(a){S.call(this);this.cameras=a||[]}function pf(a,b,c){qf.setFromMatrixPosition(b.matrixWorld);rf.setFromMatrixPosition(c.matrixWorld); +var d=qf.distanceTo(rf),e=b.projectionMatrix.elements,f=c.projectionMatrix.elements,g=e[14]/(e[10]-1);c=e[14]/(e[10]+1);var h=(e[9]+1)/e[5],k=(e[9]-1)/e[5],m=(e[8]-1)/e[0],p=(f[8]+1)/f[0];e=g*m;f=g*p;p=d/(-m+p);m=p*-m;b.matrixWorld.decompose(a.position,a.quaternion,a.scale);a.translateX(m);a.translateZ(p);a.matrixWorld.compose(a.position,a.quaternion,a.scale);a.matrixWorldInverse.getInverse(a.matrixWorld);b=g+p;g=c+p;a.projectionMatrix.makePerspective(e-m,f+(d-m),h*c/g*b,k*c/g*b,b,g)}function sf(a){function b(){return null!== +e&&!0===e.isPresenting}function c(){if(b()){var c=e.getEyeParameters("left"),f=c.renderWidth*p;c=c.renderHeight*p;D=a.getPixelRatio();a.getSize(x);a.setDrawingBufferSize(2*f,c,1);Q.start()}else d.enabled&&a.setDrawingBufferSize(x.width,x.height,D),Q.stop()}var d=this,e=null,f=null,g=null,h=[],k=new J,m=new J,p=1,q="stage";"undefined"!==typeof window&&"VRFrameData"in window&&(f=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",c,!1));var v=new J,l=new aa,r=new n,u=new S;u.bounds= +new ba(0,0,.5,1);u.layers.enable(1);var w=new S;w.bounds=new ba(.5,0,.5,1);w.layers.enable(2);var z=new Ec([u,w]);z.layers.enable(1);z.layers.enable(2);var x=new B,D,y=[];this.enabled=!1;this.getController=function(a){var b=h[a];void 0===b&&(b=new Sb,b.matrixAutoUpdate=!1,b.visible=!1,h[a]=b);return b};this.getDevice=function(){return e};this.setDevice=function(a){void 0!==a&&(e=a);Q.setContext(a)};this.setFramebufferScaleFactor=function(a){p=a};this.setFrameOfReferenceType=function(a){q=a};this.setPoseTarget= +function(a){void 0!==a&&(g=a)};this.getCamera=function(a){var c="stage"===q?1.6:0;if(!1===b())return a.position.set(0,c,0),a.rotation.set(0,0,0),a;e.depthNear=a.near;e.depthFar=a.far;e.getFrameData(f);if("stage"===q){var d=e.stageParameters;d?k.fromArray(d.sittingToStandingTransform):k.makeTranslation(0,c,0)}c=f.pose;d=null!==g?g:a;d.matrix.copy(k);d.matrix.decompose(d.position,d.quaternion,d.scale);null!==c.orientation&&(l.fromArray(c.orientation),d.quaternion.multiply(l));null!==c.position&&(l.setFromRotationMatrix(k), +r.fromArray(c.position),r.applyQuaternion(l),d.position.add(r));d.updateMatrixWorld();u.near=a.near;w.near=a.near;u.far=a.far;w.far=a.far;u.matrixWorldInverse.fromArray(f.leftViewMatrix);w.matrixWorldInverse.fromArray(f.rightViewMatrix);m.getInverse(k);"stage"===q&&(u.matrixWorldInverse.multiply(m),w.matrixWorldInverse.multiply(m));a=d.parent;null!==a&&(v.getInverse(a.matrixWorld),u.matrixWorldInverse.multiply(v),w.matrixWorldInverse.multiply(v));u.matrixWorld.getInverse(u.matrixWorldInverse);w.matrixWorld.getInverse(w.matrixWorldInverse); +u.projectionMatrix.fromArray(f.leftProjectionMatrix);w.projectionMatrix.fromArray(f.rightProjectionMatrix);pf(z,u,w);a=e.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&u.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&w.bounds.fromArray(a.rightBounds));a:for(a=0;af.matrixWorld.determinant();Z.setMaterial(e, +h);var k=l(a,c,e,f),m=!1;if(b!==d.id||U!==k.id||ta!==(!0===e.wireframe))b=d.id,U=k.id,ta=!0===e.wireframe,m=!0;f.morphTargetInfluences&&(xa.update(f,d,e,k),m=!0);h=d.index;var p=d.attributes.position;c=1;!0===e.wireframe&&(h=ua.getWireframeAttribute(d),c=2);a=Aa;if(null!==h){var q=ra.get(h);a=Ba;a.setIndex(q)}if(m){if(d&&d.isInstancedBufferGeometry&&!za.isWebGL2&&null===la.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); +else{Z.initAttributes();m=d.attributes;k=k.getAttributes();var v=e.defaultAttributeValues;for(A in k){var r=k[A];if(0<=r){var t=m[A];if(void 0!==t){var n=t.normalized,u=t.itemSize,w=ra.get(t);if(void 0!==w){var x=w.buffer,z=w.type;w=w.bytesPerElement;if(t.isInterleavedBufferAttribute){var y=t.data,D=y.stride;t=t.offset;y&&y.isInstancedInterleavedBuffer?(Z.enableAttributeAndDivisor(r,y.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=y.meshPerAttribute*y.count)):Z.enableAttribute(r); +O.bindBuffer(34962,x);O.vertexAttribPointer(r,u,z,n,D*w,t*w)}else t.isInstancedBufferAttribute?(Z.enableAttributeAndDivisor(r,t.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=t.meshPerAttribute*t.count)):Z.enableAttribute(r),O.bindBuffer(34962,x),O.vertexAttribPointer(r,u,z,n,0,0)}}else if(void 0!==v&&(n=v[A],void 0!==n))switch(n.length){case 2:O.vertexAttrib2fv(r,n);break;case 3:O.vertexAttrib3fv(r,n);break;case 4:O.vertexAttrib4fv(r,n);break;default:O.vertexAttrib1fv(r,n)}}}Z.disableUnusedAttributes()}null!== +h&&O.bindBuffer(34963,q.buffer)}q=Infinity;null!==h?q=h.count:void 0!==p&&(q=p.count);h=d.drawRange.start*c;p=null!==g?g.start*c:0;var A=Math.max(h,p);g=Math.max(0,Math.min(q,h+d.drawRange.count*c,p+(null!==g?g.count*c:Infinity))-1-A+1);if(0!==g){if(f.isMesh)if(!0===e.wireframe)Z.setLineWidth(e.wireframeLinewidth*(null===G?T:1)),a.setMode(1);else switch(f.drawMode){case 0:a.setMode(4);break;case 1:a.setMode(5);break;case 2:a.setMode(6)}else f.isLine?(e=e.linewidth,void 0===e&&(e=1),Z.setLineWidth(e* +(null===G?T:1)),f.isLineSegments?a.setMode(1):f.isLineLoop?a.setMode(2):a.setMode(3)):f.isPoints?a.setMode(0):f.isSprite&&a.setMode(4);d&&d.isInstancedBufferGeometry?0=za.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+za.maxTextures);ia+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."), +a=!0),b=b.texture);da.setTexture2D(b,c)}}();this.setTexture3D=function(){return function(a,b){da.setTexture3D(a,b)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);da.setTexture2D(b,c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."), +a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?da.setTextureCube(b,c):da.setTextureCubeDynamic(b,c)}}();this.setFramebuffer=function(a){L=a};this.getRenderTarget=function(){return G};this.setRenderTarget=function(a,b,c){(G=a)&&void 0===Da.get(a).__webglFramebuffer&&da.setupRenderTarget(a);var d=L,e=!1;a?(d=Da.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube?(d=d[b||0],e=!0):d=a.isWebGLMultisampleRenderTarget?Da.get(a).__webglMultisampledFramebuffer:d,V.copy(a.viewport), +W.copy(a.scissor),ca=a.scissorTest):(V.copy(ea).multiplyScalar(T),W.copy(aa).multiplyScalar(T),ca=pa);M!==d&&(O.bindFramebuffer(36160,d),M=d);Z.viewport(V);Z.scissor(W);Z.setScissorTest(ca);e&&(a=Da.get(a.texture),O.framebufferTexture2D(36160,36064,34069+b||0,a.__webglTexture,c||0))};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=Da.get(a).__webglFramebuffer;if(g){var h=!1;g!==M&&(O.bindFramebuffer(36160,g),h=!0);try{var k=a.texture,m=k.format,p=k.type;1023!== +m&&ja.convert(m)!==O.getParameter(35739)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===p||ja.convert(p)===O.getParameter(35738)||1015===p&&(za.isWebGL2||la.get("OES_texture_float")||la.get("WEBGL_color_buffer_float"))||1016===p&&(za.isWebGL2?la.get("EXT_color_buffer_float"):la.get("EXT_color_buffer_half_float"))?36053===O.checkFramebufferStatus(36160)?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&O.readPixels(b,c,d,e,ja.convert(m), +ja.convert(p),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&O.bindFramebuffer(36160,M)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")};this.copyFramebufferToTexture=function(a,b,c){var d=b.image.width,e=b.image.height, +f=ja.convert(b.format);this.setTexture2D(b,0);O.copyTexImage2D(3553,c||0,f,a.x,a.y,d,e,0)};this.copyTextureToTexture=function(a,b,c,d){var e=b.image.width,f=b.image.height,g=ja.convert(c.format),h=ja.convert(c.type);this.setTexture2D(c,0);b.isDataTexture?O.texSubImage2D(3553,d||0,a.x,a.y,e,f,g,h,b.image.data):O.texSubImage2D(3553,d||0,a.x,a.y,g,h,b.image)}}function yd(a,b){this.name="";this.color=new K(a);this.density=void 0!==b?b:2.5E-4}function zd(a,b,c){this.name="";this.color=new K(a);this.near= +void 0!==b?b:1;this.far=void 0!==c?c:1E3}function Ad(){E.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ub(a,b){this.array=a;this.stride=b;this.count=void 0!==a?a.length/b:0;this.dynamic=!1;this.updateRange={offset:0,count:-1};this.version=0}function Fc(a,b,c,d){this.data=a;this.itemSize=b;this.offset=c;this.normalized=!0===d}function jb(a){M.call(this);this.type="SpriteMaterial";this.color=new K(16777215);this.map=null;this.rotation=0; +this.sizeAttenuation=!0;this.lights=!1;this.transparent=!0;this.setValues(a)}function Gc(a){E.call(this);this.type="Sprite";if(void 0===Tb){Tb=new C;var b=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]);b=new ub(b,5);Tb.setIndex([0,1,2,0,2,3]);Tb.addAttribute("position",new Fc(b,3,0,!1));Tb.addAttribute("uv",new Fc(b,2,3,!1))}this.geometry=Tb;this.material=void 0!==a?a:new jb;this.center=new B(.5,.5)}function Hc(){E.call(this);this.type="LOD";Object.defineProperties(this,{levels:{enumerable:!0, +value:[]}})}function Ic(a,b){a&&a.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");va.call(this,a,b);this.type="SkinnedMesh";this.bindMode="attached";this.bindMatrix=new J;this.bindMatrixInverse=new J}function Bd(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton boneInverses is the wrong length."), +this.boneInverses=[],a=0,b=this.bones.length;ac;c++){var q=p[h[c]];var l=p[h[(c+1)%3]];f[0]=Math.min(q,l);f[1]=Math.max(q,l);q=f[0]+ +","+f[1];void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]})}}for(q in g)m=g[q],h=a.vertices[m.index1],b.push(h.x,h.y,h.z),h=a.vertices[m.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry)if(h=new n,null!==a.index){k=a.attributes.position;p=a.index;var t=a.groups;0===t.length&&(t=[{start:0,count:p.count,materialIndex:0}]);a=0;for(e=t.length;ac;c++)q=p.getX(m+c),l=p.getX(m+(c+1)%3),f[0]=Math.min(q,l),f[1]=Math.max(q,l),q=f[0]+","+ +f[1],void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]});for(q in g)m=g[q],h.fromBufferAttribute(k,m.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(k,m.index2),b.push(h.x,h.y,h.z)}else for(k=a.attributes.position,m=0,d=k.count/3;mc;c++)g=3*m+c,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z),g=3*m+(c+1)%3,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z);this.addAttribute("position",new F(b,3))}function Lc(a,b,c){G.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b, +stacks:c};this.fromBufferGeometry(new Xb(a,b,c));this.mergeVertices()}function Xb(a,b,c){C.call(this);this.type="ParametricBufferGeometry";this.parameters={func:a,slices:b,stacks:c};var d=[],e=[],f=[],g=[],h=new n,k=new n,m=new n,p=new n,q=new n,l,t;3>a.length&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.");var r=b+1;for(l=0;l<=c;l++){var u=l/c;for(t=0;t<=b;t++){var w=t/b;a(w,u,k);e.push(k.x,k.y,k.z);0<=w-1E-5?(a(w-1E-5,u,m),p.subVectors(k,m)):(a(w+ +1E-5,u,m),p.subVectors(m,k));0<=u-1E-5?(a(w,u-1E-5,m),q.subVectors(k,m)):(a(w,u+1E-5,m),q.subVectors(m,k));h.crossVectors(p,q).normalize();f.push(h.x,h.y,h.z);g.push(w,u)}}for(l=0;ld&&1===a.x&&(k[b]=a.x-1);0===c.x&&0===c.z&&(k[b]=d/2/Math.PI+.5)}C.call(this);this.type="PolyhedronBufferGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],k=[];(function(a){for(var c=new n,d=new n,g=new n,h=0;he&&(.2>b&&(k[a+0]+=1),.2>c&&(k[a+2]+=1),.2>d&&(k[a+4]+=1))})();this.addAttribute("position",new F(h,3));this.addAttribute("normal",new F(h.slice(),3));this.addAttribute("uv",new F(k,2));0===d?this.computeVertexNormals():this.normalizeNormals()}function Nc(a,b){G.call(this);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Yb(a,b));this.mergeVertices()} +function Yb(a,b){Aa.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Oc(a,b){G.call(this);this.type="OctahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new vb(a,b));this.mergeVertices()}function vb(a,b){Aa.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],a,b);this.type="OctahedronBufferGeometry";this.parameters= +{radius:a,detail:b}}function Pc(a,b){G.call(this);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Zb(a,b));this.mergeVertices()}function Zb(a,b){var c=(1+Math.sqrt(5))/2;Aa.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,b);this.type="IcosahedronBufferGeometry";this.parameters= +{radius:a,detail:b}}function Qc(a,b){G.call(this);this.type="DodecahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new $b(a,b));this.mergeVertices()}function $b(a,b){var c=(1+Math.sqrt(5))/2,d=1/c;Aa.call(this,[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-d,-c,0,-d,c,0,d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c,0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2, +6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],a,b);this.type="DodecahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Rc(a,b,c,d,e,f){G.call(this);this.type="TubeGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new wb(a,b,c,d,e);this.tangents=a.tangents;this.normals= +a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function wb(a,b,c,d,e){function f(e){p=a.getPointAt(e/b,p);var f=g.normals[e];e=g.binormals[e];for(l=0;l<=d;l++){var m=l/d*Math.PI*2,q=Math.sin(m);m=-Math.cos(m);k.x=m*f.x+q*e.x;k.y=m*f.y+q*e.y;k.z=m*f.z+q*e.z;k.normalize();r.push(k.x,k.y,k.z);h.x=p.x+c*k.x;h.y=p.y+c*k.y;h.z=p.z+c*k.z;t.push(h.x,h.y,h.z)}}C.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d, +closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new n,k=new n,m=new B,p=new n,q,l,t=[],r=[],u=[],w=[];for(q=0;q=b;e-=d)f=vf(e,a[e],a[e+1],f);f&&xb(f,f.next)&&(Uc(f),f=f.next);return f}function Vc(a,b){if(!a)return a;b||(b=a);do{var c=!1;if(a.steiner||!xb(a,a.next)&&0!==qa(a.prev,a,a.next))a=a.next;else{Uc(a);a=b=a.prev;if(a===a.next)break;c=!0}}while(c||a!==b);return b}function Wc(a,b,c,d,e,f,g){if(a){if(!g&&f){var h=a,k=h;do null===k.z&&(k.z=ke(k.x,k.y,d,e,f)),k.prevZ=k.prev,k=k.nextZ= +k.next;while(k!==h);k.prevZ.nextZ=null;k.prevZ=null;h=k;var m,p,q,l,t=1;do{k=h;var r=h=null;for(p=0;k;){p++;var n=k;for(m=q=0;mq.x?p.x>t.x?p.x:t.x:q.x>t.x?q.x:t.x,D=p.y>q.y?p.y>t.y?p.y:t.y:q.y> +t.y?q.y:t.y;m=ke(p.x=m;){if(w!==r.prev&&w!==r.next&&Dd(p.x,p.y,q.x,q.y,t.x,t.y,w.x,w.y)&&0<=qa(w.prev,w,w.next)){r=!1;break a}w=w.prevZ}r=!0}}else a:if(r=a,p=r.prev,q=r,t=r.next,0<=qa(p,q,t))r=!1;else{for(m=r.next.next;m!==r.prev;){if(Dd(p.x,p.y, +q.x,q.y,t.x,t.y,m.x,m.y)&&0<=qa(m.prev,m,m.next)){r=!1;break a}m=m.next}r=!0}if(r)b.push(k.i/c),b.push(a.i/c),b.push(n.i/c),Uc(a),h=a=n.next;else if(a=n,a===h){if(!g)Wc(Vc(a),b,c,d,e,f,1);else if(1===g){g=b;h=c;k=a;do n=k.prev,r=k.next.next,!xb(n,r)&&wf(n,k,k.next,r)&&Xc(n,r)&&Xc(r,n)&&(g.push(n.i/h),g.push(k.i/h),g.push(r.i/h),Uc(k),Uc(k.next),k=a=r),k=k.next;while(k!==a);a=k;Wc(a,b,c,d,e,f,2)}else if(2===g)a:{g=a;do{for(h=g.next.next;h!==g.prev;){if(k=g.i!==h.i){k=g;n=h;if(r=k.next.i!==n.i&&k.prev.i!== +n.i){b:{r=k;do{if(r.i!==k.i&&r.next.i!==k.i&&r.i!==n.i&&r.next.i!==n.i&&wf(r,r.next,k,n)){r=!0;break b}r=r.next}while(r!==k);r=!1}r=!r}if(r=r&&Xc(k,n)&&Xc(n,k)){r=k;p=!1;q=(k.x+n.x)/2;n=(k.y+n.y)/2;do r.y>n!==r.next.y>n&&r.next.y!==r.y&&q<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(p=!p),r=r.next;while(r!==k);r=p}k=r}if(k){a=xf(g,h);g=Vc(g,g.next);a=Vc(a,a.next);Wc(g,b,c,d,e,f);Wc(a,b,c,d,e,f);break a}h=h.next}g=g.next}while(g!==a)}break}}}}function ah(a,b){return a.x-b.x}function bh(a,b){var c=b, +d=a.x,e=a.y,f=-Infinity;do{if(e<=c.y&&e>=c.next.y&&c.next.y!==c.y){var g=c.x+(e-c.y)*(c.next.x-c.x)/(c.next.y-c.y);if(g<=d&&g>f){f=g;if(g===d){if(e===c.y)return c;if(e===c.next.y)return c.next}var h=c.x=c.x&&c.x>=g&&d!==c.x&&Dd(eh.x)&&Xc(c,a)&&(h=c,m=p)}c=c.next}return h}function ke(a, +b,c,d,e){a=32767*(a-c)*e;b=32767*(b-d)*e;a=(a|a<<8)&16711935;a=(a|a<<4)&252645135;a=(a|a<<2)&858993459;b=(b|b<<8)&16711935;b=(b|b<<4)&252645135;b=(b|b<<2)&858993459;return(a|a<<1)&1431655765|((b|b<<1)&1431655765)<<1}function ch(a){var b=a,c=a;do b.xqa(a.prev,a,a.next)?0<=qa(a,b,a.next)&&0<=qa(a,a.prev,b):0>qa(a,b,a.prev)||0>qa(a,a.next,b)}function xf(a,b){var c=new le(a.i,a.x,a.y),d=new le(b.i,b.x,b.y),e=a.next,f=b.prev;a.next=b;b.prev=a;c.next=e;e.prev=c;d.next=c;c.prev=d;f.next=d;d.prev=f;return d}function vf(a,b,c,d){a=new le(a,b,c);d?(a.next=d.next,a.prev=d,d.next.prev=a,d.next=a): +(a.prev=a,a.next=a);return a}function Uc(a){a.next.prev=a.prev;a.prev.next=a.next;a.prevZ&&(a.prevZ.nextZ=a.nextZ);a.nextZ&&(a.nextZ.prevZ=a.prevZ)}function le(a,b,c){this.i=a;this.x=b;this.y=c;this.nextZ=this.prevZ=this.z=this.next=this.prev=null;this.steiner=!1}function yf(a){var b=a.length;2Number.EPSILON){var k=Math.sqrt(h),m=Math.sqrt(f*f+g*g);h=b.x-e/k;b=b.y+d/k;g=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new B(f,d);e=Math.sqrt(e/2)}else a=!1,d>Number.EPSILON? +f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new B(f/e,d/e)}function h(a,b){for(N=a.length;0<=--N;){var c=N;var f=N-1;0>f&&(f=a.length-1);var g,h=x+2*A;for(g=0;gp;p++){var l=m[f[p]];var n=m[f[(p+1)%3]];d[0]=Math.min(l,n);d[1]=Math.max(l,n);l=d[0]+","+d[1];void 0===e[l]?e[l]={index1:d[0],index2:d[1],face1:h,face2:void 0}:e[l].face2=h}for(l in e)if(d=e[l],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1],c.push(f.x,f.y,f.z),f=a[d.index2],c.push(f.x,f.y,f.z);this.addAttribute("position",new F(c,3))}function Cb(a,b,c,d,e,f,g,h){G.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a, +radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new bb(a,b,c,d,e,f,g,h));this.mergeVertices()}function bb(a,b,c,d,e,f,g,h){function k(c){var e,f=new B,k=new n,q=0,u=!0===c?a:b,x=!0===c?1:-1;var C=r;for(e=1;e<=d;e++)l.push(0,w*x,0),v.push(0,x,0),t.push(.5,.5),r++;var E=r;for(e=0;e<=d;e++){var F=e/d*h+g,H=Math.cos(F);F=Math.sin(F);k.x=u*F;k.y=w*x;k.z=u*H;l.push(k.x,k.y,k.z);v.push(0,x,0);f.x=.5*H+.5;f.y=.5*F*x+.5;t.push(f.x,f.y); +r++}for(e=0;ethis.duration&&this.resetDuration()}function eh(a){switch(a.toLowerCase()){case "scalar":case "double":case "float":case "number":case "integer":return ic;case "vector":case "vector2":case "vector3":case "vector4":return jc;case "color":return Hd;case "quaternion":return fd;case "bool":case "boolean":return Gd;case "string":return Jd}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+ +a);}function fh(a){if(void 0===a.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");var b=eh(a.type);if(void 0===a.times){var c=[],d=[];sa.flattenJSON(a.keys,c,d,"value");a.times=c;a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,a.interpolation)}function me(a,b,c){var d=this,e=!1,f=0,g=0,h=void 0;this.onStart=void 0;this.onLoad=a;this.onProgress=b;this.onError=c;this.itemStart=function(a){g++;if(!1===e&&void 0!==d.onStart)d.onStart(a,f,g);e=!0}; +this.itemEnd=function(a){f++;if(void 0!==d.onProgress)d.onProgress(a,f,g);if(f===g&&(e=!1,void 0!==d.onLoad))d.onLoad()};this.itemError=function(a){if(void 0!==d.onError)d.onError(a)};this.resolveURL=function(a){return h?h(a):a};this.setURLModifier=function(a){h=a;return this}}function Ka(a){this.manager=void 0!==a?a:Ba}function Cf(a){this.manager=void 0!==a?a:Ba}function Df(a){this.manager=void 0!==a?a:Ba;this._parser=null}function ne(a){this.manager=void 0!==a?a:Ba;this._parser=null}function gd(a){this.manager= +void 0!==a?a:Ba}function oe(a){this.manager=void 0!==a?a:Ba}function Kd(a){this.manager=void 0!==a?a:Ba}function L(){this.type="Curve";this.arcLengthDivisions=200}function Ea(a,b,c,d,e,f,g,h){L.call(this);this.type="EllipseCurve";this.aX=a||0;this.aY=b||0;this.xRadius=c||1;this.yRadius=d||1;this.aStartAngle=e||0;this.aEndAngle=f||2*Math.PI;this.aClockwise=g||!1;this.aRotation=h||0}function kc(a,b,c,d,e,f){Ea.call(this,a,b,c,c,d,e,f);this.type="ArcCurve"}function pe(){var a=0,b=0,c=0,d=0;return{initCatmullRom:function(e, +f,g,h,k){e=k*(g-e);h=k*(h-f);a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},initNonuniformCatmullRom:function(e,f,g,h,k,m,p){e=((f-e)/k-(g-e)/(k+m)+(g-f)/m)*m;h=((g-f)/m-(h-f)/(m+p)+(h-g)/p)*m;a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},calc:function(e){var f=e*e;return a+b*e+c*f+d*f*e}}}function oa(a,b,c,d){L.call(this);this.type="CatmullRomCurve3";this.points=a||[];this.closed=b||!1;this.curveType=c||"centripetal";this.tension=d||.5}function Ef(a,b,c,d,e){b=.5*(d-b);e=.5*(e-c);var f=a*a;return(2*c-2*d+b+e)* +a*f+(-3*c+3*d-2*b-e)*f+b*a+c}function hd(a,b,c,d){var e=1-a;return e*e*b+2*(1-a)*a*c+a*a*d}function id(a,b,c,d,e){var f=1-a,g=1-a;return f*f*f*b+3*g*g*a*c+3*(1-a)*a*a*d+a*a*a*e}function La(a,b,c,d){L.call(this);this.type="CubicBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B;this.v3=d||new B}function Xa(a,b,c,d){L.call(this);this.type="CubicBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n;this.v3=d||new n}function ja(a,b){L.call(this);this.type="LineCurve";this.v1=a|| +new B;this.v2=b||new B}function Ma(a,b){L.call(this);this.type="LineCurve3";this.v1=a||new n;this.v2=b||new n}function Na(a,b,c){L.call(this);this.type="QuadraticBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B}function Ya(a,b,c){L.call(this);this.type="QuadraticBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n}function Oa(a){L.call(this);this.type="SplineCurve";this.points=a||[]}function cb(){L.call(this);this.type="CurvePath";this.curves=[];this.autoClose=!1}function Pa(a){cb.call(this); +this.type="Path";this.currentPoint=new B;a&&this.setFromPoints(a)}function kb(a){Pa.call(this,a);this.uuid=H.generateUUID();this.type="Shape";this.holes=[]}function ia(a,b){E.call(this);this.type="Light";this.color=new K(a);this.intensity=void 0!==b?b:1;this.receiveShadow=void 0}function Ld(a,b,c){ia.call(this,a,c);this.type="HemisphereLight";this.castShadow=void 0;this.position.copy(E.DefaultUp);this.updateMatrix();this.groundColor=new K(b)}function Kb(a){this.camera=a;this.bias=0;this.radius=1; +this.mapSize=new B(512,512);this.map=null;this.matrix=new J}function Md(){Kb.call(this,new S(50,1,.5,500))}function Nd(a,b,c,d,e,f){ia.call(this,a,b);this.type="SpotLight";this.position.copy(E.DefaultUp);this.updateMatrix();this.target=new E;Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(a){this.intensity=a/Math.PI}});this.distance=void 0!==c?c:0;this.angle=void 0!==d?d:Math.PI/3;this.penumbra=void 0!==e?e:0;this.decay=void 0!==f?f:1;this.shadow=new Md} +function Od(a,b,c,d){ia.call(this,a,b);this.type="PointLight";Object.defineProperty(this,"power",{get:function(){return 4*this.intensity*Math.PI},set:function(a){this.intensity=a/(4*Math.PI)}});this.distance=void 0!==c?c:0;this.decay=void 0!==d?d:1;this.shadow=new Kb(new S(90,1,.5,500))}function jd(a,b,c,d,e,f){Ua.call(this);this.type="OrthographicCamera";this.zoom=1;this.view=null;this.left=void 0!==a?a:-1;this.right=void 0!==b?b:1;this.top=void 0!==c?c:1;this.bottom=void 0!==d?d:-1;this.near=void 0!== +e?e:.1;this.far=void 0!==f?f:2E3;this.updateProjectionMatrix()}function Pd(){Kb.call(this,new jd(-5,5,5,-5,.5,500))}function Qd(a,b){ia.call(this,a,b);this.type="DirectionalLight";this.position.copy(E.DefaultUp);this.updateMatrix();this.target=new E;this.shadow=new Pd}function Rd(a,b){ia.call(this,a,b);this.type="AmbientLight";this.castShadow=void 0}function Sd(a,b,c,d){ia.call(this,a,b);this.type="RectAreaLight";this.width=void 0!==c?c:10;this.height=void 0!==d?d:10}function Td(a){this.manager=void 0!== +a?a:Ba;this.textures={}}function qe(a){this.manager=void 0!==a?a:Ba}function re(a){this.manager=void 0!==a?a:Ba;this.resourcePath=""}function se(a){"undefined"===typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported.");"undefined"===typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported.");this.manager=void 0!==a?a:Ba;this.options=void 0}function te(){this.type="ShapePath";this.color=new K;this.subPaths=[];this.currentPath=null}function ue(a){this.type= +"Font";this.data=a}function Ff(a){this.manager=void 0!==a?a:Ba}function kd(){}function ve(a){this.manager=void 0!==a?a:Ba}function Gf(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new S;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new S;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1}function ld(a,b,c,d){E.call(this);this.type="CubeCamera";var e=new S(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new n(1,0,0));this.add(e);var f=new S(90, +1,a,b);f.up.set(0,-1,0);f.lookAt(new n(-1,0,0));this.add(f);var g=new S(90,1,a,b);g.up.set(0,0,1);g.lookAt(new n(0,1,0));this.add(g);var h=new S(90,1,a,b);h.up.set(0,0,-1);h.lookAt(new n(0,-1,0));this.add(h);var k=new S(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new n(0,0,1));this.add(k);var m=new S(90,1,a,b);m.up.set(0,-1,0);m.lookAt(new n(0,0,-1));this.add(m);d=d||{format:1022,magFilter:1006,minFilter:1006};this.renderTarget=new mb(c,c,d);this.renderTarget.texture.name="CubeCamera";this.update=function(a, +b){null===this.parent&&this.updateMatrixWorld();var c=a.getRenderTarget(),d=this.renderTarget,p=d.texture.generateMipmaps;d.texture.generateMipmaps=!1;a.setRenderTarget(d,0);a.render(b,e);a.setRenderTarget(d,1);a.render(b,f);a.setRenderTarget(d,2);a.render(b,g);a.setRenderTarget(d,3);a.render(b,h);a.setRenderTarget(d,4);a.render(b,k);d.texture.generateMipmaps=p;a.setRenderTarget(d,5);a.render(b,m);a.setRenderTarget(c)};this.clear=function(a,b,c,d){for(var e=a.getRenderTarget(),f=this.renderTarget, +g=0;6>g;g++)a.setRenderTarget(f,g),a.clear(b,c,d);a.setRenderTarget(e)}}function we(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1}function xe(){E.call(this);this.type="AudioListener";this.context=ye.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null;this.timeDelta=0}function lc(a){E.call(this);this.type="Audio";this.listener=a;this.context=a.context;this.gain=this.context.createGain();this.gain.connect(a.getInput()); +this.autoplay=!1;this.buffer=null;this.detune=0;this.loop=!1;this.offset=this.startTime=0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this.filters=[]}function ze(a){lc.call(this,a);this.panner=this.context.createPanner();this.panner.connect(this.gain)}function Ae(a,b){this.analyser=a.context.createAnalyser();this.analyser.fftSize=void 0!==b?b:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount);a.getOutput().connect(this.analyser)}function Be(a, +b,c){this.binding=a;this.valueSize=c;a=Float64Array;switch(b){case "quaternion":b=this._slerp;break;case "string":case "bool":a=Array;b=this._select;break;default:b=this._lerp}this.buffer=new a(4*c);this._mixBufferRegion=b;this.referenceCount=this.useCount=this.cumulativeWeight=0}function Hf(a,b,c){c=c||ma.parseTrackName(b);this._targetGroup=a;this._bindings=a.subscribe_(b,c)}function ma(a,b,c){this.path=b;this.parsedPath=c||ma.parseTrackName(b);this.node=ma.findNode(a,this.parsedPath.nodeName)|| +a;this.rootNode=a}function If(){this.uuid=H.generateUUID();this._objects=Array.prototype.slice.call(arguments);this.nCachedObjects_=0;var a={};this._indicesByUUID=a;for(var b=0,c=arguments.length;b!==c;++b)a[arguments[b].uuid]=b;this._paths=[];this._parsedPaths=[];this._bindings=[];this._bindingsIndicesByPath={};var d=this;this.stats={objects:{get total(){return d._objects.length},get inUse(){return this.total-d.nCachedObjects_}},get bindingsPerObject(){return d._bindings.length}}}function Jf(a,b, +c){this._mixer=a;this._clip=b;this._localRoot=c||null;a=b.tracks;b=a.length;c=Array(b);for(var d={endingStart:2400,endingEnd:2400},e=0;e!==b;++e){var f=a[e].createInterpolant(null);c[e]=f;f.settings=d}this._interpolantSettings=d;this._interpolants=c;this._propertyBindings=Array(b);this._weightInterpolant=this._timeScaleInterpolant=this._byClipCacheIndex=this._cacheIndex=null;this.loop=2201;this._loopCount=-1;this._startTime=null;this.time=0;this._effectiveWeight=this.weight=this._effectiveTimeScale= +this.timeScale=1;this.repetitions=Infinity;this.paused=!1;this.enabled=!0;this.clampWhenFinished=!1;this.zeroSlopeAtEnd=this.zeroSlopeAtStart=!0}function Ce(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1}function Ud(a,b){"string"===typeof a&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),a=b);this.value=a}function De(){C.call(this);this.type="InstancedBufferGeometry";this.maxInstancedCount=void 0}function Ee(a,b,c){ub.call(this,a,b);this.meshPerAttribute= +c||1}function Fe(a,b,c,d){"number"===typeof c&&(d=c,c=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument."));P.call(this,a,b,c);this.meshPerAttribute=d||1}function Kf(a,b,c,d){this.ray=new tb(a,b);this.near=c||0;this.far=d||Infinity;this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}};Object.defineProperties(this.params,{PointCloud:{get:function(){console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."); +return this.Points}}})}function Lf(a,b){return a.distance-b.distance}function Ge(a,b,c,d){if(!1!==a.visible&&(a.raycast(b,c),!0===d)){a=a.children;d=0;for(var e=a.length;dc;c++,d++){var e=c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.addAttribute("position",new F(b,3));b=new R({fog:!1});this.cone=new W(a,b);this.add(this.cone);this.update()}function Of(a){var b=[];a&&a.isBone&&b.push(a);for(var c= +0;ca?-1:0b;b++)a[b]=(16>b?"0":"")+b.toString(16);return function(){var b=4294967295*Math.random()|0,d=4294967295*Math.random()|0,e=4294967295*Math.random()|0,f=4294967295*Math.random()|0;return(a[b&255]+a[b>>8&255]+a[b>>16&255]+a[b>>24&255]+"-"+a[d&255]+a[d>>8&255]+"-"+a[d>> +16&15|64]+a[d>>24&255]+"-"+a[e&63|128]+a[e>>8&255]+"-"+a[e>>16&255]+a[e>>24&255]+a[f&255]+a[f>>8&255]+a[f>>16&255]+a[f>>24&255]).toUpperCase()}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},lerp:function(a,b,c){return(1-c)*a+c*b},smoothstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1; +a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(a){return a*H.DEG2RAD},radToDeg:function(a){return a*H.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},ceilPowerOfTwo:function(a){return Math.pow(2,Math.ceil(Math.log(a)/Math.LN2))},floorPowerOfTwo:function(a){return Math.pow(2,Math.floor(Math.log(a)/ +Math.LN2))}};Object.defineProperties(B.prototype,{width:{get:function(){return this.x},set:function(a){this.x=a}},height:{get:function(){return this.y},set:function(a){this.y=a}}});Object.assign(B.prototype,{isVector2:!0,set:function(a,b){this.x=a;this.y=b;return this},setScalar:function(a){this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+ +a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this}, +addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},subScalar:function(a){this.x-=a;this.y-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*= +a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},applyMatrix3:function(a){var b=this.x,c=this.y;a=a.elements;this.x=a[0]*b+a[3]*c+a[6];this.y=a[1]*b+a[4]*c+a[7];return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},clamp:function(a, +b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));return this},clampScalar:function(){var a=new B,b=new B;return function(c,d){a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x= +Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+ +Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var a=Math.atan2(this.y,this.x);0>a&&(a+=2*Math.PI);return a},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x;a=this.y-a.y;return b*b+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+= +(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b); +return this},rotateAround:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d=this.x-a.x,e=this.y-a.y;this.x=d*c-e*b+a.x;this.y=d*b+e*c+a.y;return this}});Object.assign(J.prototype,{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,k,m,l,q,n,t,r,u){var p=this.elements;p[0]=a;p[4]=b;p[8]=c;p[12]=d;p[1]=e;p[5]=f;p[9]=g;p[13]=h;p[2]=k;p[6]=m;p[10]=l;p[14]=q;p[3]=n;p[7]=t;p[11]=r;p[15]=u;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return(new J).fromArray(this.elements)}, +copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this},copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this,2);return this},makeBasis:function(a,b,c){this.set(a.x, +b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new n;return function(b){var c=this.elements,d=b.elements,e=1/a.setFromMatrixColumn(b,0).length(),f=1/a.setFromMatrixColumn(b,1).length();b=1/a.setFromMatrixColumn(b,2).length();c[0]=d[0]*e;c[1]=d[1]*e;c[2]=d[2]*e;c[3]=0;c[4]=d[4]*f;c[5]=d[5]*f;c[6]=d[6]*f;c[7]=0;c[8]=d[8]*b;c[9]=d[9]*b;c[10]=d[10]*b;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return this}}(),makeRotationFromEuler:function(a){a&&a.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order."); +var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c);c=Math.sin(c);var g=Math.cos(d);d=Math.sin(d);var h=Math.cos(e);e=Math.sin(e);if("XYZ"===a.order){a=f*h;var k=f*e,m=c*h,p=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+m*d;b[5]=a-p*d;b[9]=-c*g;b[2]=p-a*d;b[6]=m+k*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,k=g*e,m=d*h,p=d*e,b[0]=a+p*c,b[4]=m*c-k,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-m,b[6]=p+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,k=g*e,m=d*h,p=d*e,b[0]=a-p*c,b[4]=-f*e,b[8]=m+k*c,b[1]=k+m*c,b[5]=f*h,b[9]= +p-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,k=f*e,m=c*h,p=c*e,b[0]=g*h,b[4]=m*d-k,b[8]=a*d+p,b[1]=g*e,b[5]=p*d+a,b[9]=k*d-m,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(a=f*g,k=f*d,m=c*g,p=c*d,b[0]=g*h,b[4]=p-a*e,b[8]=m*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+m,b[10]=a-p*e):"XZY"===a.order&&(a=f*g,k=f*d,m=c*g,p=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+p,b[5]=f*h,b[9]=k*e-m,b[2]=m*e-k,b[6]=c*h,b[10]=p*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(){var a= +new n(0,0,0),b=new n(1,1,1);return function(c){return this.compose(a,c,b)}}(),lookAt:function(){var a=new n,b=new n,c=new n;return function(d,e,f){var g=this.elements;c.subVectors(d,e);0===c.lengthSq()&&(c.z=1);c.normalize();a.crossVectors(f,c);0===a.lengthSq()&&(1===Math.abs(f.z)?c.x+=1E-4:c.z+=1E-4,c.normalize(),a.crossVectors(f,c));a.normalize();b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!== +b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[4],f=c[8],g=c[12],h=c[1],k=c[5],m=c[9],p=c[13],l=c[2],n=c[6],t=c[10],r=c[14],u=c[3],w=c[7],z=c[11];c=c[15];var x=d[0],D=d[4],y=d[8],Q=d[12],B=d[1],A=d[5],C=d[9],F=d[13],E=d[2], +H=d[6],G=d[10],I=d[14],L=d[3],J=d[7],K=d[11];d=d[15];b[0]=a*x+e*B+f*E+g*L;b[4]=a*D+e*A+f*H+g*J;b[8]=a*y+e*C+f*G+g*K;b[12]=a*Q+e*F+f*I+g*d;b[1]=h*x+k*B+m*E+p*L;b[5]=h*D+k*A+m*H+p*J;b[9]=h*y+k*C+m*G+p*K;b[13]=h*Q+k*F+m*I+p*d;b[2]=l*x+n*B+t*E+r*L;b[6]=l*D+n*A+t*H+r*J;b[10]=l*y+n*C+t*G+r*K;b[14]=l*Q+n*F+t*I+r*d;b[3]=u*x+w*B+z*E+c*L;b[7]=u*D+w*A+z*H+c*J;b[11]=u*y+w*C+z*G+c*K;b[15]=u*Q+w*F+z*I+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*= +a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(){var a=new n;return function(b){for(var c=0,d=b.count;cthis.determinant()&&(g=-g);c.x=f[12];c.y=f[13];c.z=f[14];b.copy(this);c=1/g;f=1/h;var m=1/k;b.elements[0]*=c;b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=m;b.elements[9]*=m;b.elements[10]*=m;d.setFromRotationMatrix(b); +e.x=g;e.y=h;e.z=k;return this}}(),makePerspective:function(a,b,c,d,e,f){void 0===f&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(c-d);g[9]=(c+d)/(c-d);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),k=1/(c-d),m=1/(f-e);g[0]= +2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*k;g[9]=0;g[13]=-((c+d)*k);g[2]=0;g[6]=0;g[10]=-2*m;g[14]=-((f+e)*m);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements;a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;16>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4]; +a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}});Object.assign(aa,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],k=c[d+1],m=c[d+2];c=c[d+3];d=e[f+0];var l=e[f+1],q=e[f+2];e=e[f+3];if(c!==e||h!==d||k!==l||m!==q){f=1-g;var n=h*d+k*l+m*q+c*e,t=0<=n?1:-1,r=1-n*n;r>Number.EPSILON&&(r=Math.sqrt(r),n=Math.atan2(r,n*t),f=Math.sin(f*n)/r,g=Math.sin(g* +n)/r);t*=g;h=h*f+d*t;k=k*f+l*t;m=m*f+q*t;c=c*f+e*t;f===1-g&&(g=1/Math.sqrt(h*h+k*k+m*m+c*c),h*=g,k*=g,m*=g,c*=g)}a[b]=h;a[b+1]=k;a[b+2]=m;a[b+3]=c}});Object.defineProperties(aa.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this.onChangeCallback()}},z:{get:function(){return this._z},set:function(a){this._z=a;this.onChangeCallback()}},w:{get:function(){return this._w},set:function(a){this._w= +a;this.onChangeCallback()}}});Object.assign(aa.prototype,{isQuaternion:!0,set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._w=d;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(a){this._x=a.x;this._y=a.y;this._z=a.z;this._w=a.w;this.onChangeCallback();return this},setFromEuler:function(a,b){if(!a||!a.isEuler)throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order."); +var c=a._x,d=a._y,e=a._z;a=a.order;var f=Math.cos,g=Math.sin,h=f(c/2),k=f(d/2);f=f(e/2);c=g(c/2);d=g(d/2);e=g(e/2);"XYZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"YXZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"ZXY"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"ZYX"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"YZX"===a?(this._x= +c*k*f+h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f-c*d*e):"XZY"===a&&(this._x=c*k*f-h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f+c*d*e);if(!1!==b)this.onChangeCallback();return this},setFromAxisAngle:function(a,b){b/=2;var c=Math.sin(b);this._x=a.x*c;this._y=a.y*c;this._z=a.z*c;this._w=Math.cos(b);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],k=b[6];b=b[10];var m=c+f+b;0f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a=new n,b;return function(c,d){void 0===a&&(a=new n);b=c.dot(d)+1;1E-6>b? +(b=0,Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=a.x;this._y=a.y;this._z=a.z;this._w=b;return this.normalize()}}(),angleTo:function(a){return 2*Math.acos(Math.abs(H.clamp(this.dot(a),-1,1)))},rotateTowards:function(a,b){var c=this.angleTo(a);if(0===c)return this;this.slerp(a,Math.min(1,b/c));return this},inverse:function(){return this.conjugate()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x* +a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."), +this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z;a=a._w;var f=b._x,g=b._y,h=b._z;b=b._w;this._x=c*b+a*f+d*h-e*g;this._y=d*b+a*g+e*f-c*h;this._z=e*b+a*h+c*g-d*f;this._w=a*b-c*f-d*g-e*h;this.onChangeCallback();return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z; +0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;a=1-g*g;if(a<=Number.EPSILON)return g=1-b,this._w=g*f+b*this._w,this._x=g*c+b*this._x,this._y=g*d+b*this._y,this._z=g*e+b*this._z,this.normalize();a=Math.sqrt(a);var h=Math.atan2(a,g);g=Math.sin((1-b)*h)/a;b=Math.sin(b*h)/a;this._w=f*g+this._w*b;this._x=c*g+this._x*b;this._y=d*g+this._y*b;this._z=e*g+this._z*b;this.onChangeCallback();return this},equals:function(a){return a._x=== +this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(n.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this}, +setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x, +this.y,this.z)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+= +a.z*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."), +this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a=new aa;return function(b){b&&b.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");return this.applyQuaternion(a.setFromEuler(b))}}(),applyAxisAngle:function(){var a=new aa;return function(b, +c){return this.applyQuaternion(a.setFromAxisAngle(b,c))}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x, +c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,m=a*d+e*c-f*b;b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-m*-f;this.y=k*a+b*-f+m*-e-h*-g;this.z=m*a+b*-g+h*-f-k*-e;return this},project:function(a){return this.applyMatrix4(a.matrixWorldInverse).applyMatrix4(a.projectionMatrix)},unproject:function(){var a=new J;return function(b){return this.applyMatrix4(a.getInverse(b.projectionMatrix)).applyMatrix4(b.matrixWorld)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a= +a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);return this},clamp:function(a,b){this.x=Math.max(a.x, +Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},clampScalar:function(){var a=new n,b=new n;return function(c,d){a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x); +this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x* +this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)}, +cross:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b)):this.crossVectors(this,a)},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a=new n;return function(b){a.copy(this).projectOnVector(b); +return this.sub(a)}}(),reflect:function(){var a=new n;return function(b){return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(H.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)+Math.abs(this.z- +a.z)},setFromSpherical:function(a){return this.setFromSphericalCoords(a.radius,a.phi,a.theta)},setFromSphericalCoords:function(a,b,c){var d=Math.sin(b)*a;this.x=d*Math.sin(c);this.y=Math.cos(b)*a;this.z=d*Math.cos(c);return this},setFromCylindrical:function(a){return this.setFromCylindricalCoords(a.radius,a.theta,a.y)},setFromCylindricalCoords:function(a,b,c){this.x=a*Math.sin(b);this.y=c;this.z=a*Math.cos(b);return this},setFromMatrixPosition:function(a){a=a.elements;this.x=a[12];this.y=a[13];this.z= +a[14];return this},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a,1).length();a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0=== +b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);return this}});Object.assign(pa.prototype,{isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,k){var m=this.elements;m[0]=a;m[1]=d;m[2]=g;m[3]=b;m[4]=e;m[5]=h;m[6]=c;m[7]=f;m[8]=k;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return(new this.constructor).fromArray(this.elements)}, +copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];return this},setFromMatrix4:function(a){a=a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(){var a=new n;return function(b){for(var c=0,d=b.count;cc;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;9>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c= +this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];return a}});var tc,lb={getDataURL:function(a){if("undefined"==typeof HTMLCanvasElement)return a.src;if(!(a instanceof HTMLCanvasElement)){void 0===tc&&(tc=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"));tc.width=a.width;tc.height=a.height;var b=tc.getContext("2d");a instanceof ImageData?b.putImageData(a,0,0):b.drawImage(a,0,0,a.width,a.height);a=tc}return 2048< +a.width||2048a.x||1a.x?0:1;break;case 1002:a.x=1===Math.abs(Math.floor(a.x)%2)?Math.ceil(a.x)-a.x:a.x-Math.floor(a.x)}if(0>a.y||1a.y?0:1;break;case 1002:a.y=1===Math.abs(Math.floor(a.y)%2)?Math.ceil(a.y)-a.y:a.y-Math.floor(a.y)}this.flipY&&(a.y=1-a.y);return a}});Object.defineProperty(V.prototype, +"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(ba.prototype,{isVector4:!0,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setScalar:function(a){this.w=this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w= +b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), +this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;this.w+=a.w*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a, +b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]* +e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){a=a.elements;var b=a[0];var c=a[4];var d=a[8],e=a[1],f=a[5],g=a[9];var h=a[2];var k=a[6];var m=a[10];if(.01>Math.abs(c-e)&&.01>Math.abs(d-h)&&.01>Math.abs(g-k)){if(.1>Math.abs(c+ +e)&&.1>Math.abs(d+h)&&.1>Math.abs(g+k)&&.1>Math.abs(b+f+m-3))return this.set(1,0,0,0),this;a=Math.PI;b=(b+1)/2;f=(f+1)/2;m=(m+1)/2;c=(c+e)/4;d=(d+h)/4;g=(g+k)/4;b>f&&b>m?.01>b?(k=0,c=h=.707106781):(k=Math.sqrt(b),h=c/k,c=d/k):f>m?.01>f?(k=.707106781,h=0,c=.707106781):(h=Math.sqrt(f),k=c/h,c=g/h):.01>m?(h=k=.707106781,c=0):(c=Math.sqrt(m),k=d/c,h=g/c);this.set(k,h,c,a);return this}a=Math.sqrt((k-g)*(k-g)+(d-h)*(d-h)+(e-c)*(e-c));.001>Math.abs(a)&&(a=1);this.x=(k-g)/a;this.y=(d-h)/a;this.z=(e-c)/a; +this.w=Math.acos((b+f+m-1)/2);return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);this.w=Math.min(this.w,a.w);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);this.w=Math.max(this.w,a.w);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));this.w=Math.max(a.w,Math.min(b.w, +this.w));return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new ba,b=new ba);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z); +this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this}, +dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+= +(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromBufferAttribute:function(a, +b,c){void 0!==c&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);this.w=a.getW(b);return this}});Ra.prototype=Object.assign(Object.create(ka.prototype),{constructor:Ra,isWebGLRenderTarget:!0,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose();this.viewport.set(0,0,a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width= +a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Zd.prototype=Object.assign(Object.create(Ra.prototype),{constructor:Zd,isWebGLMultisampleRenderTarget:!0,copy:function(a){Ra.prototype.copy.call(this,a);this.samples=a.samples;return this}});mb.prototype=Object.create(Ra.prototype);mb.prototype.constructor= +mb;mb.prototype.isWebGLRenderTargetCube=!0;nb.prototype=Object.create(V.prototype);nb.prototype.constructor=nb;nb.prototype.isDataTexture=!0;Object.assign(Za.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.length;he&&(e=m);l>f&&(f=l);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e, +f,g);return this},setFromBufferAttribute:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.count;he&&(e=m);l>f&&(f=l);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y||a.zthis.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box3: .getParameter() target is now required"),b=new n);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))}, +intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},intersectsSphere:function(){var a=new n;return function(b){this.clampPoint(b.center,a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){if(0=-a.constant},intersectsTriangle:function(){function a(a){var e;var f=0;for(e=a.length-3;f<=e;f+=3){h.fromArray(a,f);var g=m.x*Math.abs(h.x)+m.y*Math.abs(h.y)+m.z*Math.abs(h.z),k=b.dot(h),l=c.dot(h),p=d.dot(h);if(Math.max(-Math.max(k,l,p),Math.min(k,l,p))>g)return!1}return!0}var b=new n, +c=new n,d=new n,e=new n,f=new n,g=new n,h=new n,k=new n,m=new n,l=new n;return function(h){if(this.isEmpty())return!1;this.getCenter(k);m.subVectors(this.max,k);b.subVectors(h.a,k);c.subVectors(h.b,k);d.subVectors(h.c,k);e.subVectors(c,b);f.subVectors(d,c);g.subVectors(b,d);h=[0,-e.z,e.y,0,-f.z,f.y,0,-g.z,g.y,e.z,0,-e.x,f.z,0,-f.x,g.z,0,-g.x,-e.y,e.x,0,-f.y,f.x,0,-g.y,g.x,0];if(!a(h))return!1;h=[1,0,0,0,1,0,0,0,1];if(!a(h))return!1;l.crossVectors(e,f);h=[l.x,l.y,l.z];return a(h)}}(),clampPoint:function(a, +b){void 0===b&&(console.warn("THREE.Box3: .clampPoint() target is now required"),b=new n);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new n;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a=new n;return function(b){void 0===b&&(console.warn("THREE.Box3: .getBoundingSphere() target is now required"),b=new Ha);this.getCenter(b.center);b.radius=.5*this.getSize(a).length();return b}}(),intersect:function(a){this.min.max(a.min); +this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(){var a=[new n,new n,new n,new n,new n,new n,new n,new n];return function(b){if(this.isEmpty())return this;a[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(b);a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(b);a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(b);a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(b); +a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(b);a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(b);a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(b);this.setFromPoints(a);return this}}(),translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Ha.prototype,{set:function(a,b){this.center.copy(a);this.radius=b;return this}, +setFromPoints:function(){var a=new Za;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).getCenter(d);for(var e=c=0,f=b.length;e=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius}, +distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)},intersectsPlane:function(a){return Math.abs(a.distanceToPoint(this.center))<=this.radius},clampPoint:function(a,b){var c=this.center.distanceToSquared(a);void 0===b&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),b=new n);b.copy(a);c>this.radius* +this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){void 0===a&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),a=new Za);a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&& +a.radius===this.radius}});Object.assign(Sa.prototype,{set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new n,b=new n;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(), +clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){void 0=== +b&&(console.warn("THREE.Plane: .projectPoint() target is now required"),b=new n);return b.copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(){var a=new n;return function(b,c){void 0===c&&(console.warn("THREE.Plane: .intersectLine() target is now required"),c=new n);var d=b.delta(a),e=this.normal.dot(d);if(0===e){if(0===this.distanceToPoint(b.start))return c.copy(b.start)}else if(e=-(b.start.dot(this.normal)+this.constant)/e,!(0>e||1b&&0a&&0c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],m=c[7],l=c[8],q=c[9],n=c[10],t=c[11],r=c[12],u=c[13],w=c[14];c=c[15];b[0].setComponents(f-a,m-g,t-l,c-r).normalize();b[1].setComponents(f+a,m+g,t+l,c+r).normalize();b[2].setComponents(f+d,m+h,t+q,c+u).normalize();b[3].setComponents(f-d,m-h,t-q,c-u).normalize();b[4].setComponents(f-e,m-k,t-n,c-w).normalize();b[5].setComponents(f+e, +m+k,t+n,c+w).normalize();return this},intersectsObject:function(){var a=new Ha;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Ha;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d= +0;6>d;d++)if(b[d].distanceToPoint(c)d;d++){var e=c[d];a.x=0e.distanceToPoint(a))return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}});var U={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif", +alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif", +aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick( specularColor, dotNV );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}", +bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif", +clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif", +clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif", +color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}", +cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif", +defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif", +emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}", +envmap_fragment:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif", +envmap_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif", +envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif", +envmap_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif", +fog_vertex:"#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif", +gradientmap_pars_fragment:"#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif", +lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif", +lights_pars_begin:"uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif", +lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)", +lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif", +lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#endif\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\tfloat clearCoatInv = 1.0 - clearCoatDHR;\n\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec3 singleScattering = vec3( 0.0 );\n\t\tvec3 multiScattering = vec3( 0.0 );\n\t\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\t\tvec3 diffuse = material.diffuseColor;\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\n\t\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\n\t\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n\t#else\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#endif\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}", +lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif", +lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif", +lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n#endif", +logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif", +map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif",map_particle_pars_fragment:"#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif", +metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif", +morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif", +normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif", +normal_fragment_maps:"#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\t#ifdef USE_TANGENT\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy = normalScale * mapN.xy;\n\t\t\tnormal = normalize( vTBN * mapN );\n\t\t#else\n\t\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t\t#endif\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif", +normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif", +packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}", +premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#if defined( DITHERING )\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif", +roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif", +shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif", +shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif", +shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}", +skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif", +skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif", +specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}", +uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif", +uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif", +uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}", +cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}", +depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}", +depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}", +distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}", +equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}", +equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}", +meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}", +meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshphysical_frag:"#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +meshphysical_vert:"#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}", +normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}", +normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}", +points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", +points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}", +shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}",shadow_vert:"#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", +sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}", +sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"}, +gh={clone:Mb,merge:xa},hh={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643, +darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055, +grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184, +lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130, +palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780, +teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Object.assign(K.prototype,{isColor:!0,r:1,g:1,b:1,set:function(a){a&&a.isColor?this.copy(a):"number"===typeof a?this.setHex(a):"string"===typeof a&&this.setStyle(a);return this},setScalar:function(a){this.b=this.g=this.r=a;return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255; +return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(){function a(a,c,d){0>d&&(d+=1);1d?c:d<2/3?a+6*(c-a)*(2/3-d):a}return function(b,c,d){b=H.euclideanModulo(b,1);c=H.clamp(c,0,1);d=H.clamp(d,0,1);0===c?this.r=this.g=this.b=d:(c=.5>=d?d*(1+c):d+c-d*c,d=2*d-c,this.r=a(d,c,b+1/3),this.g=a(d,c,b),this.b=a(d,c,b-1/3));return this}}(),setStyle:function(a){function b(b){void 0!==b&&1>parseFloat(b)&&console.warn("THREE.Color: Alpha component of "+ +a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d=c[2];switch(c[1]){case "rgb":case "rgba":if(c=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,b(c[5]),this;if(c=/^(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2], +10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,b(c[5]),this;break;case "hsl":case "hsla":if(c=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)){d=parseFloat(c[1])/360;var e=parseInt(c[2],10)/100,f=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,f)}}}else if(c=/^#([A-Fa-f0-9]+)$/.exec(a)){c=c[1];d=c.length;if(3===d)return this.r=parseInt(c.charAt(0)+c.charAt(0),16)/255,this.g=parseInt(c.charAt(1)+c.charAt(1),16)/255,this.b=parseInt(c.charAt(2)+c.charAt(2), +16)/255,this;if(6===d)return this.r=parseInt(c.charAt(0)+c.charAt(1),16)/255,this.g=parseInt(c.charAt(2)+c.charAt(3),16)/255,this.b=parseInt(c.charAt(4)+c.charAt(5),16)/255,this}a&&0a?.0773993808*a:Math.pow(.9478672986*a+.0521327014,2.4)}return function(b){this.r=a(b.r);this.g=a(b.g);this.b= +a(b.b);return this}}(),copyLinearToSRGB:function(){function a(a){return.0031308>a?12.92*a:1.055*Math.pow(a,.41666)-.055}return function(b){this.r=a(b.r);this.g=a(b.g);this.b=a(b.b);return this}}(),convertSRGBToLinear:function(){this.copySRGBToLinear(this);return this},convertLinearToSRGB:function(){this.copyLinearToSRGB(this);return this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){void 0=== +a&&(console.warn("THREE.Color: .getHSL() target is now required"),a={h:0,s:0,l:0});var b=this.r,c=this.g,d=this.b,e=Math.max(b,c,d),f=Math.min(b,c,d),g,h=(f+e)/2;if(f===e)f=g=0;else{var k=e-f;f=.5>=h?k/(e+f):k/(2-e-f);switch(e){case b:g=(c-d)/k+(cMath.abs(g)?(this._x=Math.atan2(-m,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(q,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(m,-1,1)),.99999>Math.abs(m)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,k)):(this._y=Math.atan2(-l,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(q,-1,1)),.99999>Math.abs(q)?(this._y=Math.atan2(-l,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(l, +-1,1)),.99999>Math.abs(l)?(this._x=Math.atan2(q,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-m,k),this._y=Math.atan2(-l,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(q,k),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-m,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order= +b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a=new J;return function(b,c,d){a.makeRotationFromQuaternion(b);return this.setFromRotationMatrix(a,c,d)}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new aa;return function(b){a.setFromEuler(this);return this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x= +a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new n(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(ae.prototype,{set:function(a){this.mask=1<g;g++)if(d[g]===d[(g+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(d=a[f],this.faces.splice(d,1),c=0,e= +this.faceVertexUvs.length;cthis.opacity&&(d.opacity=this.opacity);!0===this.transparent&&(d.transparent=this.transparent);d.depthFunc=this.depthFunc;d.depthTest=this.depthTest;d.depthWrite=this.depthWrite;0!==this.rotation&&(d.rotation=this.rotation);!0===this.polygonOffset&&(d.polygonOffset=!0);0!==this.polygonOffsetFactor&&(d.polygonOffsetFactor=this.polygonOffsetFactor);0!==this.polygonOffsetUnits&&(d.polygonOffsetUnits=this.polygonOffsetUnits); +1!==this.linewidth&&(d.linewidth=this.linewidth);void 0!==this.dashSize&&(d.dashSize=this.dashSize);void 0!==this.gapSize&&(d.gapSize=this.gapSize);void 0!==this.scale&&(d.scale=this.scale);!0===this.dithering&&(d.dithering=!0);0a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new n;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b);a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a= +new n,b=new n,c=new n;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5);b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),m=c.dot(this.direction),l=-c.dot(b),n=c.lengthSq(),v=Math.abs(1-k*k);if(0=-t?e<=t?(h=1/v,d*=h,e*=h,k=d*(d+k*e+2*m)+e*(k*d+e+2*l)+n):(e=h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):(e=-h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):e<=-t?(d=Math.max(0,-(-k*h+m)),e=0b)return null; +b=Math.sqrt(b-e);e=d-b;d+=b;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),intersectsSphere:function(a){return this.distanceSqToPoint(a.center)<=a.radius*a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){a=this.distanceToPlane(a);return null===a?null:this.at(a,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin); +return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a,b){var c=1/this.direction.x;var d=1/this.direction.y;var e=1/this.direction.z,f=this.origin;if(0<=c){var g=(a.min.x-f.x)*c;c*=a.max.x-f.x}else g=(a.max.x-f.x)*c,c*=a.min.x-f.x;if(0<=d){var h=(a.min.y-f.y)*d;d*=a.max.y-f.y}else h=(a.max.y-f.y)*d,d*=a.min.y-f.y;if(g>d||h>c)return null;if(h>g||g!==g)g=h;if(da||h>c)return null; +if(h>g||g!==g)g=h;if(ac?null:this.at(0<=g?g:c,b)},intersectsBox:function(){var a=new n;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new n,b=new n,c=new n,d=new n;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null; +g=h*this.direction.dot(b.cross(a));if(0>g||e+g>f)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/f,k)}}(),applyMatrix4:function(a){this.origin.applyMatrix4(a);this.direction.transformDirection(a);return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}});Object.assign(ua,{getNormal:function(){var a=new n;return function(b,c,d,e){void 0===e&&(console.warn("THREE.Triangle: .getNormal() target is now required"),e=new n);e.subVectors(d,c);a.subVectors(b, +c);e.cross(a);b=e.lengthSq();return 0=a.x+a.y}}(),getUV:function(){var a=new n;return function(b,c,d,e,f,g,h,k){this.getBarycoord(b,c,d,e,a);k.set(0,0);k.addScaledVector(f,a.x);k.addScaledVector(g,a.y);k.addScaledVector(h,a.z);return k}}()});Object.assign(ua.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this}, +clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},getArea:function(){var a=new n,b=new n;return function(){a.subVectors(this.c,this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),getMidpoint:function(a){void 0===a&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),a=new n);return a.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(a){return ua.getNormal(this.a, +this.b,this.c,a)},getPlane:function(a){void 0===a&&(console.warn("THREE.Triangle: .getPlane() target is now required"),a=new n);return a.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(a,b){return ua.getBarycoord(a,this.a,this.b,this.c,b)},containsPoint:function(a){return ua.containsPoint(a,this.a,this.b,this.c)},getUV:function(a,b,c,d,e){return ua.getUV(a,this.a,this.b,this.c,b,c,d,e)},intersectsBox:function(a){return a.intersectsTriangle(this)},closestPointToPoint:function(){var a= +new n,b=new n,c=new n,d=new n,e=new n,f=new n;return function(g,h){void 0===h&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),h=new n);var k=this.a,m=this.b,l=this.c;a.subVectors(m,k);b.subVectors(l,k);d.subVectors(g,k);var q=a.dot(d),v=b.dot(d);if(0>=q&&0>=v)return h.copy(k);e.subVectors(g,m);var t=a.dot(e),r=b.dot(e);if(0<=t&&r<=t)return h.copy(m);var u=q*r-t*v;if(0>=u&&0<=q&&0>=t)return m=q/(q-t),h.copy(k).addScaledVector(a,m);f.subVectors(g,l);g=a.dot(f);var w= +b.dot(f);if(0<=w&&g<=w)return h.copy(l);q=g*v-q*w;if(0>=q&&0<=v&&0>=w)return u=v/(v-w),h.copy(k).addScaledVector(b,u);v=t*w-g*r;if(0>=v&&0<=r-t&&0<=g-w)return c.subVectors(l,m),u=(r-t)/(r-t+(g-w)),h.copy(m).addScaledVector(c,u);l=1/(v+q+u);m=q*l;u*=l;return h.copy(k).addScaledVector(a,m).addScaledVector(b,u)}}(),equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}});ya.prototype=Object.create(M.prototype);ya.prototype.constructor=ya;ya.prototype.isMeshBasicMaterial= +!0;ya.prototype.copy=function(a){M.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap; +this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;return this};va.prototype=Object.assign(Object.create(E.prototype),{constructor:va,isMesh:!0,setDrawMode:function(a){this.drawMode=a},copy:function(a){E.prototype.copy.call(this,a);this.drawMode=a.drawMode;void 0!==a.morphTargetInfluences&&(this.morphTargetInfluences=a.morphTargetInfluences.slice());void 0!==a.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},a.morphTargetDictionary)); +return this},updateMorphTargets:function(){var a=this.geometry;if(a.isBufferGeometry){a=a.morphAttributes;var b=Object.keys(a);if(0c.far?null:{distance:b,point:u.clone(),object:a}}function b(b,c,d,e,k,m,l,p,n){f.fromBufferAttribute(k,l);g.fromBufferAttribute(k,p);h.fromBufferAttribute(k,n);if(b=a(b,c,d,e,f,g,h,r))m&&(q.fromBufferAttribute(m,l),v.fromBufferAttribute(m,p),t.fromBufferAttribute(m, +n),b.uv=ua.getUV(r,f,g,h,q,v,t,new B)),m=new Nb(l,p,n),ua.getNormal(f,g,h,m.normal),b.face=m;return b}var c=new J,d=new tb,e=new Ha,f=new n,g=new n,h=new n,k=new n,m=new n,l=new n,q=new B,v=new B,t=new B,r=new n,u=new n;return function(p,n){var u=this.geometry,w=this.material,y=this.matrixWorld;if(void 0!==w&&(null===u.boundingSphere&&u.computeBoundingSphere(),e.copy(u.boundingSphere),e.applyMatrix4(y),!1!==p.ray.intersectsSphere(e)&&(c.getInverse(y),d.copy(p.ray).applyMatrix4(c),null===u.boundingBox|| +!1!==d.intersectsBox(u.boundingBox))))if(u.isBufferGeometry){var z=u.index,C=u.attributes.position,A=u.attributes.uv,F=u.groups;u=u.drawRange;var E,H;if(null!==z)if(Array.isArray(w)){var G=0;for(E=F.length;Ge.far||f.push({distance:r,point:b.clone(),uv:ua.getUV(b,h,k,m,l,q,v,new B),face:null,object:this})}}(),clone:function(){return(new this.constructor(this.material)).copy(this)},copy:function(a){E.prototype.copy.call(this,a);void 0!==a.center&&this.center.copy(a.center);return this}}); +Hc.prototype=Object.assign(Object.create(E.prototype),{constructor:Hc,copy:function(a){E.prototype.copy.call(this,a,!1);a=a.levels;for(var b=0,c=a.length;b=d[e].distance)d[e-1].object.visible=!1,d[e].object.visible=!0;else break; +for(;ef||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}else for(g= +0,r=t.length/3-1;gf||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}else if(g.isGeometry)for(k=g.vertices,m=k.length,g=0;gf||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u, +point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}}(),copy:function(a){E.prototype.copy.call(this,a);this.geometry.copy(a.geometry);this.material.copy(a.material);return this},clone:function(){return(new this.constructor).copy(this)}});W.prototype=Object.assign(Object.create(da.prototype),{constructor:W,isLineSegments:!0,computeLineDistances:function(){var a=new n,b=new n;return function(){var c=this.geometry;if(c.isBufferGeometry)if(null===c.index){for(var d= +c.attributes.position,e=[],f=0,g=d.count;fd.far||e.push({distance:a,distanceToRay:Math.sqrt(f),point:q.clone(),index:c,face:null,object:g}))}var g=this,h=this.geometry,k=this.matrixWorld,m=d.params.Points.threshold;null===h.boundingSphere&&h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(k);c.radius+=m;if(!1!==d.ray.intersectsSphere(c)){a.getInverse(k);b.copy(d.ray).applyMatrix4(a); +m/=(this.scale.x+this.scale.y+this.scale.z)/3;var l=m*m;m=new n;var q=new n;if(h.isBufferGeometry){var v=h.index;h=h.attributes.position.array;if(null!==v){var t=v.array;v=0;for(var r=t.length;v=a.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}});Vb.prototype=Object.create(V.prototype);Vb.prototype.constructor=Vb;Vb.prototype.isCompressedTexture=!0;Jc.prototype=Object.create(V.prototype);Jc.prototype.constructor=Jc;Jc.prototype.isCanvasTexture=!0;Kc.prototype=Object.create(V.prototype);Kc.prototype.constructor=Kc;Kc.prototype.isDepthTexture=!0;Wb.prototype=Object.create(C.prototype);Wb.prototype.constructor=Wb;Lc.prototype= +Object.create(G.prototype);Lc.prototype.constructor=Lc;Xb.prototype=Object.create(C.prototype);Xb.prototype.constructor=Xb;Mc.prototype=Object.create(G.prototype);Mc.prototype.constructor=Mc;Aa.prototype=Object.create(C.prototype);Aa.prototype.constructor=Aa;Nc.prototype=Object.create(G.prototype);Nc.prototype.constructor=Nc;Yb.prototype=Object.create(Aa.prototype);Yb.prototype.constructor=Yb;Oc.prototype=Object.create(G.prototype);Oc.prototype.constructor=Oc;vb.prototype=Object.create(Aa.prototype); +vb.prototype.constructor=vb;Pc.prototype=Object.create(G.prototype);Pc.prototype.constructor=Pc;Zb.prototype=Object.create(Aa.prototype);Zb.prototype.constructor=Zb;Qc.prototype=Object.create(G.prototype);Qc.prototype.constructor=Qc;$b.prototype=Object.create(Aa.prototype);$b.prototype.constructor=$b;Rc.prototype=Object.create(G.prototype);Rc.prototype.constructor=Rc;wb.prototype=Object.create(C.prototype);wb.prototype.constructor=wb;wb.prototype.toJSON=function(){var a=C.prototype.toJSON.call(this); +a.path=this.parameters.path.toJSON();return a};Sc.prototype=Object.create(G.prototype);Sc.prototype.constructor=Sc;ac.prototype=Object.create(C.prototype);ac.prototype.constructor=ac;Tc.prototype=Object.create(G.prototype);Tc.prototype.constructor=Tc;bc.prototype=Object.create(C.prototype);bc.prototype.constructor=bc;var ih={triangulate:function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=uf(a,0,e,c,!0),g=[];if(!f)return g;var h;if(d){var k=c;d=[];var m;var l=0;for(m=b.length;l80*c){var t=h=a[0];var r=d=a[1];for(k=c;kh&&(h=l),b>d&&(d=b);h=Math.max(h-t,d-r);h=0!==h?1/h:0}Wc(f,g,c,t,r,h);return g}},ab={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;e +ab.area(a)},triangulateShape:function(a,b){var c=[],d=[],e=[];yf(a);zf(c,a);var f=a.length;b.forEach(yf);for(a=0;aMath.abs(g-k)?[new B(a,1-c),new B(h,1-d), +new B(m,1-e),new B(n,1-b)]:[new B(g,1-c),new B(k,1-d),new B(l,1-e),new B(v,1-b)]}};Yc.prototype=Object.create(G.prototype);Yc.prototype.constructor=Yc;cc.prototype=Object.create(Va.prototype);cc.prototype.constructor=cc;Zc.prototype=Object.create(G.prototype);Zc.prototype.constructor=Zc;zb.prototype=Object.create(C.prototype);zb.prototype.constructor=zb;$c.prototype=Object.create(G.prototype);$c.prototype.constructor=$c;dc.prototype=Object.create(C.prototype);dc.prototype.constructor=dc;ad.prototype= +Object.create(G.prototype);ad.prototype.constructor=ad;ec.prototype=Object.create(C.prototype);ec.prototype.constructor=ec;Ab.prototype=Object.create(G.prototype);Ab.prototype.constructor=Ab;Ab.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);return Bf(this.parameters.shapes,a)};Bb.prototype=Object.create(C.prototype);Bb.prototype.constructor=Bb;Bb.prototype.toJSON=function(){var a=C.prototype.toJSON.call(this);return Bf(this.parameters.shapes,a)};fc.prototype=Object.create(C.prototype); +fc.prototype.constructor=fc;Cb.prototype=Object.create(G.prototype);Cb.prototype.constructor=Cb;bb.prototype=Object.create(C.prototype);bb.prototype.constructor=bb;bd.prototype=Object.create(Cb.prototype);bd.prototype.constructor=bd;cd.prototype=Object.create(bb.prototype);cd.prototype.constructor=cd;dd.prototype=Object.create(G.prototype);dd.prototype.constructor=dd;gc.prototype=Object.create(C.prototype);gc.prototype.constructor=gc;var na=Object.freeze({WireframeGeometry:Wb,ParametricGeometry:Lc, +ParametricBufferGeometry:Xb,TetrahedronGeometry:Nc,TetrahedronBufferGeometry:Yb,OctahedronGeometry:Oc,OctahedronBufferGeometry:vb,IcosahedronGeometry:Pc,IcosahedronBufferGeometry:Zb,DodecahedronGeometry:Qc,DodecahedronBufferGeometry:$b,PolyhedronGeometry:Mc,PolyhedronBufferGeometry:Aa,TubeGeometry:Rc,TubeBufferGeometry:wb,TorusKnotGeometry:Sc,TorusKnotBufferGeometry:ac,TorusGeometry:Tc,TorusBufferGeometry:bc,TextGeometry:Yc,TextBufferGeometry:cc,SphereGeometry:Zc,SphereBufferGeometry:zb,RingGeometry:$c, +RingBufferGeometry:dc,PlaneGeometry:Bc,PlaneBufferGeometry:sb,LatheGeometry:ad,LatheBufferGeometry:ec,ShapeGeometry:Ab,ShapeBufferGeometry:Bb,ExtrudeGeometry:yb,ExtrudeBufferGeometry:Va,EdgesGeometry:fc,ConeGeometry:bd,ConeBufferGeometry:cd,CylinderGeometry:Cb,CylinderBufferGeometry:bb,CircleGeometry:dd,CircleBufferGeometry:gc,BoxGeometry:Ob,BoxBufferGeometry:rb});Db.prototype=Object.create(M.prototype);Db.prototype.constructor=Db;Db.prototype.isShadowMaterial=!0;Db.prototype.copy=function(a){M.prototype.copy.call(this, +a);this.color.copy(a.color);return this};hc.prototype=Object.create(Ca.prototype);hc.prototype.constructor=hc;hc.prototype.isRawShaderMaterial=!0;Wa.prototype=Object.create(M.prototype);Wa.prototype.constructor=Wa;Wa.prototype.isMeshStandardMaterial=!0;Wa.prototype.copy=function(a){M.prototype.copy.call(this,a);this.defines={STANDARD:""};this.color.copy(a.color);this.roughness=a.roughness;this.metalness=a.metalness;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity; +this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.roughnessMap=a.roughnessMap;this.metalnessMap=a.metalnessMap;this.alphaMap= +a.alphaMap;this.envMap=a.envMap;this.envMapIntensity=a.envMapIntensity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Eb.prototype=Object.create(Wa.prototype);Eb.prototype.constructor=Eb;Eb.prototype.isMeshPhysicalMaterial=!0;Eb.prototype.copy=function(a){Wa.prototype.copy.call(this, +a);this.defines={PHYSICAL:""};this.reflectivity=a.reflectivity;this.clearCoat=a.clearCoat;this.clearCoatRoughness=a.clearCoatRoughness;return this};Ja.prototype=Object.create(M.prototype);Ja.prototype.constructor=Ja;Ja.prototype.isMeshPhongMaterial=!0;Ja.prototype.copy=function(a){M.prototype.copy.call(this,a);this.color.copy(a.color);this.specular.copy(a.specular);this.shininess=a.shininess;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity= +a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity= +a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Fb.prototype=Object.create(Ja.prototype);Fb.prototype.constructor=Fb;Fb.prototype.isMeshToonMaterial=!0;Fb.prototype.copy=function(a){Ja.prototype.copy.call(this,a);this.gradientMap=a.gradientMap; +return this};Gb.prototype=Object.create(M.prototype);Gb.prototype.constructor=Gb;Gb.prototype.isMeshNormalMaterial=!0;Gb.prototype.copy=function(a){M.prototype.copy.call(this,a);this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe;this.wireframeLinewidth= +a.wireframeLinewidth;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Hb.prototype=Object.create(M.prototype);Hb.prototype.constructor=Hb;Hb.prototype.isMeshLambertMaterial=!0;Hb.prototype.copy=function(a){M.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap= +a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Ib.prototype= +Object.create(M.prototype);Ib.prototype.constructor=Ib;Ib.prototype.isMeshMatcapMaterial=!0;Ib.prototype.copy=function(a){M.prototype.copy.call(this,a);this.defines={MATCAP:""};this.color.copy(a.color);this.matcap=a.matcap;this.map=a.map;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias; +this.alphaMap=a.alphaMap;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Jb.prototype=Object.create(R.prototype);Jb.prototype.constructor=Jb;Jb.prototype.isLineDashedMaterial=!0;Jb.prototype.copy=function(a){R.prototype.copy.call(this,a);this.scale=a.scale;this.dashSize=a.dashSize;this.gapSize=a.gapSize;return this};var jh=Object.freeze({ShadowMaterial:Db,SpriteMaterial:jb,RawShaderMaterial:hc,ShaderMaterial:Ca,PointsMaterial:Ia,MeshPhysicalMaterial:Eb, +MeshStandardMaterial:Wa,MeshPhongMaterial:Ja,MeshToonMaterial:Fb,MeshNormalMaterial:Gb,MeshLambertMaterial:Hb,MeshDepthMaterial:gb,MeshDistanceMaterial:hb,MeshBasicMaterial:ya,MeshMatcapMaterial:Ib,LineDashedMaterial:Jb,LineBasicMaterial:R,Material:M}),sa={arraySlice:function(a,b,c){return sa.isTypedArray(a)?new a.constructor(a.subarray(b,void 0!==c?c:a.length)):a.slice(b,c)},convertArray:function(a,b,c){return!a||!c&&a.constructor===b?a:"number"===typeof b.BYTES_PER_ELEMENT?new b(a):Array.prototype.slice.call(a)}, +isTypedArray:function(a){return ArrayBuffer.isView(a)&&!(a instanceof DataView)},getKeyframeOrder:function(a){for(var b=a.length,c=Array(b),d=0;d!==b;++d)c[d]=d;c.sort(function(b,c){return a[b]-a[c]});return c},sortedArray:function(a,b,c){for(var d=a.length,e=new a.constructor(d),f=0,g=0;g!==d;++f)for(var h=c[f]*b,k=0;k!==b;++k)e[g++]=a[h+k];return e},flattenJSON:function(a,b,c,d){for(var e=1,f=a[0];void 0!==f&&void 0===f[d];)f=a[e++];if(void 0!==f){var g=f[d];if(void 0!==g)if(Array.isArray(g)){do g= +f[d],void 0!==g&&(b.push(f.time),c.push.apply(c,g)),f=a[e++];while(void 0!==f)}else if(void 0!==g.toArray){do g=f[d],void 0!==g&&(b.push(f.time),g.toArray(c,c.length)),f=a[e++];while(void 0!==f)}else{do g=f[d],void 0!==g&&(b.push(f.time),c.push(g)),f=a[e++];while(void 0!==f)}}}};Object.assign(wa.prototype,{evaluate:function(a){var b=this.parameterPositions,c=this._cachedIndex,d=b[c],e=b[c-1];a:{b:{c:{d:if(!(a=e)break a;else{f=b[1];a=e)break b}d=c;c=0}}for(;c>>1,ab;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),a=this.getValueSize(),this.times=sa.arraySlice(c,e,f),this.values=sa.arraySlice(this.values,e*a,f*a);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),a=!1);var c=this.times;b=this.values;var d=c.length;0===d&&(console.error("THREE.KeyframeTrack: Track is empty.", +this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("THREE.KeyframeTrack: Out of order keys.",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&sa.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,f,d);a=!1;break}return a},optimize:function(){for(var a=this.times,b=this.values, +c=this.getValueSize(),d=2302===this.getInterpolation(),e=1,f=a.length-1,g=1;gg)e=a+1;else if(0b&&(b=0);1Number.EPSILON&&(g.normalize(),c=Math.acos(H.clamp(d[k-1].dot(d[k]),-1,1)),e[k].applyMatrix4(h.makeRotationAxis(g,c))),f[k].crossVectors(d[k],e[k]);if(!0===b)for(c=Math.acos(H.clamp(e[0].dot(e[a]),-1,1)),c/=a,0d;)d+=c;for(;d>c;)d-=c;de&&(e=1);1E-4>d&&(d=e);1E-4>k&&(k=e);Le.initNonuniformCatmullRom(f.x,g.x,h.x,c.x,d,e,k);Me.initNonuniformCatmullRom(f.y,g.y,h.y,c.y,d,e,k);Ne.initNonuniformCatmullRom(f.z,g.z,h.z,c.z,d,e,k)}else"catmullrom"===this.curveType&&(Le.initCatmullRom(f.x,g.x,h.x,c.x,this.tension),Me.initCatmullRom(f.y,g.y,h.y,c.y,this.tension),Ne.initCatmullRom(f.z,g.z,h.z,c.z,this.tension));b.set(Le.calc(a), +Me.calc(a),Ne.calc(a));return b};oa.prototype.copy=function(a){L.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;bc.length-2?c.length-1:a+1];c=c[a>c.length-3?c.length-1:a+2];b.set(Ef(d,e.x,f.x,g.x,c.x),Ef(d,e.y,f.y,g.y,c.y));return b};Oa.prototype.copy=function(a){L.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;b=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=this.getCurveLengths(); +return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;cNumber.EPSILON){if(0>l&&(g=b[f],k=-k,h=b[e],l=-l),!(a.yh.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=l*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=ab.isClockWise,f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new kb;h.curves=g.curves;b.push(h);return b}var k=!e(f[0].getPoints()); +k=a?!k:k;h=[];var l=[],n=[],q=0;l[q]=void 0;n[q]=[];for(var v=0,t=f.length;vl.opacity&&(l.transparent=!0);d.setTextures(k);return d.parse(l)}}()});var Yd,ye={getContext:function(){void 0===Yd&&(Yd=new (window.AudioContext||window.webkitAudioContext));return Yd},setContext:function(a){Yd=a}};Object.assign(ve.prototype,{load:function(a,b,c,d){var e=new Ka(this.manager);e.setResponseType("arraybuffer");e.setPath(this.path);e.load(a,function(a){a=a.slice(0);ye.getContext().decodeAudioData(a,function(a){b(a)})},c,d)},setPath:function(a){this.path=a; +return this}});Object.assign(Gf.prototype,{update:function(){var a,b,c,d,e,f,g,h,k=new J,l=new J;return function(m){if(a!==this||b!==m.focus||c!==m.fov||d!==m.aspect*this.aspect||e!==m.near||f!==m.far||g!==m.zoom||h!==this.eyeSep){a=this;b=m.focus;c=m.fov;d=m.aspect*this.aspect;e=m.near;f=m.far;g=m.zoom;var n=m.projectionMatrix.clone();h=this.eyeSep/2;var p=h*e/b,t=e*Math.tan(H.DEG2RAD*c*.5)/g;l.elements[12]=-h;k.elements[12]=h;var r=-t*d+p;var u=t*d+p;n.elements[0]=2*e/(u-r);n.elements[8]=(u+r)/ +(u-r);this.cameraL.projectionMatrix.copy(n);r=-t*d-p;u=t*d-p;n.elements[0]=2*e/(u-r);n.elements[8]=(u+r)/(u-r);this.cameraR.projectionMatrix.copy(n)}this.cameraL.matrixWorld.copy(m.matrixWorld).multiply(l);this.cameraR.matrixWorld.copy(m.matrixWorld).multiply(k)}}()});ld.prototype=Object.create(E.prototype);ld.prototype.constructor=ld;Object.assign(we.prototype,{start:function(){this.oldTime=this.startTime=("undefined"===typeof performance?Date:performance).now();this.elapsedTime=0;this.running=!0}, +stop:function(){this.getElapsedTime();this.autoStart=this.running=!1},getElapsedTime:function(){this.getDelta();return this.elapsedTime},getDelta:function(){var a=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){var b=("undefined"===typeof performance?Date:performance).now();a=(b-this.oldTime)/1E3;this.oldTime=b;this.elapsedTime+=a}return a}});xe.prototype=Object.assign(Object.create(E.prototype),{constructor:xe,getInput:function(){return this.gain},removeFilter:function(){null!== +this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null);return this},getFilter:function(){return this.filter},setFilter:function(a){null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination);this.filter=a;this.gain.connect(this.filter);this.filter.connect(this.context.destination);return this},getMasterVolume:function(){return this.gain.gain.value}, +setMasterVolume:function(a){this.gain.gain.setTargetAtTime(a,this.context.currentTime,.01);return this},updateMatrixWorld:function(){var a=new n,b=new aa,c=new n,d=new n,e=new we;return function(f){E.prototype.updateMatrixWorld.call(this,f);f=this.context.listener;var g=this.up;this.timeDelta=e.getDelta();this.matrixWorld.decompose(a,b,c);d.set(0,0,-1).applyQuaternion(b);if(f.positionX){var h=this.context.currentTime+this.timeDelta;f.positionX.linearRampToValueAtTime(a.x,h);f.positionY.linearRampToValueAtTime(a.y, +h);f.positionZ.linearRampToValueAtTime(a.z,h);f.forwardX.linearRampToValueAtTime(d.x,h);f.forwardY.linearRampToValueAtTime(d.y,h);f.forwardZ.linearRampToValueAtTime(d.z,h);f.upX.linearRampToValueAtTime(g.x,h);f.upY.linearRampToValueAtTime(g.y,h);f.upZ.linearRampToValueAtTime(g.z,h)}else f.setPosition(a.x,a.y,a.z),f.setOrientation(d.x,d.y,d.z,g.x,g.y,g.z)}}()});lc.prototype=Object.assign(Object.create(E.prototype),{constructor:lc,getOutput:function(){return this.gain},setNodeSource:function(a){this.hasPlaybackControl= +!1;this.sourceType="audioNode";this.source=a;this.connect();return this},setMediaElementSource:function(a){this.hasPlaybackControl=!1;this.sourceType="mediaNode";this.source=this.context.createMediaElementSource(a);this.connect();return this},setBuffer:function(a){this.buffer=a;this.sourceType="buffer";this.autoplay&&this.play();return this},play:function(){if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); +else{var a=this.context.createBufferSource();a.buffer=this.buffer;a.loop=this.loop;a.onended=this.onEnded.bind(this);this.startTime=this.context.currentTime;a.start(this.startTime,this.offset);this.isPlaying=!0;this.source=a;this.setDetune(this.detune);this.setPlaybackRate(this.playbackRate);return this.connect()}},pause:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return!0===this.isPlaying&&(this.source.stop(),this.source.onended= +null,this.offset+=(this.context.currentTime-this.startTime)*this.playbackRate,this.isPlaying=!1),this},stop:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.source.stop(),this.source.onended=null,this.offset=0,this.isPlaying=!1,this},connect:function(){if(0d&&this._mixBufferRegion(c,a,3*b,1-d,b);d=b;for(var f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a);break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a,c);for(var d=b;d!==c;++d)a[d]=a[c+d%b];this.cumulativeWeight=0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a, +b,c,d,e){if(.5<=d)for(d=0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d){aa.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}});Object.assign(Hf.prototype,{getValue:function(a,b){this.bind();var c=this._bindings[this._targetGroup.nCachedObjects_];void 0!==c&&c.getValue(a,b)},setValue:function(a,b){for(var c=this._bindings,d=this._targetGroup.nCachedObjects_,e=c.length;d!==e;++d)c[d].setValue(a,b)},bind:function(){for(var a=this._bindings, +b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].bind()},unbind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].unbind()}});Object.assign(ma,{Composite:Hf,create:function(a,b,c){return a&&a.isAnimationObjectGroup?new ma.Composite(a,b,c):new ma(a,b,c)},sanitizeNodeName:function(){var a=/[\[\]\.:\/]/g;return function(b){return b.replace(/\s/g,"_").replace(a,"")}}(),parseTrackName:function(){var a="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]", +b=/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]");a=/(WCOD+)?/.source.replace("WCOD",a);var c=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]"),d=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]"),e=new RegExp("^"+b+a+c+d+"$"),f=["material","materials","bones"];return function(a){var b=e.exec(a);if(!b)throw Error("PropertyBinding: Cannot parse trackName: "+a);b={nodeName:b[2],objectName:b[3],objectIndex:b[4],propertyName:b[5],propertyIndex:b[6]};var c=b.nodeName&& +b.nodeName.lastIndexOf(".");if(void 0!==c&&-1!==c){var d=b.nodeName.substring(c+1);-1!==f.indexOf(d)&&(b.nodeName=b.nodeName.substring(0,c),b.objectName=d)}if(null===b.propertyName||0===b.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+a);return b}}(),findNode:function(a,b){if(!b||""===b||"root"===b||"."===b||-1===b||b===a.name||b===a.uuid)return a;if(a.skeleton){var c=a.skeleton.getBoneByName(b);if(void 0!==c)return c}if(a.children){var d=function(a){for(var c= +0;c=b){var n=b++,q=a[n];c[q.uuid]=l;a[l]=q;c[k]=n;a[n]=h;h=0;for(k=e;h!==k;++h){q=d[h];var v=q[l];q[l]=q[n];q[n]=v}}}this.nCachedObjects_=b},uncache:function(){for(var a=this._objects,b=a.length,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var k=arguments[g].uuid,l=d[k];if(void 0!==l)if(delete d[k],lb||0===c)return;this._startTime=null;b*=c}b*=this._updateTimeScale(a);c=this._updateTime(b);a=this._updateWeight(a);if(0c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b},_updateTimeScale:function(a){var b=0;if(!this.paused){b=this.timeScale;var c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0]; +b*=d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a,c=this._clip.duration,d=this.loop,e=this._loopCount,f=2202===d;if(0===a)return-1===e?b:f&&1===(e&1)?c-b:b;if(2200===d)a:{if(-1===e&&(this._loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else break a;this.clampWhenFinished?this.paused=!0:this.enabled=!1;this._mixer.dispatchEvent({type:"finished",action:this,direction:0> +a?-1:1})}else{-1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions,f)):this._setEndings(0===this.repetitions,!0,f));if(b>=c||0>b){d=Math.floor(b/c);b-=c*d;e+=Math.abs(d);var g=this.repetitions-e;0>=g?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,b=0a,this._setEndings(a,!a,f)):this._setEndings(!1,!1,f),this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:d}))}if(f&& +1===(e&1))return this.time=b,c-b}return this.time=b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=2401,d.endingEnd=2401):(d.endingStart=a?this.zeroSlopeAtStart?2401:2400:2402,d.endingEnd=b?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}});Ce.prototype= +Object.assign(Object.create(ka.prototype),{constructor:Ce,_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName,k=h[g];void 0===k&&(k={},h[g]=k);for(h=0;h!==e;++h){var l=d[h],n=l.name,q=k[n];if(void 0===q){q=f[h];if(void 0!==q){null===q._cacheIndex&&(++q.referenceCount,this._addInactiveBinding(q,g,n));continue}q=new Be(ma.create(c,n,b&&b._propertyBindings[h].binding.parsedPath),l.ValueTypeName, +l.getValueSize());++q.referenceCount;this._addInactiveBinding(q,g,n)}f[h]=q;a[h].resultBuffer=q.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b= +a._propertyBindings,c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions=[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length}, +get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}},_isActiveAction:function(a){a=a._cacheIndex;return null!==a&&athis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box2: .getParameter() target is now required"),b=new B); +return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box2: .clampPoint() target is now required"),b=new B);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new B;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),intersect:function(a){this.min.max(a.min); +this.max.min(a.max);return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Ie.prototype,{set:function(a,b){this.start.copy(a);this.end.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},getCenter:function(a){void 0=== +a&&(console.warn("THREE.Line3: .getCenter() target is now required"),a=new n);return a.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){void 0===a&&(console.warn("THREE.Line3: .delta() target is now required"),a=new n);return a.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(a,b){void 0===b&&(console.warn("THREE.Line3: .at() target is now required"),b= +new n);return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new n,b=new n;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);c=b.dot(b);c=b.dot(a)/c;d&&(c=H.clamp(c,0,1));return c}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);void 0===c&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),c=new n);return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a); +this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}});md.prototype=Object.create(E.prototype);md.prototype.constructor=md;md.prototype.isImmediateRenderObject=!0;nd.prototype=Object.create(W.prototype);nd.prototype.constructor=nd;nd.prototype.update=function(){var a=new n,b=new n,c=new pa;return function(){var d=["a","b","c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var e=this.object.matrixWorld,f= +this.geometry.attributes.position,g=this.object.geometry;if(g&&g.isGeometry)for(var h=g.vertices,k=g.faces,l=g=0,n=k.length;lMath.abs(b)&&(b=1E-8);this.scale.set(.5*this.size,.5*this.size,b);this.children[0].material.side=0>b?1:0;this.lookAt(this.plane.normal);E.prototype.updateMatrixWorld.call(this,a)};var Wd,Je;eb.prototype=Object.create(E.prototype);eb.prototype.constructor=eb;eb.prototype.setDirection=function(){var a=new n,b;return function(c){.99999c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y), +this.quaternion.setFromAxisAngle(a,b))}}();eb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,b,c);this.cone.position.y=a;this.cone.updateMatrix()};eb.prototype.setColor=function(a){this.line.material.color.copy(a);this.cone.material.color.copy(a)};eb.prototype.copy=function(a){E.prototype.copy.call(this,a,!1);this.line.copy(a.line);this.cone.copy(a.cone);return this};eb.prototype.clone= +function(){return(new this.constructor).copy(this)};td.prototype=Object.create(W.prototype);td.prototype.constructor=td;L.create=function(a,b){console.log("THREE.Curve.create() has been deprecated");a.prototype=Object.create(L.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};Object.assign(cb.prototype,{createPointsGeometry:function(a){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getPoints(a); +return this.createGeometry(a)},createSpacedPointsGeometry:function(a){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var b=new G,c=0,d=a.length;c=0;n--){ + if(assetloader.modellist[n].deviceType == "train"){ + newmesh = assetloader.modellist[n].mesh.clone(true); + + ntracks1 = assetloader.modellist[n].animations.slice(24,52); + + tclip = new THREE.AnimationClip("three",2,ntracks1); + + ntracks2 = assetloader.modellist[n].animations.slice(0,24); + + fclip = new THREE.AnimationClip("four",2,ntracks2); + + n = 0; + } + } + actionss[data[i].code] = { + top:[], + down:[] + }; + for(let j=0;j=1;n--){ + // newmesh.children[n].position.x = -76; + // newmesh.children[n-1].add(newmesh.children[n]); + // } + //创建列车字牌 + let textgeometry = new THREE.PlaneBufferGeometry( 150, 100, 1 ); + let textt = new THREE.CanvasTexture(getTextCanvas(data[i])); + let textmaterial = new THREE.MeshBasicMaterial( { side: THREE.DoubleSide,map:textt ,transparent: true} ); + let textplane = new THREE.Mesh( textgeometry, textmaterial ); + textplane.name = data[i].code; + textplane.position.x = -50; + textplane.position.y = 130; + textplane.tcode = data[i].code; + //textplane.rotation.x = Math.PI; + scope.textlist.push(textplane); + newmesh.children[0].add(textplane); + + textgeometry.dispose(); + textmaterial.dispose(); + textt.dispose(); + //group.add(textplane); + newmesh.first = false; + newmesh.name = data[i].code; + newmesh.rname = data[i].groupNumber; + newmesh.groupNumber = data[i].groupNumber; + + newmesh.position.set(0,-50000,0); + newmesh.children[0].position.y = 0; + //newmesh.rotation.y = Math.PI/2; + newmesh.status = "00"; + newmesh.nowcode = null; + newmesh.curve = null; + newmesh.doorStatus = "01"; + newmesh.dispose = true; + newmesh.nowsection = null; + newmesh.nextsection = null; + newmesh.speed = 0; + newmesh.speeds = 0; + newmesh.progress = null; + + + scope.list[data[i].code] = newmesh; + //scene.add(newmesh); + } + scene.add(scope.group); + resolve("loadedtrain"); + }); + } + +} + +let onProgress = function ( xhr ) { + + if ( xhr.lengthComputable ) { + + let percentComplete = xhr.loaded / xhr.total * 100; + console.log( Math.round( percentComplete, 2 ) + '% downloaded' ); + + } + +}; + +let onError = function () { }; + +var beauty = new Image(); +beauty.src = "../../static/texture/guide.png"; +//canvas文字贴图方法 +//PS:待提炼 增强功能 +function getTextCanvas(text){ + var canvas = document.getElementById('canvastexture'); + + canvas.width = 128; + canvas.height = 96; + + var ctx = canvas.getContext('2d'); + + //var bg = canvas.createPattern(img, "no-repeat"); + //ctx.fillStyle = bg; + ctx.fillRect(0, 0,128,96); + ctx.font = "10px Verdana"; + ctx.fillStyle = '#000000'; + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.clearRect(0,0,128,96); + //console.log(text.groupNumber); + ctx.drawImage(beauty,0,0,128, 96); + ctx.fillText("车组号:"+text.groupNumber, 60,15); + ctx.fillText("车组人员:XXX", 60,31); + ctx.fillText("速度:XXX.XXX", 60,43); + //ctx.fillText(text.trainModel.name, width/2,height*3/4); + let data = ctx.getImageData(0, 0,128,96); + return data; +} diff --git a/src/jlmap3d/model/TrainModel.js b/src/jlmap3d/model/TrainModel.js new file mode 100644 index 000000000..7bf6a92cb --- /dev/null +++ b/src/jlmap3d/model/TrainModel.js @@ -0,0 +1,8 @@ +export function TrainModel(opts) { + + var scope = this; + + this.mesh = null; + this.meshurl = null; + this.picurl = null; +} diff --git a/src/jlmap3d/utils/ReStart.js b/src/jlmap3d/utils/ReStart.js new file mode 100644 index 000000000..83472d2c4 --- /dev/null +++ b/src/jlmap3d/utils/ReStart.js @@ -0,0 +1,55 @@ +export function ReStart(mapdata){ + + let trainlist = mapdata.trainlisttest; + let signallist = mapdata.signallist; + for(let i=0;i5){ + let j = trainlist.list[i].movelist.length-1; + trainlist.list[i].position.x = (trainlist.list[i].movelist[j].points[0].x+trainlist.list[i].movelist[j].points[1].x)/2; + trainlist.list[i].position.z = (trainlist.list[i].movelist[j].points[0].z+trainlist.list[i].movelist[j].points[1].z)/2; + trainlist.list[i].movelist = []; + } + } + + for(var j=0;j=0;j--){ + //判断是否有移动事件 + if(traindata.group.children[j].dispose == false){ + + if(traindata.group.children[j].progress != null){ + + let trainmodel = traindata.group.children[j]; + + if(trainmodel.speeds > 0 && trainmodel.speeds){ + + let speed = null; + if(traindata.group.children[j].progress<1){ + // console.log(trainmodel.rname); + // console.log(trainmodel.speeds); + // console.log(trainmodel.progress); + let movecurve = trainmodel.curve; + + if(trainmodel.status == "03"){//向左 + // console.log(traindata.group.children[j].rname); + // console.log(traindata.group.children[j]); + if(movecurve){ + let point = movecurve.getPointAt(trainmodel.progress); + if(Math.abs( point.z -trainmodel.children[0].matrixWorld.elements[14]) >0.05){ + + trainmodel.children[0].up = new THREE.Vector3(-1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + + if(trainmodel.children[0].rotation.y>(Math.PI-0.05) &&trainmodel.children[0].rotation.y<(Math.PI+0.05)){ + trainmodel.children[0].rotation.y = Math.PI; + } + + let offsetz = parseFloat(trainmodel.children[0].matrixWorld.elements[14]) - parseFloat(point.z); + trainmodel.children[0].position.z += offsetz; + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y, + posz:trainmodel.children[0].position.z + } + trainmodel.children[1].rotalist.push(rotas); + //trainmodel.position.z = point.z; + } + + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + for(let rs = 1;rs<6;rs++){ + // console.log("train:"+rs); + // console.log(trainmodel.children[rs].rotalist.length); + if(trainmodel.children[rs].rotalist[0]){ + + + for(let xh=0;xh0.1){ + + trainmodel.children[0].up = new THREE.Vector3(1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + if(trainmodel.children[0].rotation.y<0.05 && trainmodel.children[0].rotation.y>-0.05){ + trainmodel.children[0].rotation.y = 0; + } + + + let offsetz = parseFloat(point.z) - parseFloat(trainmodel.children[0].matrixWorld.elements[14]); + trainmodel.children[0].position.z += offsetz; + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y, + posz:trainmodel.children[0].position.z + } + trainmodel.children[1].rotalist.push(rotas); + //trainmodel.position.z = point.z; + } + + + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + + for(let rs = 1;rs<6;rs++){ + + if(trainmodel.children[rs].rotalist[0]){ + + for(let xh=0;xh=trainmodel.children[rs].rotalist[0].posr.x){ + let offsetz = parseFloat(trainmodel.children[rs].rotalist[0].posr.z) - parseFloat(trainmodel.children[rs].matrixWorld.elements[14]); + + trainmodel.children[rs].position.z = trainmodel.children[rs].rotalist[0].posz; + if(rs != 5){ + let asd = trainmodel.children[rs].rotalist[0]; + trainmodel.children[rs+1].rotalist.push(asd); + } + //let offsetx = trainmodel.children[1].matrixWorld.elements[12]-trainmodel.children[0].children[3].matrixWorld.elements[12]; + + trainmodel.children[rs].rotation.y = trainmodel.children[rs].rotalist[0].rota; + trainmodel.children[rs].rotalist.splice(0,1) + xh--; + }else{ + xh = trainmodel.children[rs].rotalist.length; + } + } + //console.log(trainmodel.children[rs].rotalist.length); + + } + + + } + + } + trainmodel.position.x = point.x; + trainmodel.position.y = 0; + + + if(trainmodel.isStandTrack == true){ + trainmodel.progress += (trainmodel.speeds*2); + }else{ + trainmodel.progress += trainmodel.speeds; + } + } + } + + } + + } + } + } + + } + + } + +} diff --git a/src/jlmap3d/utils/UpdateTrainTest.js b/src/jlmap3d/utils/UpdateTrainTest.js new file mode 100644 index 000000000..a5d6c7e6a --- /dev/null +++ b/src/jlmap3d/utils/UpdateTrainTest.js @@ -0,0 +1,144 @@ + +export function UpdateTrain(camera,traindata){ + if(traindata != undefined ){ + for(let j=traindata.group.children.length-1;j>=0;j--){ + //判断是否有移动事件 + if(traindata.group.children[j].dispose == false){ + + if(traindata.group.children[j].progress != null){ + + let trainmodel = traindata.group.children[j]; + + if(trainmodel.speeds > 0 && trainmodel.speeds){ + + let speed = null; + if(traindata.group.children[j].progress<1){ + // console.log(trainmodel.rname); + // console.log(trainmodel.speeds); + // console.log(trainmodel.progress); + let movecurve = trainmodel.curve; + + if(trainmodel.status == "03"){//向左 + let point = movecurve.getPointAt(traindata.group.children[j].progress); + if(Math.abs( point.z -trainmodel.children[0].matrixWorld.elements[14]) >0.1){ + trainmodel.children[0].up = new THREE.Vector3(-1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y + } + trainmodel.children[1].rotalist.push(rotas); + + let offsetz = parseFloat(trainmodel.children[0].matrixWorld.elements[14]) - parseFloat(point.z); + trainmodel.children[0].position.z += offsetz; + //trainmodel.position.z = point.z; + } + + trainmodel.position.x = point.x; + trainmodel.position.y = 0; + + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + for(let rs = 1;rs<6;rs++){ + //console.log(rs); + if(trainmodel.children[rs].rotalist[0]){ + let offsetz = parseFloat(trainmodel.children[rs].matrixWorld.elements[14]) - parseFloat(trainmodel.children[rs].rotalist[0].posr.z); + + trainmodel.children[rs].position.z += offsetz; + + for(let xh=0;xh0.1){ + trainmodel.children[0].up = new THREE.Vector3(1,0,0); + let tangent = movecurve.getTangentAt(traindata.group.children[j].progress).normalize(); + trainmodel.children[0].axis.crossVectors(trainmodel.children[0].up, tangent).normalize(); + let radians = Math.acos(trainmodel.children[0].up.dot(tangent)); + trainmodel.children[0].quaternion.setFromAxisAngle(trainmodel.children[0].axis, radians); + + let rotas = { + posr:point, + rota:trainmodel.children[0].rotation.y + } + trainmodel.children[1].rotalist.push(rotas); + let offsetz = parseFloat(point.z) - parseFloat(trainmodel.children[0].matrixWorld.elements[14]); + trainmodel.children[0].position.z += offsetz; + //trainmodel.position.z = point.z; + } + + trainmodel.position.x = point.x; + trainmodel.position.y = 0; + if(trainmodel.children[1].rotalist.length > 0 || trainmodel.children[2].rotalist.length > 0 || trainmodel.children[3].rotalist.length > 0 || trainmodel.children[4].rotalist.length > 0|| trainmodel.children[5].rotalist.length > 0){ + + for(let rs = 1;rs<6;rs++){ + //console.log(rs); + if(trainmodel.children[rs].rotalist[0]){ + + let offsetz = parseFloat(trainmodel.children[rs].rotalist[0].posr.z) - parseFloat(trainmodel.children[rs].matrixWorld.elements[14]); + trainmodel.children[rs].position.z += offsetz; + + for(let xh=0;xh=trainmodel.children[rs].rotalist[0].posr.x){ + + if(rs != 5){ + let asd = trainmodel.children[rs].rotalist[0]; + trainmodel.children[rs+1].rotalist.push(asd); + + } + //let offsetx = trainmodel.children[1].matrixWorld.elements[12]-trainmodel.children[0].children[3].matrixWorld.elements[12]; + + trainmodel.children[rs].rotation.y = trainmodel.children[rs].rotalist[0].rota; + trainmodel.children[rs].rotalist.splice(0,1) + xh--; + }else{ + xh = trainmodel.children[rs].rotalist.length; + } + } + //console.log(trainmodel.children[rs].rotalist.length); + + } + + + } + // console.log(trainmodel.rotalist); + } + + trainmodel.progress += trainmodel.speeds; + } + + } + + } + } + } + + } + + } + +} diff --git a/src/main.js b/src/main.js index 1538547fa..a645e483f 100644 --- a/src/main.js +++ b/src/main.js @@ -16,12 +16,13 @@ import router from './router'; import '@/icons'; // icon import '@/permission'; // permission control import '@/scripts/GlobalPlugin'; +import '@/directives'; Vue.use(ElementUI); Vue.config.productionTip = false; -new Vue({ +window.eventBus = new Vue({ el: '#app', router, store, diff --git a/src/permission.js b/src/permission.js index 85c3b4912..a863cda63 100644 --- a/src/permission.js +++ b/src/permission.js @@ -66,7 +66,7 @@ function handleRoute(to, from, next, routeInfo) { }).catch(() => { store.dispatch('FedLogOut', routeInfo.clientId).then(() => { - Vue.$messageBox('验证失败,请重新登陆!'); + Vue.prototype.$messageBox('验证失败,请重新登陆!'); next({ path: routeInfo.loginPath }); }); }); diff --git a/src/router/index.js b/src/router/index.js index eae622547..1fde59b45 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -49,7 +49,71 @@ export const UrlConfig = { runPlan: '/map/runPlan', runPlanView: '/map/runPlan/view', product: '/map/product', - productDraft: '/map/product/draft' + productDraft: '/map/product/draft', + }, + lesson: { + prefix: '/lesson', + record: '/lesson/record/training', + manage: '/lesson/manage/training' + }, + teach: { + prefix: '/teach', + detail: '/teach/detail', + practical: '/teach/practical', + pay: '/teach/pay', + }, + exam: { + prefix: '/exam', + detail: '/exam/detail', + course: '/exam/course', + examRuleManage: '/exam/examRule/manage', + pay: '/exam/pay' + }, + demonstration: { + prefix: '/demonstration', + detail: '/demonstration/detail', + pay: '/demonstration/pay' + }, + dp: { + prefix: '/dp', + detail: '/dp/detail', + pay: '/dp/pay' + + }, + plan: { + prefix: '/plan', + tool: '/plan/tool', + detail: '/plan/detail', + pay: '/plan/pay' + }, + replay: { + prefix: '/replay' + }, + permission: { + prefix: '/permission', + permissionList: '/permission/manage', + permissionDraft: '/permission/draft', + permission: '/permission/restore' + }, + publish: { + prefix: '/publish', + map: '/publish/map', + mapDraft: '/publish/map/draft', + runPlanEveryDay: '/publish/runPlan/everyDay', + runPlanTemplate: '/publish/runPlan/template', + runPlanCommon: '/publish/runPlan/common', + runPlanView: '/publish/runPlan/view', + }, + orderauthor: { + prefix: '/orderauthor', + commodityManage: '/orderauthor/commodity/manage', + commodityDraft: '/orderauthor/commodity/draft', + orderManage: '/orderauthor/order/manage', + orderDraft: '/orderauthor/order/draft', + authorMange: '/orderauthor/author/manage', + authorDraft: '/orderauthor/author/draft', + transferDetail: '/orderauthor/transfer/detail', + trainferPackage: '/orderauthor/transfer/package' } }; @@ -70,7 +134,35 @@ export const constantRoutes = [ component: () => import('@/views/login/index'), hidden: true }, - + // 扫码登录 + { + path: '/dp/login', + component: resolve => require(['@/views/login/loginNewScreen'], resolve), + hidden: true + }, + // 密码登录 + { + path: '/dp/login1', + component: resolve => require(['@/views/login/loginScreen'], resolve), + hidden: true + }, + // 扫码登录 + { + path: '/plan/login', + component: resolve => require(['@/views/login/loginNewPlan'], resolve), + hidden: true + }, + // 密码登录 + { + path: '/plan/login1', + component: resolve => require(['@/views/login/loginPlan'], resolve), + hidden: true + }, + { + path: '/jlmap3d/edit', + component: resolve => require(['@/views/jlmap3d/jlmap3dedit'], resolve), + hidden: true + }, { path: '/401', component: () => import('@/views/error-page/401'), @@ -93,91 +185,718 @@ export const constantRoutes = [ component: () => import('@/views/dashboard/index'), meta: { title: '首页', icon: 'dashboard' } }] - } + }, + + { path: '*', redirect: '/404', hidden: true } ]; -export function getUrlByPath(path, router) { -} - -export const routerMap = { - path: '/map', - name: '地图管理', - meta: { - title: '地图管理', - roles: [admin] - }, - component: Layout, - children: [ - { - path: 'manage', - name: '地图管理', - component: () => import('@/views/jmapTest/index'), - meta: { title: '地图管理', icon: 'map-mange' } - }, - // { - // path: 'skinStyle', - // name: '皮肤管理', - // component: resolve => require(['@/views/map/skinStyle/index'], resolve), - // meta: { - // title: '皮肤管理' - // } - // }, - // { - // path: 'skinStyle/draft/:mode/:skinStyleId', - // name: '操作权限', - // hidden: true, - // component: resolve => require(['@/views/map/skinStyle/draft'], resolve), - // meta: { - // title: '操作权限' - // } - // }, - { - path: 'draw', - redirect: '/map/draw/0/draft', - component: resolve => require(['@/views/map/mapdraft/index'], resolve), - meta: { - title: '地图绘制' - }, - children: [ - { - path: ':mapId/:view', - component: resolve => require(['@/views/map/mapdraft/mapedit/index'], resolve), - meta: { - title: '地图绘制' - }, - hidden: true - } - ] - } - // { - // path: 'runPlan', - // redirect: '/map/runPlan/view/draft', - // name: '运行图管理', - // component: resolve => require(['@/views/map/runplan/index'], resolve), - // meta: { - // title: '运行图管理' - // }, - // children: [{ - // path: 'view/:mode', - // component: resolve => require(['@/views/map/runplan/chart'], resolve), - // hidden: true - // }] - // } - // { - // path: 'product', - // name: '产品编辑', - // component: resolve => require(['@/views/lesson/trainingcategory/index'], resolve), - // meta: { - // title: '产品编辑' - // } - // } - ] -}; -export const router404 = { path: '*', redirect: '/404', hidden: true }; - export const asyncRouter = [ - routerMap, - router404 + { + path: '/', + component: Layout, + redirect: '/dashboard', + name: 'Dashboard', + hidden: true, + children: [ + { + path: 'dashboard', + component: resolve => require(['@/views/dashboard/index.vue'], resolve) + } + ] + }, + { + path: '/display/:mode', + component: resolve => require(['@/views/display/index'], resolve), + meta: { + title: '实训视图' + }, + hidden: true + }, + { + path: '/trainroom', + component: resolve => require(['@/views/trainRoom/index'], resolve), + meta: { + title: '综合演练房间' + }, + hidden: true + }, + { + path: '/jointTraining', + name: '联合演练试图', + component: resolve => require(['@/views/jointTraining/index'], resolve), + hidden: true + }, + { + path: '/jlmap3d', + name: '三维test', + component: resolve => require(['@/views/jlmap3d/index'], resolve), + meta: { + title: '三维test' + }, + hidden: true + }, + { + path: '/map', + name: '地图管理', + meta: { + title: '地图管理', + roles: [admin, mapCreater] + }, + component: Layout, + children: [ + { + path: 'skinStyle', + name: '皮肤管理', + component: resolve => require(['@/views/map/skinStyle/index'], resolve), + meta: { + title: '皮肤管理' + } + }, + { + path: 'skinStyle/draft/:mode/:skinStyleId', + name: '操作权限', + hidden: true, + component: resolve => require(['@/views/map/skinStyle/draft'], resolve), + meta: { + title: '操作权限' + } + }, + { + path: 'draw', + redirect: '/map/draw/0/draft', + component: resolve => require(['@/views/map/mapdraft/index'], resolve), + meta: { + title: '地图绘制' + }, + children: [ + { + path: ':mapId/:view', + component: resolve => require(['@/views/map/mapdraft/mapedit/index'], resolve), + meta: { + title: '地图绘制' + }, + hidden: true + } + ] + }, + { + path: 'runPlan', + redirect: '/map/runPlan/view/draft', + name: '运行图管理', + component: resolve => require(['@/views/map/runplan/index'], resolve), + meta: { + title: '运行图管理' + }, + children: [{ + path: 'view/:mode', + component: resolve => require(['@/views/map/runplan/chart'], resolve), + hidden: true + }] + }, + { + path: 'product', + name: '产品编辑', + component: resolve => require(['@/views/lesson/trainingcategory/index'], resolve), + meta: { + title: '产品编辑' + } + } + ] + }, + { + path: '/lesson', + component: Layout, + name: '课程管理', + meta: { + title: '课程管理', + roles: [admin, lessonCreater] + }, + children: [ + { + path: 'record', + redirect: '/lesson/record/training/0/null', + component: resolve => require(['@/views/lesson/trainingrecord/index'], resolve), + meta: { + title: '实训录制' + }, + children: [ + { + path: 'training/:trainingId/:trainingName', + component: resolve => require(['@/views/lesson/trainingrecord/manage/index'], resolve), + meta: { + title: '实训录制' + }, + hidden: true + } + ] + }, + { + path: 'manage/taskmanage', + name: '任务管理', + component: resolve => require(['@/views/lesson/taskmanage/list'], resolve), + meta: { + title: '任务管理' + } + }, + { + path: 'manage/trainingRule', + name: '操作定义', + component: resolve => require(['@/views/lesson/trainingRule/list'], resolve), + meta: { + title: '操作定义' + } + }, + { + path: 'manage/trainingRule/detail', + name: '操作定义明细', + hidden: true, + component: resolve => require(['@/views/lesson/trainingRule/detail/index'], resolve), + meta: { + title: '操作定义明细' + } + }, + { + path: 'manage/training', + name: '实训管理', + component: resolve => require(['@/views/lesson/trainingmanage/index'], resolve), + meta: { + title: '实训管理' + } + }, + { + path: 'edit', + name: '课程编辑', + component: resolve => require(['@/views/lesson/lessoncategory/index'], resolve), + meta: { + title: '课程编辑' + } + }, + { + path: 'manage/scriptmanage', + name: '剧本管理', + component: resolve => require(['@/views/lesson/scriptmanage/list'], resolve), + meta: { + title: '剧本管理' + } + } + ] + }, + { + path: '/teach', + redirect: '/teach/home', + name: '教学系统', + component: resolve => require(['@/views/teach/index'], resolve), + meta: { + roles: [admin, userLesson, user] + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/teach/home'], resolve), + meta: { + title: '教学系统' + } + }, + { + path: 'detail/:lessonId', + name: '课程详情', + component: resolve => require(['@/views/teach/detail/index'], resolve), + meta: { + title: '课程详情' + }, + hidden: true + }, + { + path: 'practical/:trainingId/:lessonId', + name: '实训详情', + component: resolve => require(['@/views/teach/practical/index'], resolve), + meta: { + title: '实训详情' + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/exam', + redirect: '/exam/home', + component: resolve => require(['@/views/exam/index'], resolve), + name: '考试系统', + meta: { + roles: [admin, userExam, user] + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/exam/home'], resolve), + meta: { + title: '考试系统' + } + }, + { + path: 'detail/:examId', + name: '试卷详情', + component: resolve => require(['@/views/exam/detail/examDetail'], resolve), + meta: { + title: '试卷详情' + }, + hidden: true + }, + { + path: 'course/:lessonId', + component: resolve => require(['@/views/exam/detail/courseDetail'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'examRule/manage', + name: '试题设置', + component: resolve => require(['@/views/publish/examRule/index'], resolve), + meta: { + title: '试题设置' + }, + hidden: true + }, + { + path: 'examRule/draft/:mode/:ruleId/:lessonId', + hidden: true, + component: resolve => require(['@/views/publish/examRule/draft/index'], resolve), + meta: { + title: '添加订单' + } + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'questionDetail/:examQuestionId', + name: '开始考试', + component: resolve => require(['@/views/exam/detail/questionDetail'], resolve), + meta: { + title: '开始考试' + }, + hidden: true + }, + { + path: 'result/:userExamId', + name: '考试结果', + component: resolve => require(['@/views/exam/result'], resolve), + meta: { + title: '考试结果' + }, + hidden: true + } + ] + }, + { + path: '/demonstration', + redirect: '/demonstration/home', + component: resolve => require(['@/views/demonstration/index'], resolve), + name: '仿真系统', + meta: { + roles: [admin, userSimulation, user] + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/demonstration/home'], resolve), + meta: { + title: '仿真系统' + } + }, + { + path: 'detail/:mapId', + name: '地图详情', + component: resolve => require(['@/views/demonstration/detail/index'], resolve), + meta: { + title: '地图详情' + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/dp', + redirect: '/dp/home', + component: resolve => require(['@/views/screenMonitor/index'], resolve), + name: '大屏系统', + meta: { + roles: [admin, userScreen] + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/screenMonitor/home'], resolve), + meta: { + title: '大屏系统' + }, + target: true + }, + { + path: 'detail/:lessonId', + component: resolve => require(['@/views/screenMonitor/detail/index'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/plan/tool', + component: resolve => require(['@/views/planMonitor/editTool/index'], resolve), + meta: { + }, + hidden: true + }, + { + path: '/plan', + redirect: '/plan/home', + component: resolve => require(['@/views/planMonitor/index'], resolve), + name: '琏计划', + meta: { + roles: [admin, user] + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/planMonitor/home'], resolve), + meta: { + title: '琏计划' + }, + target: true + }, + { + path: 'detail/:lessonId', + component: resolve => require(['@/views/planMonitor/detail'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/replay', + component: Layout, + meta: { + roles: [admin] + }, + children: [ + { + path: 'manage', + component: resolve => require(['@/views/replay/index'], resolve), + meta: { + title: '回放管理' + } + } + ] + }, + { + path: '/permission', + component: Layout, + meta: { + roles: [admin, user] + }, + children: [ + { + path: 'manage', + component: resolve => require(['@/views/package/index'], resolve), + meta: { + title: '权限管理' + } + }, + { + path: 'draft', + component: resolve => require(['@/views/package/draft/ruleForm'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/publish', + name: '发布内容管理', + component: Layout, + meta: { + title: '发布内容管理', + roles: [admin] + }, + children: [ + { + path: 'map', + name: '发布地图管理', + component: resolve => require(['@/views/publish/publishMap/index'], resolve), + meta: { + title: '发布地图管理' + } + }, + { + path: 'product', + name: '产品状态管理', + component: resolve => require(['@/views/publish/productStatus/index'], resolve), + meta: { + title: '产品状态管理' + } + }, + { + path: 'lesson', + name: '发布课程管理', + component: resolve => require(['@/views/publish/publishLesson/index'], resolve), + meta: { + title: '发布课程管理' + } + }, + // { + // path: 'script', + // name: '仿真脚本管理', + // component: resolve => require(['@/views/publish/simulationScript/index'], resolve), + // meta: { + // title: '仿真脚本管理', + // } + // }, + { + path: 'runPlan/template', + component: resolve => require(['@/views/publish/runPlanTemplate/index'], resolve), + meta: { + title: '运行图模板管理' + } + }, + { + path: 'runPlan/common', + component: resolve => require(['@/views/publish/runPlanCommon/index'], resolve), + meta: { + title: '运行图通用管理' + } + }, + { + path: 'runPlan/everyDay', + component: resolve => require(['@/views/publish/runPlanEveryDay/index'], resolve), + meta: { + title: '运行图每日管理' + } + }, + { + path: 'examRule/manage', + name: '试题管理', + component: resolve => require(['@/views/publish/examRule/index'], resolve), + meta: { + title: '试题管理' + } + }, + { + path: 'map/draft/:mode/:mapId', + component: resolve => require(['@/views/publish/publishMap/draft'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'examRule/draft/:mode/:ruleId/:lessonId', + hidden: true, + component: resolve => require(['@/views/publish/examRule/draft/index'], resolve), + meta: { + } + }, + { + path: 'runPlan/common/:mode', + component: resolve => require(['@/views/publish/runPlanCommon/draft'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'runPlan/view/:mode', + component: resolve => require(['@/views/map/runplan/chart'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/orderauthor', + component: Layout, + name: '订单权限管理', + meta: { + title: '订单权限管理', + roles: [admin] + }, + children: [ + { + path: 'commodity/manage', + name: '商品管理', + component: resolve => require(['@/views/orderauthor/commodity/index'], resolve), + meta: { + title: '商品管理' + } + }, + { + path: 'order/manage', + name: '订单管理', + component: resolve => require(['@/views/orderauthor/order/list'], resolve), + meta: { + title: '订单管理' + } + }, + { + path: 'author/manage', + name: '权限管理', + component: resolve => require(['@/views/orderauthor/author/index'], resolve), + meta: { + title: '权限管理' + } + }, + { + path: 'transfer/manage', + name: '权限分发管理', + component: resolve => require(['@/views/orderauthor/permission/index'], resolve), + meta: { + title: '权限分发管理' + } + }, + { + path: 'commodity/draft/:mode/:commodityId', + name: '添加商品', + hidden: true, + component: resolve => require(['@/views/orderauthor/commodity/draft'], resolve), + meta: { + title: '添加商品' + } + }, + { + path: 'order/draft/:mode/:orderId', + name: '添加订单', + hidden: true, + component: resolve => require(['@/views/orderauthor/order/draft'], resolve), + meta: { + title: '添加订单' + } + }, + { + path: 'author/draft/:mode/:userId', + name: '添加课程权限', + hidden: true, + component: resolve => require(['@/views/orderauthor/author/draft'], resolve), + meta: { + title: '添加课程权限' + } + }, + { + path: 'transfer/detail/:permissionId', + component: resolve => require(['@/views/orderauthor/permission/detail'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'transfer/package', + component: resolve => require(['@/views/orderauthor/permission/draft/ruleForm'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/system', + component: Layout, + meta: { + title: '系统管理', + roles: [admin] + }, + children: [ + { + path: 'dictionary', + name: 'Dictionary', + component: resolve => require(['@/views/management/dictionary/index'], resolve), + meta: { + title: '数据字典' + } + }, + { + path: 'dictionary/detail', + name: '数据字典明细', + hidden: true, + component: resolve => require(['@/views/management/dictionaryDetail/index'], resolve), + meta: { + title: '数据字典明细' + } + }, + { + path: 'userManage', + name: '用户管理', + component: resolve => require(['@/views/management/userControl/index'], resolve), + meta: { + title: '用户管理' + } + }, + { + path: 'userTrainingManage', + name: '用户实训管理', + component: resolve => require(['@/views/management/userTraining/index'], resolve), + meta: { + title: '用户实训管理' + } + }, + { + path: 'userExamManage', + name: '用户考试管理', + component: resolve => require(['@/views/management/userExam/index'], resolve), + meta: { + title: '用户考试管理' + } + }, + { + path: 'userSimulationManage', + name: '用户仿真管理', + component: resolve => require(['@/views/management/userSimulation/index'], resolve), + meta: { + title: '用户仿真管理' + } + }, + { + path: 'existingSimulation', + name: '存在仿真管理', + component: resolve => require(['@/views/management/existingSimulation/index'], resolve), + meta: { + title: '存在仿真管理' + } + } + ] + } ]; const createRouter = () => new Router({ diff --git a/src/scripts/ConstConfig.js b/src/scripts/ConstConfig.js index e283692e9..7bc549125 100644 --- a/src/scripts/ConstConfig.js +++ b/src/scripts/ConstConfig.js @@ -8,6 +8,95 @@ export default { Whether: [ { label: '否', value: false }, { label: '是', value: true } + ], + + LinkTypeList: [ + { label: '起始Link', value: '0' }, + { label: '正向Link', value: '1' }, + { label: '侧向Link', value: '2' } + ], + + LinkDriectTypeList: [ + { label: '左侧', value: 'L' }, + { label: '右侧', value: 'R' } + ], + + DirectionCodeList: [ + { value: '2', label: '上行' }, + { value: '1', label: '下行' } + ], + + SignalLeftOrRightList: [ + { label: '左侧', value: '0' }, + { label: '右侧', value: '1' } + ], + + roleList: [ + { label: '实训用户', value: '01' }, + { label: '地图生产者', value: '02' }, + { label: '课程生成者', value: '03' }, + { label: '系统管理员', value: '04' }, + { label: '超级管理员', value: '05' }, + { label: '销售用户', value: '06' } + ], + + examResultList: [ + { label: '未计算', value: '01' }, + { label: '通过', value: '02' }, + { label: '未通过', value: '03' }, + { label: '已放弃', value: '04' } + ], + + PermissionUseList: [ + { label: '公用', value: true }, + { label: '专用', value: false } + ], + + RegionTypeList: [ + { label: '零点西上行', value: '01' }, + { label: '零点西下行', value: '02' }, + { label: '零西渡线/', value: '03' }, + { label: '零西渡线\\', value: '04' }, + { label: 'PGY一联段线', value: '05' }, + { label: '零点东上行', value: '06' }, + { label: '零点东下行', value: '07' }, + { label: '零东渡线/', value: '08' }, + { label: '零东渡线\\', value: '09' }, + { label: '库线1', value: '10' }, + { label: '库线2', value: '11' }, + { label: '库线渡线/', value: '12' }, + { label: '库线渡线\\', value: '13' }, + { label: '联络线1', value: '14' }, + { label: '联络线2', value: '15' }, + { label: 'SHZ一联段线', value: '16' }, + { label: 'SHZ二联段线', value: '17' }, + { label: 'SHD三联段线', value: '18' }, + { label: 'SHD四联段线', value: '19' } + ], + roleType:[ + {label:'管理员',value:'Admin'}, + {label:'教员',value:'Instructor'}, + {label:'行调',value:'Dispatcher'}, + {label:'车站',value:'Attendant'}, + {label:'观众',value:'Audience'}, + {label:'司机',value:'Driver'}, + ], + + SimulationType: [ + { label: '实训', value: 'Training'}, + { label: '仿真(行调/现地/司机)', value: 'Simulation'}, + { label: '综合演练', value: 'Joint'}, + { label: '大屏', value: 'BigScreen'}, + { label: '琏计划', value: 'RunPlan'}, + { label: '任务录制', value: 'ScriptRecord'}, + ], + + skinCode: [ + { label: '福州一号线', value: '02'}, + { label: '北京一号线', value: '03'}, + { label: '成都三号线', value: '04'}, + { label: '北京八通线', value: '05'}, ] + } -} +}; diff --git a/src/scripts/DeviceTypeDic.js b/src/scripts/DeviceTypeDic.js new file mode 100644 index 000000000..ce014bfd8 --- /dev/null +++ b/src/scripts/DeviceTypeDic.js @@ -0,0 +1,15 @@ +export default { + ConstSelect: { + deviceType: [ + {label: 'Link', value: 'Link'}, + {label: '进路', value: 'Route'}, + {label: '区段', value: 'Section'}, + {label: '信号机', value: 'Signal'}, + {label: '站台', value: 'StationStand'}, + {label: '集中站', value: 'Station'}, + {label: '控制模式', value: 'StationControl'}, + {label: '道岔', value: 'Switch'}, + {label: '列车', value: 'Train'}, + ] + } +}; \ No newline at end of file diff --git a/src/scripts/DictionaryData.js b/src/scripts/DictionaryData.js index 93ed03e50..d44de2c7c 100644 --- a/src/scripts/DictionaryData.js +++ b/src/scripts/DictionaryData.js @@ -222,7 +222,7 @@ function loadDictionary() { return queryData('train_position_type', this, '_TrainPositionType'); }, - lityType: function () { + cityType: function () { return queryData('city_type', this, '_CityType'); }, diff --git a/src/scripts/FaultDic.js b/src/scripts/FaultDic.js new file mode 100644 index 000000000..e72fa534a --- /dev/null +++ b/src/scripts/FaultDic.js @@ -0,0 +1,28 @@ +export const FaultStatusEnum = { + Section: { + '01': '占用', + }, + Switch: { + + }, + Signal: { + + }, + Station: { + + }, + StationControl: { + + }, + StationDelayUnlock: { + + }, + StationStand: { + + }, + Train: { + + }, + TrainWindow: { + } +}; \ No newline at end of file diff --git a/src/scripts/OperationConfig.js b/src/scripts/OperationConfig.js new file mode 100644 index 000000000..7376a3ec4 --- /dev/null +++ b/src/scripts/OperationConfig.js @@ -0,0 +1,1281 @@ +// 操作规则定义 +// {id: "1", trainingType: "01", name: "车站名称"} +// {id: "2", trainingType: "01", name: "车站控制模式编号"} +// {id: "3", trainingType: "02", name: "进路名称"} +// {id: "4", trainingType: "02", name: "进路编号"} +// {id: "5", trainingType: "02", name: "信号机名称"} +// {id: "6", trainingType: "02", name: "信号机编号"} +// {id: "7", trainingType: "03", name: "道岔名称"} +// {id: "8", trainingType: "04", name: "物理区段名称"} +// {id: "9", trainingType: "04", name: "逻辑区段名称"} +// {id: "10", trainingType: "05", name: "车站名称"} +// {id: "11", trainingType: "05", name: "站台行驶方向编号"} +// {id: "12", trainingType: "05", name: "站台行驶方向"} +// {id: "13", trainingType: "05", name: "站台行驶方向编号(反)"} +// {id: "14", trainingType: "05", name: "站台行驶方向(反)"} +// {id: "15", trainingType: "03", name: "道岔位置"} +// {id: "16", trainingType: "03", name: "道岔位置(反)"} +export const OperationList = { + '01': { + list: [], + }, + '02': { + list: [ + { + maxDuration: 20, + minDuration: 15, + operateType: '0103', + skinStyle: '02', + trainingName: '转为中控({1})', + trainingRemark: '控制权限转换,站控转中控', + trainingType: '01', + productTypes: ['02'], + stepVOList: [ + { deviceType: 'bar', orderNum: 1, operateCode: '0024', tip: '鼠标左键点击顶部菜单栏【控制模式转换】' }, + { deviceType: 'bar', orderNum: 2, operateCode: '2041', tip: '鼠标左键点击【转为中控】' }, + { deviceType: '05', orderNum: 3, operateCode: '2042', tip: '鼠标左键选择所需要转换的控制区域【{1}】', val: '{2}' }, + { deviceType: '05', orderNum: 4, operateCode: '204', tip: '鼠标左键点击【请求中控】', val: '{2}' }, + { deviceType: '05', orderNum: 5, operateCode: '2043', tip: '鼠标左键点击【确认】按钮', val: '{2}' }, + { deviceType: '05', orderNum: 6, operateCode: '0013', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: 'bar', orderNum: 7, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0101', + skinStyle: '02', + trainingName: '转为站控({1})', + trainingRemark: '控制权限转换,中控转站控', + trainingType: '01', + productTypes: ['01'], + stepVOList: [ + { deviceType: 'bar', orderNum: 1, operateCode: '0024', tip: '鼠标左键点击顶部菜单栏【控制模式转换】' }, + { deviceType: 'bar', orderNum: 2, operateCode: '2021', tip: '鼠标左键点击【转为站控】' }, + { deviceType: '05', orderNum: 3, operateCode: '2022', tip: '鼠标左键选择所需要转换的控制区域【{1}】', val: '{2}' }, + { deviceType: '05', orderNum: 4, operateCode: '202', tip: '鼠标左键点击【请求站控】', val: '{2}' }, + { deviceType: '05', orderNum: 5, operateCode: '2023', tip: '鼠标左键点击【确认】按钮', val: '{2}' }, + { deviceType: '05', orderNum: 6, operateCode: '0013', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: 'bar', orderNum: 7, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0102', + skinStyle: '02', + trainingName: '强制站控({1})', + trainingRemark: '控制权限转换,强制站控', + trainingType: '01', + productTypes: ['01'], + stepVOList: [ + { deviceType: 'bar', orderNum: 1, operateCode: '0024', tip: '鼠标左键点击顶部菜单栏【控制模式转换】' }, + { deviceType: 'bar', orderNum: 2, operateCode: '2034', tip: '鼠标左键点击【强制站控】' }, + { deviceType: 'bar', orderNum: 3, operateCode: '2035', tip: '鼠标左键输入默认密码【123456】后,点击【确定】按钮' }, + { deviceType: '05', orderNum: 4, operateCode: '2032', tip: '鼠标左键选择所需要转换的控制区域【{1}】', val: '{2}' }, + { deviceType: '05', orderNum: 5, operateCode: '203', tip: '鼠标左键点击【强制站控】', val: '{2}' }, + { deviceType: '05', orderNum: 6, operateCode: '2033', tip: '鼠标左键点击【确认】按钮', val: '{2}' }, + { deviceType: '05', orderNum: 7, operateCode: '0013', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: 'bar', orderNum: 8, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0501', + skinStyle: '02', + trainingName: '站台扣车({10}-{12}站台)', + trainingRemark: '设置扣车功能', + trainingType: '05', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '504', tip: '鼠标右键菜单选择【扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '504', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0502', + skinStyle: '02', + trainingName: '站台取消扣车({10}-{12}站台)', + trainingRemark: '设置取消扣车功能', + trainingType: '05', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '505', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0503', + skinStyle: '02', + trainingName: '强制取消扣车({10}-{12}站台)', + trainingRemark: '强制取消扣车功能', + trainingType: '05', + productTypes: ['01'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '506', tip: '鼠标右键菜单选择【强制取消扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '506', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0504', + skinStyle: '02', + trainingName: '全线取消扣车({10}-{12}站台)', + trainingRemark: '全线取消扣车功能(默认上行全线/下行全线,不做选择)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '508', tip: '鼠标右键菜单选择【全线取消扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '508', tip: '鼠标左键点击【确定】按钮', val: '{11}' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0504', + skinStyle: '02', + trainingName: '全线取消扣车({10}-{12}站台)', + trainingRemark: '全线取消扣车功能(选择上/下行全线)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '508', tip: '鼠标右键菜单选择【全线取消扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '5081', tip: '鼠标右键菜单选择【{14}全线】', val: '{13}' }, + { deviceType: '06', orderNum: 3, operateCode: '508', tip: '鼠标左键点击【确定】按钮', val: '{13}' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0505', + skinStyle: '02', + trainingName: '站台跳停({10}-{12}站台)', + trainingRemark: '设置跳停功能', + trainingType: '05', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '502', tip: '鼠标右键菜单选择【跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '502', tip: '鼠标左键点击【确定】按钮', val: '{11}' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0506', + skinStyle: '02', + trainingName: '取消跳停({10}-{12}站台)', + trainingRemark: '设置取消跳停功能', + trainingType: '05', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '503', tip: '鼠标右键菜单选择【取消跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '503', tip: '鼠标左键点击【确定】按钮', val: '{11}' }, + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: '0507', + skinStyle: '02', + trainingName: '查询站台状态({10}-{12}站台)', + trainingRemark: '查询站台状态功能', + trainingType: '05', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '507', tip: '鼠标右键菜单选择【查询站台状态】' }, + { deviceType: '06', orderNum: 2, operateCode: '0012', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0508', + skinStyle: '02', + trainingName: '设置停站时间({10}-{12}站台)', + trainingRemark: '设置停站时间(自动, 一直有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【自动】', val: '01' }, + { deviceType: '06', orderNum: 3, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '01::20::true' }, + { deviceType: '06', orderNum: 4, operateCode: '5091', tip: '鼠标左键点击【确认】按钮', val: '01::20::true' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0508', + skinStyle: '02', + trainingName: '设置停站时间({10}-{12}站台)', + trainingRemark: '设置停站时间(人工, 20秒, 一直有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击,调整为【20】', val: '20' }, + { deviceType: '06', orderNum: 4, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '02::20::true' }, + { deviceType: '06', orderNum: 5, operateCode: '5091', tip: '鼠标左键点击【确认】按钮', val: '02::20::true' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0508', + skinStyle: '02', + trainingName: '设置停站时间({10}-{12}站台)', + trainingRemark: '设置停站时间(人工, 20秒, 一次有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击,调整为【20】', val: '20' }, + { deviceType: '06', orderNum: 4, operateCode: '5093', tip: '鼠标左键点击,选择【一次有效】', val: 'false' }, + { deviceType: '06', orderNum: 5, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '02::20::false' }, + { deviceType: '06', orderNum: 6, operateCode: '5091', tip: '鼠标左键点击【确认】按钮', val: '02::20::false' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0509', + skinStyle: '02', + trainingName: '设置运行等级({10}-{12}站台)', + trainingRemark: '设置运行等级(设置区间运行时间为60,一直有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置运行等级】' }, + { deviceType: '06', orderNum: 2, operateCode: '5101', tip: '鼠标左键点击,选择【60】', val: '60' }, + { deviceType: '06', orderNum: 3, operateCode: '510', tip: '鼠标左键点击【确认】按钮', val: '60::true' }, + { deviceType: '06', orderNum: 4, operateCode: '5102', tip: '鼠标左键点击【确认】按钮', val: '60::true' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0509', + skinStyle: '02', + trainingName: '设置运行等级({10}-{12}站台)', + trainingRemark: '设置运行等级(设置区间运行时间为60,一次有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置运行等级】' }, + { deviceType: '06', orderNum: 2, operateCode: '5101', tip: '鼠标左键点击,选择【60】', val: '60' }, + { deviceType: '06', orderNum: 3, operateCode: '5103', tip: '鼠标左键点击,取消选择【一直有效】', val: 'false' }, + { deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮', val: '60::false' }, + { deviceType: '06', orderNum: 5, operateCode: '5102', tip: '鼠标左键点击【确认】按钮', val: '60::false' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0510', + skinStyle: '02', + trainingName: '设置提前发车({10}-{12}站台)', + trainingRemark: '设置提前发车功能', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '501', tip: '鼠标右键菜单选择【设置提前发车】' }, + { deviceType: '06', orderNum: 2, operateCode: '501', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0511', + skinStyle: '02', + trainingName: '人工折返策略设置({10}-{12}站台)', + trainingRemark: '人工折返策略设置功能', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '511', tip: '鼠标右键菜单选择【人工折返策略设置】' }, + { deviceType: '06', orderNum: 2, operateCode: '5111', tip: '鼠标左键点击,选择【无折返】', val: '01' }, + { deviceType: '06', orderNum: 3, operateCode: '511', tip: '鼠标左键点击【确定】按钮', val: '01' }, + ] + }, + + { + maxDuration: 15, + minDuration: 8, + operateType: '0401', + skinStyle: '02', + trainingName: '区段故障解锁({8}{9})', + trainingRemark: '故障解锁功能', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '402', tip: '鼠标右键菜单选择【区段故障解锁】' }, + { deviceType: '03', orderNum: 2, operateCode: '4026', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '03', orderNum: 3, operateCode: '4024', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '03', orderNum: 4, operateCode: '4025', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '03', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0402', + skinStyle: '02', + trainingName: '区段切除({8}{9})', + trainingRemark: '区段切除', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '405', tip: '鼠标右键菜单选择【区段切除】' }, + { deviceType: '03', orderNum: 2, operateCode: '405', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0403', + skinStyle: '02', + trainingName: '区段激活({8}{9})', + trainingRemark: '区段激活功能', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '406', tip: '鼠标右键菜单选择【区段激活】' }, + { deviceType: '03', orderNum: 2, operateCode: '406', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0404', + skinStyle: '02', + trainingName: '计轴预复位({8}{9})', + trainingRemark: '计轴预复位功能', + trainingType: '04', + productTypes: ['01'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '409', tip: '鼠标右键菜单选择【区段计轴预复位】' }, + { deviceType: '03', orderNum: 2, operateCode: '4091', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '03', orderNum: 3, operateCode: '4093', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '03', orderNum: 4, operateCode: '4094', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '03', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0405', + skinStyle: '02', + trainingName: '区段封锁({8}{9})', + trainingRemark: '区段封锁功能', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '403', tip: '鼠标右键菜单选择【区段封锁】' }, + { deviceType: '03', orderNum: 2, operateCode: '403', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0406', + skinStyle: '02', + trainingName: '区段解封({8}{9})', + trainingRemark: '区段解封功能', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '404', tip: '鼠标右键菜单选择【区段解封】' }, + { deviceType: '03', orderNum: 2, operateCode: '4041', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '03', orderNum: 3, operateCode: '4043', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '03', orderNum: 4, operateCode: '4044', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '03', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0407', + skinStyle: '02', + trainingName: '区段设置限速({8}{9})', + trainingRemark: '区段设置限速功能(限速值:5)', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '407', tip: '鼠标右键菜单选择【区段设置限速】' }, + { deviceType: '03', orderNum: 2, operateCode: '4076', tip: '鼠标左键选择【限速值5】', val: '5' }, + { deviceType: '03', orderNum: 3, operateCode: '4071', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '03', orderNum: 4, operateCode: '4072', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '03', orderNum: 5, operateCode: '4073', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '03', orderNum: 6, operateCode: '4074', tip: '鼠标左键点击【确认2】按钮', val: '5' }, + { deviceType: '03', orderNum: 7, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0408', + skinStyle: '02', + trainingName: '区段取消限速({8}{9})', + trainingRemark: '区段取消限速功能', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '408', tip: '鼠标右键菜单选择【区段取消限速】' }, + { deviceType: '03', orderNum: 2, operateCode: '4081', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '03', orderNum: 3, operateCode: '4082', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '03', orderNum: 4, operateCode: '4083', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '03', orderNum: 5, operateCode: '4084', tip: '鼠标左键点击【确认2】按钮', val: '5' }, + { deviceType: '03', orderNum: 6, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + + { + maxDuration: 15, + minDuration: 8, + operateType: '0301', + skinStyle: '02', + trainingName: '道岔单锁({7})', + trainingRemark: '道岔单锁功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '103', tip: '鼠标右键菜单选择【道岔单锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '103', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0302', + skinStyle: '02', + trainingName: '道岔单解({7})', + trainingRemark: '道岔单解功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '104', tip: '鼠标右键菜单选择【道岔单解】' }, + { deviceType: '02', orderNum: 2, operateCode: '1041', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '1043', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '02', orderNum: 4, operateCode: '1044', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '02', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0303', + skinStyle: '02', + trainingName: '道岔区段封闭({7})', + trainingRemark: '道岔区段封闭功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '105', tip: '鼠标右键菜单选择【道岔区段封闭】' }, + { deviceType: '02', orderNum: 2, operateCode: '105', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0304', + skinStyle: '02', + trainingName: '道岔区段解封({7})', + trainingRemark: '道岔区段解封功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '106', tip: '鼠标右键菜单选择【道岔区段解封】' }, + { deviceType: '02', orderNum: 2, operateCode: '1061', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '1063', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '02', orderNum: 4, operateCode: '1064', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '02', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0305', + skinStyle: '02', + trainingName: '道岔转动({7})', + trainingRemark: '道岔转动功能({15}转{16})', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '107', tip: '鼠标右键菜单选择【道岔转动】' }, + { deviceType: '02', orderNum: 2, operateCode: '107', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 20, + minDuration: 10, + operateType: '0306', + skinStyle: '02', + trainingName: '道岔区段故障解锁({7})', + trainingRemark: '道岔区段故障解锁功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '109', tip: '鼠标右键菜单选择【道岔区段故障解锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '1091', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '1093', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '02', orderNum: 4, operateCode: '1094', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '02', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0307', + skinStyle: '02', + trainingName: '道岔区段计轴预复位({7})', + trainingRemark: '道岔区段计轴预复位功能', + trainingType: '03', + productTypes: ['01'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '110', tip: '鼠标右键菜单选择【道岔区段计轴预复位】' }, + { deviceType: '02', orderNum: 2, operateCode: '1101', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '1103', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '02', orderNum: 4, operateCode: '1104', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '02', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0308', + skinStyle: '02', + trainingName: '区段切除({7})', + trainingRemark: '区段切除', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '111', tip: '鼠标右键菜单选择【区段切除】' }, + { deviceType: '02', orderNum: 2, operateCode: '111', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0309', + skinStyle: '02', + trainingName: '区段激活({7})', + trainingRemark: '区段激活功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '112', tip: '鼠标右键菜单选择【区段激活】' }, + { deviceType: '02', orderNum: 2, operateCode: '112', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0310', + skinStyle: '02', + trainingName: '道岔区段设置限速({7})', + trainingRemark: '道岔区段设置限速功能(限速值:5)', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '113', tip: '鼠标右键菜单选择【道岔区段设置限速】' }, + { deviceType: '02', orderNum: 2, operateCode: '1136', tip: '鼠标左键选择【限速值5】', val: '5' }, + { deviceType: '02', orderNum: 3, operateCode: '1131', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '02', orderNum: 4, operateCode: '1132', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '02', orderNum: 5, operateCode: '1133', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '02', orderNum: 6, operateCode: '1134', tip: '鼠标左键点击【确认2】按钮', val: '5' }, + { deviceType: '02', orderNum: 7, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0311', + skinStyle: '02', + trainingName: '道岔区段取消限速({7})', + trainingRemark: '道岔区段取消限速功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '114', tip: '鼠标右键菜单选择【道岔区段取消限速】' }, + { deviceType: '02', orderNum: 2, operateCode: '1141', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '1142', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '02', orderNum: 4, operateCode: '1143', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '02', orderNum: 5, operateCode: '1144', tip: '鼠标左键点击【确认2】按钮', val: '5' }, + { deviceType: '02', orderNum: 6, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + + { + maxDuration: 15, + minDuration: 8, + operateType: '0201', + skinStyle: '02', + trainingName: '进路选排({3})', + trainingRemark: '选择排列进路', + trainingType: '02', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '301', tip: '鼠标右键菜单选择【进路选排】' }, + { deviceType: '04', orderNum: 2, operateCode: '3011', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' }, + { deviceType: '04', orderNum: 3, operateCode: '301', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '04', orderNum: 4, operateCode: '3012', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0202', + skinStyle: '02', + trainingName: '进路取消({3})', + trainingRemark: '进路取消', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '303', tip: '鼠标右键菜单选择【进路取消】' }, + { deviceType: '04', orderNum: 2, operateCode: '303', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '3031', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0202', + skinStyle: '02', + trainingName: '进路取消({3})', + trainingRemark: '进路取消', + trainingType: '02', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '303', tip: '鼠标右键菜单选择【进路取消】' }, + { deviceType: '04', orderNum: 2, operateCode: '303', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0203', + skinStyle: '02', + trainingName: '信号封闭({5})', + trainingRemark: '信号封闭', + trainingType: '02', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '306', tip: '鼠标右键菜单选择【信号封闭】' }, + { deviceType: '04', orderNum: 2, operateCode: '306', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0204', + skinStyle: '02', + trainingName: '信号解封({5})', + trainingRemark: '信号解封', + trainingType: '02', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '307', tip: '鼠标右键菜单选择【信号解封】' }, + { deviceType: '04', orderNum: 2, operateCode: '3071', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '3072', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '04', orderNum: 4, operateCode: '3073', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '04', orderNum: 5, operateCode: '3074', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '04', orderNum: 6, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0205', + skinStyle: '02', + trainingName: '信号关灯({3})', + trainingRemark: '信号关灯', + trainingType: '02', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '313', tip: '鼠标右键菜单选择【信号关灯】' }, + { deviceType: '04', orderNum: 2, operateCode: '313', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '3131', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0206', + skinStyle: '02', + trainingName: '信号重开({3})', + trainingRemark: '信号重开', + trainingType: '02', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '304', tip: '鼠标右键菜单选择【信号重开】' }, + { deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '3041', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0207', + skinStyle: '02', + trainingName: '引导进路办理({3})', + trainingRemark: '进路办理信号引导', + trainingType: '02', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '308', tip: '鼠标右键菜单选择【引导进路办理】' }, + { deviceType: '04', orderNum: 2, operateCode: '3081', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '3083', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '04', orderNum: 4, operateCode: '3084', tip: '鼠标左键点击【确认2】按钮' }, + { deviceType: '04', orderNum: 5, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0208', + skinStyle: '02', + trainingName: '自排开({5})', + trainingRemark: '自排开', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '315', tip: '鼠标右键菜单选择【自排开】' }, + { deviceType: '04', orderNum: 2, operateCode: '3151', tip: '鼠标左键选择控制状态为"人工"的进路', val: '{6}' }, + { deviceType: '04', orderNum: 3, operateCode: '315', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0209', + skinStyle: '02', + trainingName: '自排关({5})', + trainingRemark: '自排关', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '314', tip: '鼠标右键菜单选择【自排关】' }, + { deviceType: '04', orderNum: 2, operateCode: '3141', tip: '鼠标左键选择第一条进路', val: '{6}' }, + { deviceType: '04', orderNum: 3, operateCode: '314', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0210', + skinStyle: '02', + trainingName: '查询进路控制状态({5})', + trainingRemark: '查询进路控制状态', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '316', tip: '鼠标右键菜单选择【查询进路控制模式】' }, + { deviceType: '04', orderNum: 2, operateCode: '316', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0211', + skinStyle: '02', + trainingName: '设置联锁自动进路({5})', + trainingRemark: '设置联锁自动进路', + trainingType: '02', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '309', tip: '鼠标右键菜单选择【设置联锁自动进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '309', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0212', + skinStyle: '02', + trainingName: '取消联锁自动进路({5})', + trainingRemark: '取消联锁自动进路', + trainingType: '02', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '310', tip: '鼠标右键菜单选择【取消联锁自动进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '310', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0213', + skinStyle: '02', + trainingName: '设置联锁自动触发({5})', + trainingRemark: '设置联锁自动触发', + trainingType: '02', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '311', tip: '鼠标右键菜单选择【设置联锁自动触发】' }, + { deviceType: '04', orderNum: 2, operateCode: '311', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0214', + skinStyle: '02', + trainingName: '取消联锁自动触发({5})', + trainingRemark: '取消联锁自动触发', + trainingType: '02', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '312', tip: '鼠标右键菜单选择【取消联锁自动触发】' }, + { deviceType: '04', orderNum: 2, operateCode: '312', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + ] + }, + '03': { + list: [ + { + maxDuration: 8, + minDuration: 5, + operateType: '0501', + skinStyle: '03', + trainingName: '设置扣车({10}-{12} 站台)', + trainingRemark: '设置扣车功能', + trainingType: '05', + productTypes: ['01,02'], // 产品类型 01 现地 02 行调 + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '504', tip: '鼠标右键菜单选择【设置扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '504', tip: '鼠标左键点击【确定】按钮', }, + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: '0502', + skinStyle: '03', + trainingName: '取消扣车({10}-{12} 站台)', + trainingRemark: '取消扣车功能', + trainingType: '05', + productTypes: ['01,02'], // 产品类型 01 现地 02 行调 + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '505', tip: '鼠标左键点击【确定】按钮', }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0505', + skinStyle: '03', + trainingName: '设置跳停({10}-{12} 站台)', + trainingRemark: '设置跳停功能', + trainingType: '05', + productTypes: ['01,02'], // 产品类型 01 现地 02 行调 + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '502', tip: '鼠标右键菜单选择【设置跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '502', tip: '鼠标左键点击【确定】按钮', val: '{11}' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0505', + skinStyle: '03', + trainingName: '设置跳停({10}-{12} 站台)', + trainingRemark: '设置指定001号列车跳停功能', + trainingType: '05', + productTypes: ['01,02'], // 产品类型 01 现地 02 行调 + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '502', tip: '鼠标右键菜单选择【设置跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '5024', tip: '鼠标左键点击' }, + { deviceType: '06', orderNum: 2, operateCode: '5022', tip: '请选择001号车', val: '001' }, + { deviceType: '06', orderNum: 2, operateCode: '502', tip: '鼠标左键点击【确定】按钮', val: '{11}::001' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0506', + skinStyle: '03', + trainingName: '取消跳停({10}-{12} 站台)', + trainingRemark: '取消跳停功能', + trainingType: '05', + productTypes: ['01,02'], // 产品类型 01 现地 02 行调 + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '503', tip: '鼠标右键菜单选择【取消跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '503', tip: '鼠标左键点击【确定】按钮', val: '{11}' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0506', + skinStyle: '03', + trainingName: '取消跳停({10}-{12} 站台)', + trainingRemark: '取消指定001号列车跳停功能', + trainingType: '05', + productTypes: ['01,02'], // 产品类型 01 现地 02 行调 + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '503', tip: '鼠标右键菜单选择【取消跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '5034', tip: '鼠标左键点击' }, + { deviceType: '06', orderNum: 2, operateCode: '5032', tip: '请选择001号车', val: '001' }, + { deviceType: '06', orderNum: 2, operateCode: '503', tip: '鼠标左键点击【确定】按钮', val: '{11}::001' }, + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: '0507', + skinStyle: '03', + trainingName: '查询站台状态({10}-{12} 站台)', + trainingRemark: '查询站台状态功能', + trainingType: '05', + productTypes: ['01,02'], // 产品类型 01 现地 02 行调 + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '507', tip: '鼠标右键菜单选择【站台信息】' }, + { deviceType: '06', orderNum: 2, operateCode: '0012', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0508', + skinStyle: '03', + trainingName: '停站时间控制({10}-{12} 站台)', + trainingRemark: '停站时间控制(自动, 一直有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【停站时间控制】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【自动】', val: '01' }, + { deviceType: '06', orderNum: 3, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '01::20::true' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0508', + skinStyle: '03', + trainingName: '停站时间控制({10}-{12} 站台)', + trainingRemark: '停站时间控制(人工, 20秒, 一直有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【停站时间控制】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击,调整为【20】', val: '20' }, + { deviceType: '06', orderNum: 4, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '02::20::true' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0508', + skinStyle: '03', + trainingName: '停站时间控制({10}-{12} 站台)', + trainingRemark: '停站时间控制(人工, 20秒, 一次有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【停站时间控制】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击,调整为【20】', val: '20' }, + { deviceType: '06', orderNum: 4, operateCode: '5093', tip: '鼠标左键点击,选择【一次有效】', val: 'false' }, + { deviceType: '06', orderNum: 5, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '02::20::false' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0509', + skinStyle: '03', + trainingName: '运行时间控制({10}-{12} 站台)', + trainingRemark: '运行时间控制(设置区间 运行等级1,运行时间为115,一直有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【运行时间控制】' }, + { deviceType: '06', orderNum: 2, operateCode: '5104', tip: '鼠标左键点击,选择【1】', val: '1' }, + { deviceType: '06', orderNum: 3, operateCode: '5101', tip: '鼠标左键点击,选择【115】', val: '115' }, + { deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮', val: '115::true' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0509', + skinStyle: '03', + trainingName: '运行时间控制({10}-{12} 站台)', + trainingRemark: '运行时间控制(设置区间 运行等级1,运行时间为115,一次有效)', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【运行时间控制】' }, + { deviceType: '06', orderNum: 2, operateCode: '5104', tip: '鼠标左键点击,选择【1】', val: '1' }, + { deviceType: '06', orderNum: 3, operateCode: '5101', tip: '鼠标左键点击,选择【115】', val: '115' }, + { deviceType: '06', orderNum: 4, operateCode: '5103', tip: '鼠标左键点击,取消选择【一直有效】', val: 'false' }, + { deviceType: '06', orderNum: 5, operateCode: '510', tip: '鼠标左键点击【确认】按钮', val: '115::false' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0510', + skinStyle: '03', + trainingName: '提前发车({10}-{12} 站台)', + trainingRemark: '提前发车功能', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '501', tip: '鼠标右键菜单选择【提前发车】' }, + { deviceType: '06', orderNum: 2, operateCode: '501', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0511', + skinStyle: '03', + trainingName: '变通策略管理({10}-{12} 站台)', + trainingRemark: '变通策略管理功能', + trainingType: '05', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '511', tip: '鼠标右键菜单选择【变通策略管理】' }, + { deviceType: '06', orderNum: 2, operateCode: '5111', tip: '鼠标左键点击,选择【无折返】', val: '01' }, + { deviceType: '06', orderNum: 3, operateCode: '511', tip: '鼠标左键点击【确定】按钮', val: '01' }, + ] + }, + + { + maxDuration: 15, + minDuration: 8, + operateType: '0402', + skinStyle: '03', + trainingName: '轨道切除({8}{9} 区段)', + trainingRemark: '轨道切除功能', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '405', tip: '鼠标右键菜单选择【轨道切除】' }, + { deviceType: '03', orderNum: 2, operateCode: '405', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0403', + skinStyle: '03', + trainingName: '轨道激活({8}{9} 区段)', + trainingRemark: '轨道激活功能', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '406', tip: '鼠标右键菜单选择【轨道激活】' }, + { deviceType: '03', orderNum: 2, operateCode: '406', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0407', + skinStyle: '03', + trainingName: '设置临时限速({8}{9} 区段)', + trainingRemark: '设置临时限速功能(限速值:15)', + trainingType: '04', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '407', tip: '鼠标右键菜单选择【设置临时限速】' }, + { deviceType: '03', orderNum: 2, operateCode: '4076', tip: '鼠标左键选择【限速值15】', val: '15' }, + { deviceType: '03', orderNum: 3, operateCode: '4071', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '03', orderNum: 4, operateCode: '4072', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '03', orderNum: 5, operateCode: '4073', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '03', orderNum: 6, operateCode: '4074', tip: '鼠标左键点击【确认2】按钮', val: '15' }, + { deviceType: '03', orderNum: 7, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + + { + maxDuration: 15, + minDuration: 8, + operateType: '0308', + skinStyle: '03', + trainingName: '轨道切除({7} 道岔)', + trainingRemark: '轨道切除功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '111', tip: '鼠标右键菜单选择【轨道切除】' }, + { deviceType: '02', orderNum: 2, operateCode: '111', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0309', + skinStyle: '03', + trainingName: '轨道激活({7} 道岔)', + trainingRemark: '轨道激活功能', + trainingType: '03', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '112', tip: '鼠标右键菜单选择【轨道激活】' }, + { deviceType: '02', orderNum: 2, operateCode: '112', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0310', + skinStyle: '03', + trainingName: '设置临时限速({7} 道岔)', + trainingRemark: '设置临时限速功能(限速值 35 零点西上行公里标0 - 零点西上行公里标3000)', + trainingType: '03', + productTypes: ['01,02'], + // stepVOList: [ + // { deviceType: '02', orderNum: 1, operateCode: '113', tip: '鼠标右键菜单选择【设置临时限速】' }, + // { deviceType: '02', orderNum: 2, operateCode: '1131', tip: '鼠标左键选择【打开会话】' }, + // { deviceType: '02', orderNum: 3, operateCode: '1132', tip: '选择【35】', val: '35' }, + // { deviceType: '02', orderNum: 4, operateCode: '1134', tip: '选择【零点西上行】', val: '01' }, + // { deviceType: '02', orderNum: 5, operateCode: '1135', tip: '输入0', val: '0' }, + // { deviceType: '02', orderNum: 6, operateCode: '1136', tip: '选择【零点西上行】', val: '01' }, + // { deviceType: '02', orderNum: 7, operateCode: '1137', tip: '输入3000', val: '3000' }, + // { deviceType: '02', orderNum: 8, operateCode: '1138', tip: '鼠标左键点击【确认设备】', val: '35::01::0::01::3000' }, + // { deviceType: '02', orderNum: 9, operateCode: '1139', tip: '鼠标左键点击【首次确认】' }, + // { deviceType: '02', orderNum: 10, operateCode: '11310', tip: '选择【35】', val: '35' }, + // { deviceType: '02', orderNum: 11, operateCode: '11311', tip: '选择【零点西上行】', val: '01' }, + // { deviceType: '02', orderNum: 12, operateCode: '11312', tip: '选择【0】', val: '0' }, + // { deviceType: '02', orderNum: 13, operateCode: '11313', tip: '选择【零点西上行】', val: '01' }, + // { deviceType: '02', orderNum: 14, operateCode: '11314', tip: '选择【3000】', val: '3000' }, + // { deviceType: '02', orderNum: 15, operateCode: '11315', tip: '鼠标左键点击【确认设备】' }, + // { deviceType: '02', orderNum: 16, operateCode: '114', tip: '鼠标左键点击【确认发送】', val: '35::01::0::01::3000' }, + // { deviceType: '02', orderNum: 17, operateCode: '11317', tip: '鼠标左键点击【关闭】' }, + // { deviceType: '02', orderNum: 18, operateCode: '11318', tip: '鼠标左键点击【确认】' }, + // ] + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '113', tip: '鼠标右键菜单选择【设置临时限速】' }, + { deviceType: '02', orderNum: 2, operateCode: '1136', tip: '鼠标左键选择【限速值35】', val: '35' }, + { deviceType: '02', orderNum: 3, operateCode: '1131', tip: '鼠标左键点击【下达】按钮' }, + { deviceType: '02', orderNum: 4, operateCode: '1132', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '02', orderNum: 5, operateCode: '1133', tip: '鼠标左键点击【确认1】按钮' }, + { deviceType: '02', orderNum: 6, operateCode: '1134', tip: '鼠标左键点击【确认2】按钮', val: '35' }, + { deviceType: '02', orderNum: 7, operateCode: '001', tip: '鼠标左键点击【关闭】按钮' }, + ] + }, + + { + maxDuration: 15, + minDuration: 8, + operateType: '0201', + skinStyle: '03', + trainingName: '排列进路({3} 进路)', + trainingRemark: '排列进路功能', + trainingType: '02', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '301', tip: '鼠标右键菜单选择【排列进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '3011', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' }, + { deviceType: '04', orderNum: 3, operateCode: '301', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: '0202', + skinStyle: '03', + trainingName: '取消进路({3} 进路)', + trainingRemark: '取消进路功能', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '303', tip: '鼠标右键菜单选择【取消进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '303', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: '0210', + skinStyle: '03', + trainingName: '查询进路控制状态({5} 信号机)', + trainingRemark: '查询进路控制状态功能', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '316', tip: '鼠标右键菜单选择【查询进路控制状态】' }, + { deviceType: '04', orderNum: 2, operateCode: '316', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: '0208', + skinStyle: '03', + trainingName: '进路交自动控({5} 信号机)', + trainingRemark: '进路交自动控功能', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '315', tip: '鼠标右键菜单选择【进路交自动控】' }, + { deviceType: '04', orderNum: 2, operateCode: '3151', tip: '鼠标左键选择【{5}】', val: '{6}' }, + { deviceType: '04', orderNum: 3, operateCode: '315', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: '0209', + skinStyle: '03', + trainingName: '进路交人工控({5} 信号机)', + trainingRemark: '进路交人工控功能', + trainingType: '02', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '314', tip: '鼠标右键菜单选择【进路交人工控】' }, + { deviceType: '04', orderNum: 2, operateCode: '3141', tip: '鼠标左键选择【{5}】', val: '{6}' }, + { deviceType: '04', orderNum: 3, operateCode: '314', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: '0206', + skinStyle: '03', + trainingName: '信号重开({3} 进路)', + trainingRemark: '信号重开功能', + trainingType: '02', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '304', tip: '鼠标右键菜单选择【信号重开】' }, + { deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + + { + maxDuration: 15, + minDuration: 8, + operateType: '0801', + skinStyle: '03', + trainingName: '全线取消临时限速', + trainingRemark: '全线取消临时限速功能', + trainingType: '08', + productTypes: ['01,02'], + stepVOList: [ + { deviceType: '10', orderNum: 1, operateCode: '800', tip: '鼠标右键菜单选择【取消全线临时限速】' }, + { deviceType: '10', orderNum: 2, operateCode: '8001', tip: '鼠标左键点击【打开会话】按钮' }, + { deviceType: '10', orderNum: 3, operateCode: '8003', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '10', orderNum: 4, operateCode: '8004', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '10', orderNum: 5, operateCode: '8005', tip: '鼠标左键点击【关闭】按钮' }, + { deviceType: '10', orderNum: 6, operateCode: '8006', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + ], + } +}; \ No newline at end of file diff --git a/src/scripts/plugin/converter/CancelLimitOperationConverter.js b/src/scripts/plugin/converter/CancelLimitOperationConverter.js new file mode 100644 index 000000000..eabb64f66 --- /dev/null +++ b/src/scripts/plugin/converter/CancelLimitOperationConverter.js @@ -0,0 +1,45 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; + +const CancelLimitOperation = OperationEvent.LimitControl; + +const CancelLimitType = MapDeviceType.LimitControl.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('LimitControl', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + let operation = operates[0].operation; + switch (operation) { + case CancelLimitOperation.CancelAllLimit.menu.operation: return handleMenuCancelAllLimit(operates); + + } + } + } +}; + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +function handleMenuCancelAllLimit(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === CancelLimitType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: CancelLimitOperation.CancelAllLimit.event + }; + } + return { error: true }; + } + return null; +} diff --git a/src/scripts/plugin/converter/MixinOperationConverter.js b/src/scripts/plugin/converter/MixinOperationConverter.js new file mode 100644 index 000000000..752159f19 --- /dev/null +++ b/src/scripts/plugin/converter/MixinOperationConverter.js @@ -0,0 +1,43 @@ +import { OperationEvent, getOperateTypeBy, checkOperationIsCurrentOperate } from '@/scripts/ConstDic'; +import { handleMenuRequestCentralControl, handleMenuRequestStationControl, handleMenuEmergencyStationControl } from './StationControlOperationConverter'; + +const MixinCommandOperation = OperationEvent.MixinCommand +const StationControlOperation = OperationEvent.StationControl; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('MixinCommand', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + switch (operates[0].operation) { + case MixinCommandOperation.remoteControl.mbar.operation: return handleMenuRemoteControl(operates); + } + } + } +}; + + +/** + * 控制模式操作 + */ +function handleMenuRemoteControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (checkOperationIsCurrentOperate(operate.operation, StationControlOperation.requestStationControl)) { + return handleMenuRequestCentralControl(operates); + } else if (checkOperationIsCurrentOperate(operate.operation, StationControlOperation.requestCentralControl)) { + return handleMenuRequestStationControl(operates); + } else if (checkOperationIsCurrentOperate(operate.operation, StationControlOperation.emergencyStationControl)) { + return handleMenuEmergencyStationControl(operates); + } + + return { error: true }; + } + return null; +} \ No newline at end of file diff --git a/src/scripts/plugin/converter/SectionOperationConverter.js b/src/scripts/plugin/converter/SectionOperationConverter.js new file mode 100644 index 000000000..f0f5d4773 --- /dev/null +++ b/src/scripts/plugin/converter/SectionOperationConverter.js @@ -0,0 +1,439 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; +import localStore from 'storejs'; +import store from '@/store'; + +const SectionOperation = OperationEvent.Section; + +const SectionType = MapDeviceType.Section.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('Section', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + let operation = operates[0].operation; + switch (operation) { + case SectionOperation.cancelStoppage.menu.operation: return handleMenuCancelStopPage(operates); + + case SectionOperation.stoppage.menu.operation: return handleMenuFailure(operates); + + case SectionOperation.alxeFailure.menu.operation: return handleMenuAlxeFailure(operates); + + case SectionOperation.fault.menu.operation: return handleMenuFault(operates); + case SectionOperation.fault.button.operation: return handleButtonFault(operates); + + case SectionOperation.lock.menu.operation: return handleMenuLock(operates); + + case SectionOperation.unlock.menu.operation: return handleMenuUnlock(operates); + + case SectionOperation.split.menu.operation: return handleMenuSplit(operates); + + case SectionOperation.active.menu.operation: return handleMenuActive(operates); + + case SectionOperation.setSpeed.menu.operation: return handleMenuSetSpeed(operates); + + case SectionOperation.cancelSpeed.menu.operation: return handleMenuCancelSpeed(operates); + + case SectionOperation.axlePreReset.menu.operation: return handleMenuAxlePreReset(operates); + case SectionOperation.axlePreReset.button.operation: return handleButtonAxlePreReset(operates); + + case SectionOperation.detail.menu.operation: return handleMenuDetail(operates); + + case SectionOperation.newtrain.menu.operation: return handleMenuNewTrain(operates); + + case SectionOperation.alxeEffective.menu.operation: return handleMenuAlxeEffective(operates); + + case SectionOperation.setLimitSpeed.menu.operation: return handleMenuSetLimitSpeed(operates); + } + } + } +}; + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +function handleMenuCancelStopPage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.cancelStoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置计轴失效 操作 + * @param {*} operates + */ +function handleMenuFailure(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.stoppage.event, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置计轴失效 操作 + * @param {*} operates + */ +function handleMenuAlxeFailure(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.alxeFailure.event, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 区故解 操作 + * @param {*} operates + */ +function handleMenuFault(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + if (operate.code) { + let val = ''; + let counter = store.getters['map/getCounterBySectionCode'](operate.code, '01'); + if (counter) { + val = localStore.get(counter.code); + } + + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.fault.event, + val: val + }; + } + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 封锁 操作 + * @param {*} operates + */ +function handleMenuLock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.lock.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 解锁 操作 + * @param {*} operates + */ +function handleMenuUnlock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.unlock.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 切除 操作 + * @param {*} operates + */ +function handleMenuSplit(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.split.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 激活 操作 + * @param {*} operates + */ +function handleMenuActive(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.active.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置速度 + * @param {*} operates + */ + +function handleMenuSetSpeed(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.setSpeed.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消速度 + * @param {*} operates + */ + +function handleMenuCancelSpeed(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: SectionOperation.cancelSpeed.event.query + }; + } + return { error: true }; + } else if (operates.length >= 3) { + let operate = operates[operates.length - 1]; + if (operate.type === SectionType && operates[0].code) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: SectionOperation.cancelSpeed.event.confirm + }; + } + return { error: true }; + } + + return null; +} + +/** + * 处理右键菜单 区段预复位 + * @param {*} operates + */ + +function handleMenuAxlePreReset(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.axlePreReset.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 区段详细信息 + * @param {*} operates + */ + +function handleMenuDetail(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.detail.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 新建列车操作 + * @param {*} operates + */ +function handleMenuNewTrain(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.newtrain.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置计轴有效操作 + * @param {*} operates + */ +function handleMenuAlxeEffective(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.alxeEffective.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置临时限速操作 + * @param {*} operates + */ +function handleMenuSetLimitSpeed(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.setLimitSpeed.event, + val: operates[operates.length - 1].val + }; + } else if (operate.type === MapDeviceType.Switch.type && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.setLimitSpeed.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } +} + +/** + * 处理点击按钮 区故解 操作 + * @param {*} operates + */ +function handleButtonFault(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.fault.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 计轴预复位 操作 + * @param {*} operates + */ +function handleButtonAxlePreReset(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SectionType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SectionOperation.axlePreReset.event + }; + } + return { error: true }; + } + return null; +} diff --git a/src/scripts/plugin/converter/SignalRouteOperationConverter.js b/src/scripts/plugin/converter/SignalRouteOperationConverter.js new file mode 100644 index 000000000..a2b6bf3c5 --- /dev/null +++ b/src/scripts/plugin/converter/SignalRouteOperationConverter.js @@ -0,0 +1,644 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; +import localStore from 'storejs'; +import store from '@/store'; + +const SignalOperation = OperationEvent.Signal; + +const SignalType = MapDeviceType.Signal.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('Signal', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + /** + * 验证前预处理 + */ + preHandle: function (operates) { + if (operates && operates.length) { + let curOperate = operates[operates.length - 1]; + switch (operates[0].operation) { + case SignalOperation.arrangementRoute.button: { + if (curOperate.model) { + curOperate.val = curOperate.model._viewVal; + } + return curOperate; + } + case SignalOperation.cancelTrainRoute.button: { + if (curOperate.model) { + curOperate.val = curOperate.model._viewVal; + } + return curOperate; + } + case SignalOperation.reopenSignal.button: { + return curOperate; + } + case SignalOperation.humanTrainRoute.button: { + if (curOperate.model) { + curOperate.val = curOperate.model._viewVal; + } + return curOperate; + } + default: { + return curOperate; + } + } + } + }, + convert: function (operates) { + if (operates && operates.length) { + switch (operates[0].operation) { + case SignalOperation.cancelStoppage.menu.operation: return handleMenuCancelStopPage(operates); + + case SignalOperation.stoppage.menu.operation: return handleMenuStoppage(operates); + + case SignalOperation.arrangementRoute.button.operation: return handleButtonArrangementRoute(operates); + case SignalOperation.arrangementRoute.menu.operation: return handleMenuArrangementRoute(operates); + + case SignalOperation.cancelTrainRoute.button.operation: return handleButtonCancelTrainRoute(operates); + case SignalOperation.cancelTrainRoute.menu.operation: return handleMenuCancelTrainRoute(operates); + + case SignalOperation.reopenSignal.button.operation: return handleButtonReopenSignal(operates); + case SignalOperation.reopenSignal.menu.operation: return handleMenuReopenSignal(operates); + + case SignalOperation.humanTrainRoute.button.operation: return handleButtonHumanTrainRoute(operates); + case SignalOperation.humanTrainRoute.menu.operation: return handleMenuHumanTrainRoute(operates); + + case SignalOperation.lock.menu.operation: return handleMenuLock(operates); + + case SignalOperation.unlock.menu.operation: return handleMenuUnlock(operates); + + case SignalOperation.guide.menu.operation: return handleMenuGuideRoute(operates); + case SignalOperation.guide.button.operation: return handleButtonGuideRoute(operates); + + case SignalOperation.signalClose.menu.operation: return handleMenuSignalClose(operates); + + case SignalOperation.setAutoInterlock.menu.operation: return handleMenuSetAutoInterlock(operates); + case SignalOperation.setAutoInterlock.button.operation: return handleButtonSetAutoInterlock(operates); + + case SignalOperation.cancelAutoInterlock.menu.operation: return handleMenuCancelAutoInterlock(operates); + + case SignalOperation.setAutoTrigger.menu.operation: return handleMenuSetAutoTrigger(operates); + + case SignalOperation.cancelAutoTrigger.menu.operation: return handleMenuCancelAutoTrigger(operates); + + case SignalOperation.humanControl.menu.operation: return handleMenuHumanControl(operates); + + case SignalOperation.atsAutoControl.menu.operation: return handleMenuAtsAutoControl(operates); + + case SignalOperation.detail.menu.operation: return handleMenuDetail(operates); + } + } + } +}; + +/** + * 处理点击按钮 排列进路 操作 + * @param {*} operates + */ +function handleButtonArrangementRoute(operates) { + if (operates.length === 2) { + let operate = operates[1]; + if (operate.type === SignalType && operate.code && + operate.model && operate.model._viewVal) { + return { + type: operate.type, + code: operate.code, + operation: SignalOperation.arrangementRoute.event.query, + val: operate.model._viewVal + }; + } + return { error: true }; + } else if (operates.length >= 3) { + let operateBeg = operates[1]; + let operateEnd = operates[operates.length - 1]; + if (operateEnd.type === SignalType && operateEnd.code && + operateEnd.model && operateBeg.val === operateEnd.model._viewVal && + operateEnd.tempData && operateEnd.tempData.length) { + for (let i = 0; i < operateEnd.tempData.length; i++) { + let elem = operateEnd.tempData[i]; + if (elem.startSignalCode === operateBeg.code && elem.endSignalCode == operateEnd.code) { + return { + type: operateEnd.type, + code: operateEnd.code, + over: true, + operation: SignalOperation.arrangementRoute.event.confirm, + val: elem.code + }; + } + } + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 取消进路 操作 + * @param {*} operates + */ +function handleButtonCancelTrainRoute(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.cancelTrainRoute.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 信号重开 操作 + * @param {*} operates + */ +function handleButtonReopenSignal(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.reopenSignal.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 总人解 操作 + * @param {*} operates + */ +function handleButtonHumanTrainRoute(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SignalType && operate.code) { + if (operate.code) { + let counter = store.getters['map/getCounterBySingalCode'](operate.code, '02'); + if (counter) { + let val = localStore.get(counter.code) || ''; + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.humanTrainRoute.event, + val: val + }; + } + } + + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +function handleMenuCancelStopPage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.cancelStoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置故障 操作 + * @param {*} operates + */ +function handleMenuStoppage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.stoppage.event, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 排列进路 操作 + * @param {*} operates + */ +function handleMenuArrangementRoute(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: SignalOperation.arrangementRoute.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 3) { + let operate = operates[operates.length - 1]; + if (operate.type === SignalType && operates[0].code && (operates[operates.length - 2].val || operates[operates.length - 3].val)) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: SignalOperation.arrangementRoute.event.confirm, + val: operates[operates.length - 2].val || operates[operates.length - 3].val + }; + } + return { error: true }; + } + + return null; +} + +/** + * 处理右键菜单 取消进路 操作 + * @param {*} operates + */ +function handleMenuCancelTrainRoute(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.cancelTrainRoute.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 信号重开 操作 + * @param {*} operates + */ +function handleMenuReopenSignal(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.reopenSignal.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 总人解 操作 + * @param {*} operates + */ +function handleMenuHumanTrainRoute(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + if (operate.code) { + let counter = store.getters['map/getCounterBySingalCode'](operate.code, '02'); + if (counter) { + let val = localStore.get(counter.code) || ''; + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.humanTrainRoute.event, + val: val + }; + } + } + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 封锁 操作 + * @param {*} operates + */ +function handleMenuLock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.lock.event + }; + } + return { error: true }; + } +} + +/** + * 处理右键菜单 解封 操作 + * @param {*} operates + */ +function handleMenuUnlock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.unlock.event + }; + } + return { error: true }; + } +} + +/** + * 处理右键菜单 引导 操作 + * @param {*} operates + */ +function handleMenuGuideRoute(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: SignalOperation.guide.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.guide.event.confirm + }; + } + return { error: true }; + } +} + +/** + * 处理右键菜单 信号关灯 操作 + * @param {*} operates + */ +function handleMenuSignalClose(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.signalClose.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置联锁自动进路 操作 + * @param {*} operates + */ +function handleMenuSetAutoInterlock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.setAutoInterlock.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消联锁自动进路 操作 + * @param {*} operates + */ +function handleMenuCancelAutoInterlock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.cancelAutoInterlock.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置联锁自动触发 操作 + * @param {*} operates + */ +function handleMenuSetAutoTrigger(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.setAutoTrigger.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消联锁自动触发 操作 + * @param {*} operates + */ +function handleMenuCancelAutoTrigger(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.cancelAutoTrigger.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 进路交人工控 操作 + * @param {*} operates + */ +function handleMenuHumanControl(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: SignalOperation.humanControl.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + let val = null; + val = operates[operates.length - 3] && operates[operates.length - 3].val ? operates[operates.length - 3].val : val; + val = operates[operates.length - 2] && operates[operates.length - 2].val ? operates[operates.length - 2].val : val; + val = operates[operates.length - 1] && operates[operates.length - 1].val ? operates[operates.length - 1].val : val; + + if (operate.type === SignalType && operates[0].code && val) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: SignalOperation.humanControl.event.confirm, + val: val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 进路交ATS自动工控 操作 + * @param {*} operates + */ +function handleMenuAtsAutoControl(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: SignalOperation.atsAutoControl.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + let val = null; + val = operates[operates.length - 3] && operates[operates.length - 3].val ? operates[operates.length - 3].val : val; + val = operates[operates.length - 2] && operates[operates.length - 2].val ? operates[operates.length - 2].val : val; + val = operates[operates.length - 1] && operates[operates.length - 1].val ? operates[operates.length - 1].val : val; + + if (operate.type === SignalType && operates[0].code && val) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: SignalOperation.atsAutoControl.event.confirm, + val: val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 查询进路状态 操作 + * @param {*} operates + */ +function handleMenuDetail(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: SignalOperation.detail.event.query, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 设置联锁自动进路 操作 + * @param {*} operates + */ +function handleButtonSetAutoInterlock(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.setAutoInterlock.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 引导 操作 + * @param {*} operates + */ +function handleButtonGuideRoute(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SignalType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SignalOperation.guide.event + }; + } + return { error: true }; + } + return null; +} + diff --git a/src/scripts/plugin/converter/StationControlOperationConverter.js b/src/scripts/plugin/converter/StationControlOperationConverter.js new file mode 100644 index 000000000..b922c4997 --- /dev/null +++ b/src/scripts/plugin/converter/StationControlOperationConverter.js @@ -0,0 +1,257 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; + +const StationControlOperation = OperationEvent.StationControl; + +const StationControlType = MapDeviceType.StationControl.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('StationControl', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + let operation = operates[0].operation; + switch (operation) { + case StationControlOperation.cancelStoppage.menu.operation: return handleMenuCancelStopPage(operates); + + case StationControlOperation.stoppage.menu.operation: return handleMenuStoppage(operates); + + case StationControlOperation.emergencyStationControl.menu.operation: return handleMenuEmergencyStationControl(operates); + + case StationControlOperation.requestStationControl.menu.operation: return handleMenuRequestStationControl(operates); + case StationControlOperation.requestStationControl.mbar.operation: return handleBarRequestStationControl(operates); + + case StationControlOperation.forcedStationControl.menu.operation: return handleMenuForcedStationControl(operates); + case StationControlOperation.forcedStationControl.passwordConfirm.operation: return handleBarForcedStationControl(operates); + case StationControlOperation.forcedStationControl.mbar.operation: return handleBarForcedStationControl(operates); + + case StationControlOperation.requestCentralControl.menu.operation: return handleMenuRequestCentralControl(operates); + case StationControlOperation.requestCentralControl.mbar.operation: return handleBarRequestCentralControl(operates); + + case StationControlOperation.controlResponse.menu.operation: return handleMenuControlResponse(operates); + } + } + } +}; + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +export function handleMenuCancelStopPage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationControlType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationControlOperation.cancelStoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置故障 操作 + * @param {*} operates + */ +export function handleMenuStoppage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationControlType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationControlOperation.stoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 紧急站控 操作 + * @param {*} operates + */ +export function handleMenuEmergencyStationControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + return { + type: operate.type, + val: operate.val, + code: operate.code, + over: true, + operation: StationControlOperation.emergencyStationControl.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 请求站控 操作 + * @param {*} operates + */ +export function handleMenuRequestStationControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + return { + type: operate.type, + val: operate.val, + code: operate.code, + over: true, + operation: StationControlOperation.requestStationControl.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 强行站控 操作 + * @param {*} operates + */ +export function handleMenuForcedStationControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + return { + type: operate.type, + val: operate.val, + code: operate.code, + over: true, + operation: StationControlOperation.forcedStationControl.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 请求中控 操作 + * @param {*} operates + */ +export function handleMenuRequestCentralControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + return { + type: operate.type, + val: operate.val, + code: operate.code, + over: true, + operation: StationControlOperation.requestCentralControl.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 控制模式应答 操作 + * @param {*} operates + */ +export function handleMenuControlResponse(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + let operation = ''; + if (operate.operation == StationControlOperation.controlResponse.agree.operation) { + if (operate.prdType == '01') { + operation = StationControlOperation.controlResponse.event.stationAgree; + } else { + operation = StationControlOperation.controlResponse.event.centralAgree; + } + } else { + if (operate.prdType == '01') { + operation = StationControlOperation.controlResponse.event.stationRefuse; + } else { + operation = StationControlOperation.controlResponse.event.centralRefuse; + } + } + + return { + type: operate.type, + val: operate.val, + code: operate.code, + over: true, + operation: operation + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理菜单栏 请求站控 操作 + * @param {*} operates + */ +export function handleBarRequestStationControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + return { + type: operate.type, + operation: StationControlOperation.requestStationControl.event, + code: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理菜单栏 强制站控 操作 + * @param {*} operates + */ +export function handleBarForcedStationControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + return { + type: operate.type, + code: operate.val, + operation: StationControlOperation.forcedStationControl.event, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理菜单栏 请求中控 操作 + * @param {*} operates + */ +export function handleBarRequestCentralControl(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationControlType && operate.val) { + return { + type: operate.type, + code: operate.val, + operation: StationControlOperation.requestCentralControl.event, + }; + } + return { error: true }; + } + return null; +} \ No newline at end of file diff --git a/src/scripts/plugin/converter/StationOperationConverter.js b/src/scripts/plugin/converter/StationOperationConverter.js new file mode 100644 index 000000000..cb28ac193 --- /dev/null +++ b/src/scripts/plugin/converter/StationOperationConverter.js @@ -0,0 +1,201 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; + +const StationOperation = OperationEvent.Station; + +const StationType = MapDeviceType.Station.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('Station', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + let operation = operates[0].operation; + switch (operation) { + case StationOperation.cancelStoppage.menu.operation: return handleMenuCancelStopPage(operates); + + case StationOperation.stoppage.menu.operation: return handleMenuStoppage(operates); + + case StationOperation.setAutoTrigger.menu.operation: return handleMenuSetAutoTrigger(operates); + + case StationOperation.cancelAutoTrigger.menu.operation: return handleMenuCancelAutoTrigger(operates); + + case StationOperation.powerUnLock.menu.operation: return handleMenuPowerUnLock(operates); + + case StationOperation.execKeyOperationTest.menu.operation: return handleMenuExecKeyOperationTest(operates); + + case StationOperation.humanControlALL.menu.operation: return handleMenuHumanControlAll(operates); + + case StationOperation.atsAutoControlALL.menu.operation: return handleMenuAtsAutoControlAll(operates); + } + } + } +}; + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +function handleMenuCancelStopPage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationOperation.cancelStoppage.event, + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 设置故障 操作 + * @param {*} operates + */ +function handleMenuStoppage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationOperation.stoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 全站设置联锁自动触发 操作 + * @param {*} operates + */ +function handleMenuSetAutoTrigger(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationOperation.setAutoTrigger.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 全站取消联锁自动触发 操作 + * @param {*} operates + */ +function handleMenuCancelAutoTrigger(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationOperation.cancelAutoTrigger.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 上电解锁 操作 + * @param {*} operates + */ +function handleMenuPowerUnLock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === StationType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationOperation.powerUnLock.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 执行关键操作测试 操作 + * @param {*} operates + */ +function handleMenuExecKeyOperationTest(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === StationType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationOperation.execKeyOperationTest.event + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 所有进路自排关 操作 + * @param {*} operates + */ +function handleMenuHumanControlAll(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationOperation.humanControlALL.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 所有进路自排开 操作 + * @param {*} operates + */ +function handleMenuAtsAutoControlAll(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationType && operates[0].code) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationOperation.atsAutoControlALL.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} \ No newline at end of file diff --git a/src/scripts/plugin/converter/StationStandOperationConverter.js b/src/scripts/plugin/converter/StationStandOperationConverter.js new file mode 100644 index 000000000..39df39ba3 --- /dev/null +++ b/src/scripts/plugin/converter/StationStandOperationConverter.js @@ -0,0 +1,438 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; + +const StationStandOperation = OperationEvent.StationStand; + +const StationStandType = MapDeviceType.StationStand.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('StationStand', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + let operation = operates[0].operation; + switch (operation) { + case StationStandOperation.cancelStoppage.menu.operation: return handleMenuCancelStopPage(operates); + + case StationStandOperation.stoppage.menu.operation: return handleMenuStoppage(operates); + + case StationStandOperation.earlyDeparture.menu.operation: return handleMenuEarlyDeparture(operates); + + case StationStandOperation.setJumpStop.menu.operation: return handleMenuSetJumpStop(operates); + + case StationStandOperation.cancelJumpStop.menu.operation: return handleMenuCancelJumpStop(operates); + + case StationStandOperation.setDetainTrain.menu.operation: return handleMenuSetDetainTrain(operates); + + case StationStandOperation.cancelDetainTrain.menu.operation: return handleMenuCancelDetainTrain(operates); + + case StationStandOperation.cancelDetainTrainForce.menu.operation: return handleMenuCancelDetainTrainForce(operates); + + case StationStandOperation.detail.menu.operation: return handleMenuDetail(operates); + + case StationStandOperation.cancelDetainTrainAll.menu.operation: return handleMenuCancelDetainTrainAll(operates); + + case StationStandOperation.setStopTime.menu.operation: return handleMenuSetStopTime(operates); + + case StationStandOperation.setRunLevel.menu.operation: return handleMenuSetRunLevel(operates); + + case StationStandOperation.setBackStrategy.menu.operation: return handleMenuSetBackStrategy(operates); + + case StationStandOperation.setDetainTrainAll.mbar.operation: return handleMbarSetDetainTrainAll(operates); + + case StationStandOperation.cancelDetainTrainAll.mbar.operation: return handleMbarCancelDetainTrainAll(operates); + + case StationStandOperation.cancelUpDetainTrainAll.mbar.operation: return handleMbarCancelUpDetainTrainAll(operates); + + case StationStandOperation.cancelDownDetainTrainAll.mbar.operation: return handleMbarCancelDownDetainTrainAll(operates); + } + } + } +}; + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +function handleMenuCancelStopPage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationStandType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationStandOperation.cancelStoppage.event, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置故障 操作 + * @param {*} operates + */ +function handleMenuStoppage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: StationStandOperation.stoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 提前发车 操作 + * @param {*} operates + */ +function handleMenuEarlyDeparture(operates) { + if (operates.length > 0) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationStandOperation.earlyDeparture.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置跳停 操作 + * @param {*} operates + */ +function handleMenuSetJumpStop(operates) { + if (operates.length > 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationStandOperation.setJumpStop.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消跳停 操作 + * @param {*} operates + */ +function handleMenuCancelJumpStop(operates) { + if (operates.length > 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationStandOperation.cancelJumpStop.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 设置扣车 操作 + * @param {*} operates + */ +function handleMenuSetDetainTrain(operates) { + if (operates.length > 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationStandOperation.setDetainTrain.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消扣车 操作 + * @param {*} operates + */ +function handleMenuCancelDetainTrain(operates) { + if (operates.length > 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + // operation: operate.operation, + operation: StationStandOperation.cancelDetainTrain.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 强制取消扣车 操作 + * @param {*} operates + */ +function handleMenuCancelDetainTrainForce(operates) { + if (operates.length > 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationStandOperation.cancelDetainTrainForce.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 站台详细信息 操作 + * @param {*} operates + */ +function handleMenuDetail(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationStandOperation.detail.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消全站扣车 操作 + * @param {*} operates + */ +function handleMenuCancelDetainTrainAll(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: StationStandOperation.cancelDetainTrainAll.event, + val: operate.val, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置停站时间 操作 + * @param {*} operates + */ +function handleMenuSetStopTime(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === StationStandType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: StationStandOperation.setStopTime.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType && operate.val) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: StationStandOperation.setStopTime.event.confirm, + val: operate.val + }; + } + return { error: true }; + } + + return null; +} + +/** + * 处理右键菜单 设置运行等级 操作 + * @param {*} operates + */ +function handleMenuSetRunLevel(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === StationStandType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: StationStandOperation.setRunLevel.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType && operate.val) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: StationStandOperation.setRunLevel.event.confirm, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 提前发车 操作 + * @param {*} operates + */ +function handleMenuSetBackStrategy(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === StationStandType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: StationStandOperation.setBackStrategy.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType && operate.val) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: StationStandOperation.setBackStrategy.event.confirm, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理菜单栏 设置全线扣车 操作 + * @param {*} operates + */ +function handleMbarSetDetainTrainAll(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operate.val, + operation: StationStandOperation.setDetainTrainAll.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理菜单栏 取消全线扣车 操作 + * @param {*} operates + */ +function handleMbarCancelDetainTrainAll(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operate.val, + operation: StationStandOperation.cancelDetainTrainAll.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理菜单栏 取消全线上行扣车 操作 + * @param {*} operates + */ +function handleMbarCancelUpDetainTrainAll(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operate.val, + operation: StationStandOperation.cancelUpDetainTrainAll.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理菜单栏 取消全线上行扣车 操作 + * @param {*} operates + */ +function handleMbarCancelDownDetainTrainAll(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === StationStandType) { + return { + type: operate.type, + code: operate.val, + operation: StationStandOperation.cancelDownDetainTrainAll.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} \ No newline at end of file diff --git a/src/scripts/plugin/converter/SwitchOperationConverter.js b/src/scripts/plugin/converter/SwitchOperationConverter.js new file mode 100644 index 000000000..4bdc0d422 --- /dev/null +++ b/src/scripts/plugin/converter/SwitchOperationConverter.js @@ -0,0 +1,494 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; + +const SwitchOperation = OperationEvent.Switch; + +const SwitchType = MapDeviceType.Switch.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('Switch', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + let operation = operates[0].operation; + switch (operation) { + case SwitchOperation.cancelStoppage.menu.operation: return handleMenuCancelStopPage(operates); + + case SwitchOperation.stoppage.menu.operation: return handleMenuStoppage(operates); + + case SwitchOperation.locate.button.operation: return handleButtonLocate(operates); + case SwitchOperation.locate.menu.operation: return handleMenuLocate(operates); + + case SwitchOperation.reverse.button.operation: return handleButtonReverse(operates); + case SwitchOperation.reverse.menu.operation: return handleMenuReverse(operates); + + case SwitchOperation.lock.button.operation: return handleButtonLock(operates); + case SwitchOperation.lock.menu.operation: return handleMenuLock(operates); + + case SwitchOperation.unlock.button.operation: return handleButtonUnlock(operates); + case SwitchOperation.unlock.menu.operation: return handleMenuUnlock(operates); + + case SwitchOperation.block.menu.operation: return handleMenuBlock(operates); + + case SwitchOperation.unblock.menu.operation: return handleMenuUnblock(operates); + + case SwitchOperation.turnout.menu.operation: return handleMenuTurnout(operates); + + case SwitchOperation.turnoutForce.menu.operation: return handleMenuTurnoutForce(operates); + + case SwitchOperation.fault.menu.operation: return handleMenuFault(operates); + + case SwitchOperation.axlePreReset.menu.operation: return handleMenuAxlePreReset(operates); + + case SwitchOperation.split.menu.operation: return handleMenuSplit(operates); + + case SwitchOperation.active.menu.operation: return handleMenuActive(operates); + + case SwitchOperation.setSpeed.menu.operation: return handleMenuSetSpeed(operates); + + case SwitchOperation.cancelSpeed.menu.operation: return handleMenuCancelSpeed(operates); + + case SwitchOperation.alxeEffective.menu.operation: return handleMenuAlxeEffective(operates); + } + } + } +}; + +/** + * 处理点击按钮 定操 操作 + * @param {*} operates + */ +function handleButtonLocate(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.locate.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 反操 操作 + * @param {*} operates + */ +function handleButtonReverse(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.reverse.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 单锁 操作 + * @param {*} operates + */ +function handleButtonLock(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.lock.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理点击按钮 解锁 操作 + * @param {*} operates + */ +function handleButtonUnlock(operates) { + if (operates.length >= 2) { + let operate = operates[operates.length - 1]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.unlock.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +function handleMenuCancelStopPage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.cancelStoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置故障 操作 + * @param {*} operates + */ +function handleMenuStoppage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.stoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 定位 操作 + * @param {*} operates + */ +function handleMenuLocate(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.locate.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 反位 操作 + * @param {*} operates + */ +function handleMenuReverse(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.reverse.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 单锁 操作 + * @param {*} operates + */ +function handleMenuLock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.lock.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 解锁 操作 + * @param {*} operates + */ +function handleMenuUnlock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.unlock.event + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 道岔封锁 操作 + * @param {*} operates + */ +function handleMenuBlock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.block.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 道岔解封 操作 + * @param {*} operates + */ +function handleMenuUnblock(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.unblock.event + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 故障解锁 操作 + * @param {*} operates + */ +function handleMenuFault(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.fault.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 转动 操作 + * @param {*} operates + */ +function handleMenuTurnout(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.turnout.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 扳动 操作 + * @param {*} operates + */ +function handleMenuTurnoutForce(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.turnoutForce.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 计轴预复位 操作 + * @param {*} operates + */ +function handleMenuAxlePreReset(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.axlePreReset.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 区段切除 操作 + * @param {*} operates + */ +function handleMenuSplit(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.split.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 区段激活 操作 + * @param {*} operates + */ +function handleMenuActive(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.active.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置速度 操作 + * @param {*} operates + */ +function handleMenuSetSpeed(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.setSpeed.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 取消速度 操作 + * @param {*} operates + */ +function handleMenuCancelSpeed(operates) { + if (operates.length == 1) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + operation: SwitchOperation.cancelSpeed.event.query, + }; + } + return { error: true }; + } else if (operates.length >= 3) { + let operate = operates[operates.length - 1]; + if (operate.type === SwitchType && operates[0].code) { + return { + over: true, + type: operate.type, + code: operates[0].code, + operation: SwitchOperation.cancelSpeed.event.confirm, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置计轴有效操作 + * @param {*} operates + */ +function handleMenuAlxeEffective(operates) { + if (operates.length >= 2) { + let operate = operates[0]; + if (operate.type === SwitchType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: SwitchOperation.alxeEffective.event, + val: operates[operates.length - 1].val + }; + } + return { error: true }; + } + return null; +} \ No newline at end of file diff --git a/src/scripts/plugin/converter/TrainOperationConverter.js b/src/scripts/plugin/converter/TrainOperationConverter.js new file mode 100644 index 000000000..64dceefa8 --- /dev/null +++ b/src/scripts/plugin/converter/TrainOperationConverter.js @@ -0,0 +1,306 @@ +import { OperationEvent, getOperateTypeBy, MapDeviceType } from '@/scripts/ConstDic'; + +const TrainOperation = OperationEvent.Train; + +const TrainType = MapDeviceType.Train.type; + +export default { + test: function (operates) { + let operateType = getOperateTypeBy('Train', operates[0].operation); + if (operateType) { + return true; + } else { + return false; + } + }, + convert: function (operates) { + if (operates && operates.length) { + let operation = operates[0].operation; + switch (operation) { + case TrainOperation.cancelStoppage.menu.operation: return handleMenuCancelStopPage(operates); + + case TrainOperation.stoppage.menu.operation: return handleMenuStoppage(operates); + + case TrainOperation.addTrainId.menu.operation: return handleMenuAddTrainId(operates); + + case TrainOperation.editTrainId.menu.operation: return handleMenuEditTrainId(operates); + + case TrainOperation.delTrainId.menu.operation: return handleMenuDelTrainId(operates); + + case TrainOperation.moveTrainId.menu.operation: return handleMenuMoveTrainId(operates); + + case TrainOperation.switchTrainId.menu.operation: return handleMenuSwitchTrainId(operates); + + case TrainOperation.editTrainNo.menu.operation: return handleMenuEditTrainNo(operates); + + case TrainOperation.limitSpeed.menu.operation: return handleMenuLimitSpeed(operates); + + case TrainOperation.setPlanTrainId.menu.operation: return handleMenuSetPlanTrainId(operates); + + case TrainOperation.addPlanTrainId.menu.operation: return handleMenuAddPlanTrainId(operates); + + case TrainOperation.moveEventlyTrainId.menu.operation: return handleMenuMoveEventlyTrainId(operates); + + case TrainOperation.deletePlanTrainId.menu.operation: return handleMenuDeletePlanTrainId(operates); + + } + } + } +}; + +/** + * 处理右键菜单 取消故障 操作 + * @param {*} operates + */ +function handleMenuCancelStopPage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === TrainType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: TrainOperation.cancelStoppage.event + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 设置故障 操作 + * @param {*} operates + */ +function handleMenuStoppage(operates) { + if (operates.length >= 1) { + let operate = operates[0]; + if (operate.type === TrainType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: TrainOperation.stoppage.event + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 添加列车识别号 操作 + * @param {*} operates + */ +function handleMenuAddTrainId(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === TrainType && operate.val) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: TrainOperation.addTrainId.event, + val: operate.val, + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 修改列车识别号 操作 + * @param {*} operates + */ +function handleMenuEditTrainId(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === TrainType && operate.val) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: TrainOperation.editTrainId.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 删除列车识别号 操作 + * @param {*} operates + */ +function handleMenuDelTrainId(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === TrainType && operate.val) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: TrainOperation.delTrainId.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 移动列车识别号 操作 + * @param {*} operates + */ +function handleMenuMoveTrainId(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === TrainType && operate.val) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: TrainOperation.moveTrainId.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 交换列车识别号 操作 + * @param {*} operates + */ +function handleMenuSwitchTrainId(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === TrainType && operate.val) { + return { + type: operate.type, + code: operates[0].code, + over: true, + operation: TrainOperation.switchTrainId.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 修改车组号 操作 + * @param {*} operates + */ +function handleMenuEditTrainNo(operates) { + if (operates.length >= 1) { + let operate = operates[operates.length - 1]; + if (operate.type === TrainType && operate.val) { + return { + type: operate.type, + code: operate[0].code, + over: true, + operation: TrainOperation.editTrainNo.event, + val: operate.val + }; + } + return { error: true }; + } + return null; +} + +/** + * 处理右键菜单 限速行驶 + * @param {*} operates + */ + +function handleMenuLimitSpeed(operates) { + if (operates.length > 0) { + let operate = operates[0]; + if (operate.type === TrainType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: TrainOperation.limitSpeed.event, + }; + } + return { error: true }; + } + return null; +} + + +/** + * 处理右键菜单 设置计划车 + * @param {*} operates + */ + +function handleMenuSetPlanTrainId(operates) { + if (operates.length > 0) { + let operate = operates[0]; + if (operate.type === TrainType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: TrainOperation.setPlanTrainId.event, + }; + } + return { error: true }; + } + return null; +} + +function handleMenuAddPlanTrainId(operates) { + if (operates.length > 0) { + let operate = operates[0]; + if (operate.type === TrainType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: TrainOperation.addPlanTrainId.event, + }; + } + return { error: true }; + } + return null; +} + +function handleMenuMoveEventlyTrainId(operates) { + if (operates.length > 0) { + let operate = operates[0]; + if (operate.type === TrainType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: TrainOperation.moveEventlyTrainId.event, + }; + } + return { error: true }; + } + return null; +} +function handleMenuDeletePlanTrainId(operates) { + if (operates.length > 0) { + let operate = operates[0]; + if (operate.type === TrainType && operate.code) { + return { + type: operate.type, + code: operate.code, + over: true, + operation: TrainOperation.deletePlanTrainId.event, + }; + } + return { error: true }; + } + return null; +} \ No newline at end of file diff --git a/src/scripts/plugin/converter/manager.js b/src/scripts/plugin/converter/manager.js new file mode 100644 index 000000000..1b19e8c9e --- /dev/null +++ b/src/scripts/plugin/converter/manager.js @@ -0,0 +1,39 @@ +import SwitchOperationConverter from './SwitchOperationConverter'; +import StationControlOperationConverter from './StationControlOperationConverter'; +import StationOperationConverter from './StationOperationConverter'; +import SignalOperationConverter from './SignalRouteOperationConverter'; +import SectionOperationConverter from './SectionOperationConverter'; +import TrainOperationConverter from './TrainOperationConverter'; +import StationStandOperationConverter from './StationStandOperationConverter'; +import CancelLimitOperationConverter from './CancelLimitOperationConverter'; +import MixinOperationConverter from './MixinOperationConverter'; + + +export function getConverter(operates) { + if (SwitchOperationConverter.test(operates)) { + return SwitchOperationConverter; + + } else if (SignalOperationConverter.test(operates)) { + return SignalOperationConverter; + + } else if (StationControlOperationConverter.test(operates)) { + return StationControlOperationConverter; + + } else if (StationOperationConverter.test(operates)) { + return StationOperationConverter; + + } else if (SectionOperationConverter.test(operates)) { + return SectionOperationConverter; + + } else if (StationStandOperationConverter.test(operates)) { + return StationStandOperationConverter; + + } else if (TrainOperationConverter.test(operates)) { + return TrainOperationConverter; + + } else if (CancelLimitOperationConverter.test(operates)) { + return CancelLimitOperationConverter; + } else if (MixinOperationConverter.test(operates)) { + return MixinOperationConverter; + } +} \ No newline at end of file diff --git a/src/scripts/plugin/operateConvert2Command.js b/src/scripts/plugin/operateConvert2Command.js new file mode 100644 index 000000000..24b8ac606 --- /dev/null +++ b/src/scripts/plugin/operateConvert2Command.js @@ -0,0 +1,67 @@ +import store from '@/store'; +import router from '@/router'; +import { sendCommand } from '@/api/jmap/training'; +import { OperationEvent } from '@/scripts/ConstDic'; +import OperateHandler from '@/scripts/plugin/trainingOperateHandler'; +import { getConverter } from '@/scripts/plugin/converter/manager'; + +var OperateConverter = function () { }; +OperateConverter.prototype = { + + /** 转换 操作 为 指令 */ + convert: function (operate) { + if (operate.send) { + let command = null; + let converter = getConverter(OperateHandler.operates); + if (converter) { + command = converter.convert(OperateHandler.operates); + } + + if (command && command.error) { + // 命令错误,可以回退或清空(暂用回退) + OperateHandler.operates.pop(); + store.dispatch('training/setTempStep', null); + command = null; + } else if (command && command.over) { + // 清空操作组 + OperateHandler.cleanOperates(); + store.dispatch('menuOperation/setButtonOperation', null); + } + + return command; + } else if (operate.operation === OperationEvent.Command.cancel.menu.operation || operate.over) { + // 取消操作,清空操作组 + OperateHandler.cleanOperates(); + } + return null; + }, + + sendToServer: function (command) { + let group = router.currentRoute.query.group; + return new Promise((resolve, reject) => { + sendCommand(group, command).then((response) => { + resolve(response); + }).catch(error => { + reject(error); + }); + }); + }, + + /** 转换操作 为 指令并发送 */ + convertAndSend: function (operate) { + return new Promise((resolve, reject) => { + let command = this.convert(operate); + if (command) { + this.sendToServer(command).then(response => { + resolve(response); + }).catch(error => { + reject(error); + }); + } else { + resolve(); + } + }); + }, +}; + +export default new OperateConverter(); \ No newline at end of file diff --git a/src/scripts/plugin/trainingOperateHandler.js b/src/scripts/plugin/trainingOperateHandler.js new file mode 100644 index 000000000..1b5007c6e --- /dev/null +++ b/src/scripts/plugin/trainingOperateHandler.js @@ -0,0 +1,142 @@ +import store from '@/store'; +import router from '@/router'; +import OperateConverter from '@/scripts/plugin/operateConvert2Command'; +import { TrainingMode } from '@/scripts/ConstDic'; +import { getConverter } from '@/scripts/plugin/converter/manager'; +import { sendTrainingNextStep } from '@/api/jmap/training'; +import { Message } from 'element-ui'; + +var OperateHandler = function () { +}; + +OperateHandler.prototype = { + /** 操作组 */ + operates: [], + + /** 清空操作组 */ + cleanOperates: function () { + this.operates.splice(0, this.operates.length); + }, + + /** + * 判断操作步骤是否正确 + */ + judge: function (operate) { + let valid = false; + let steps = this.getSteps(); + let order = this.getOrder(); + if (order >= steps) { + return valid; + } + + let standard = steps[order]; + if (operate && standard && operate.code == standard.code && operate.type == standard.type + && operate.operation == standard.operation + && operate.val == standard.val) { + valid = true; + } + return valid; + }, + + /** + * 根据模式验证操作步骤 + */ + validate: function (operate) { + // 按钮操作之后,第二步错误操作菜单的情况,需要直接返回 + if ((this.operates.length && operate.start === true) && + (this.operates[0].type === 'mbm')) { + return false; + } + + //如果是正常的第一步操作,需要清空operates数组 + if (operate.type === 'mbm' || operate.type === 'bar' || operate.start === true) { + this.cleanOperates(); + } + + this.operates.push(operate); + + // 预处理 + let converter = getConverter(this.operates); + if (converter && converter.preHandle instanceof Function) { + operate = converter.preHandle(this.operates); + } + + let valid = true; + let mode = this.getTrainingMode(); + if (TrainingMode.EDIT === mode) { + // 编辑制作模式 + if (this.getOperateBreakStatus()) { + valid = false; + Message.error('请输入提示并点击下一步'); + this.operates.pop(); + return valid; + } + if (this.getTrainingStart()) { + store.dispatch('training/setTempStep', operate); + } + } else if (TrainingMode.TEACH === mode || TrainingMode.PRACTICE === mode) { + // 教学模式/练习模式 + if (this.getTrainingStart()) { + valid = this.judge(operate); + } else { + this.cleanOperates(); + valid = false; + } + } + + // 发送每一步的步骤数据; + let basicInfo = store.getters['training/basicInfo']; + if (basicInfo.id && valid) { + let group = router.currentRoute.query.group; + sendTrainingNextStep({ trainingId: basicInfo.id, operate: operate }, group); + } + + if (!valid) { + // 如果操作校验不正确,回退 + this.operates.pop(); + } else { + if (operate.cancel === true) { + this.cleanOperates(); + } + } + + return valid; + }, + handle: function (operate) { + return new Promise((resolve, reject) => { + let rtn = { valid: false, response: null }; + let valid = this.validate(operate); + + rtn.valid = valid; + + if (valid) { + // 改变状态开始请求 + OperateConverter.convertAndSend(operate).then(response => { + rtn.response = response; + resolve(rtn); + }).catch(error => { + reject(error); + }); + } else { + resolve(rtn); + } + }); + }, + getTrainingMode: function () { + return store.state.training.mode; + }, + getSteps: function () { + return store.state.training.steps; + }, + getOrder: function () { + return store.state.training.order; + }, + getTrainingStart: function () { + return store.state.training.started; + }, + getOperateBreakStatus: function () { + return store.state.menuOperation.break; + } +}; + +export default new OperateHandler(); \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js index 1c43beec7..cdf9ee6f9 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -6,8 +6,13 @@ import user from './modules/user'; import config from './modules/config'; import permission from './modules/permission'; import map from './modules/map'; -import training from './modules/training'; import menuOperation from './modules/menuoperation'; +import training from './modules/training'; +import trainingList from './modules/trainingList'; +import exam from './modules/exam'; +import runPlan from './modules/runplan'; +import socket from './modules/socket'; + import getters from './getters'; Vue.use(Vuex); @@ -20,8 +25,12 @@ const store = new Vuex.Store({ permission, config, map, + menuOperation, training, - menuOperation + trainingList, + exam, + runPlan, + socket }, getters }); diff --git a/src/store/modules/app.js b/src/store/modules/app.js index 13d84a576..f279b1a5e 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -5,7 +5,10 @@ const state = { opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true, withoutAnimation: false }, - device: 'desktop' + device: 'desktop', + course: [], + courseDetail: {}, + ruleList: [] }; const mutations = { @@ -25,6 +28,15 @@ const mutations = { }, TOGGLE_DEVICE: (state, device) => { state.device = device; + }, + HANDLECOURSE: (state, course) => { + state.course = course; + }, + HANDLECOURSEDETAIL: (state, courseDetail) => { + state.courseDetail = courseDetail; + }, + HANDLERULELIST: (state, ruleList) => { + state.ruleList = ruleList; } }; @@ -37,6 +49,15 @@ const actions = { }, toggleDevice({ commit }, device) { commit('TOGGLE_DEVICE', device); + }, + handleCourse({ commit }, course) { + commit('HANDLECOURSE', course); + }, + handleCourseDetail({ commit }, courseDetail) { + commit('HANDLECOURSEDETAIL', courseDetail); + }, + handleRuleList({ commit }, ruleList) { + commit('HANDLERULELIST', ruleList); } }; diff --git a/src/store/modules/exam.js b/src/store/modules/exam.js new file mode 100644 index 000000000..8ec9f2c50 --- /dev/null +++ b/src/store/modules/exam.js @@ -0,0 +1,100 @@ +import store from '@/store'; + +const exam = { + namespaced: true, + + state: { + started: false, //考试状态 + usedTime: 0, //考试当前所用时间 + totalTime: 0, //考试总时间 + timeInterval: null, //计时器 + suspend: false, //暂停 + }, + getters: { + started: (state) => { + return state.started; + }, + usedTime: (state) => { + return state.usedTime; + }, + totalTime: (state) => { + return state.totalTime; + }, + suspend: (state) => { + return state.suspend; + } + }, + mutations: { + setStarted: (state, started) => { + state.started = started; + }, + setSuspend: (state, suspend) => { + state.suspend = suspend; + }, + setUsedTime: (state, usedTime) => { + state.usedTime = usedTime; + }, + setTotalTime: (state, totalTime) => { + state.totalTime = totalTime; + }, + countUsedTime: (state) => { + if (state.timeInterval) { + clearInterval(state.timeInterval); + state.timeInterval = null; + } + state.timeInterval = setInterval(() => { + if (!state.suspend) { + state.usedTime++; + } + }, 1000); + }, + stopCountTime: (state) => { + if (state.timeInterval) { + clearInterval(state.timeInterval); + state.timeInterval = null; + } + } + }, + actions: { + start({ commit }) { + commit('setStarted', true); + commit('setSuspend', false); + commit('setUsedTime', 0); + commit('countUsedTime'); + }, + over({ commit }) { + commit('setStarted', false); + commit('setSuspend', true); + commit('setUsedTime', 0); + commit('stopCountTime'); + }, + isOver() { + let trainingList = store.getters['trainingList/trainingList']; + let doList = trainingList.filter(elem => { + if (elem.usedTime !== undefined) return true; + }); + + if (doList.length >= trainingList.length) { + return true; + } + }, + setSuspend({ commit }, suspend) { + commit('setSuspend', suspend); + }, + countUsedTime({ commit }) { + commit('countUsedTime'); + }, + setUsedTime({ state }, usedTime) { + if (usedTime) { + state.usedTime = usedTime; + } + }, + setTotalTime({ commit }, totalTime) { + if (totalTime) { + commit('setTotalTime', totalTime); + } + } + } +}; + +export default exam; \ No newline at end of file diff --git a/src/store/modules/runplan.js b/src/store/modules/runplan.js new file mode 100644 index 000000000..463484778 --- /dev/null +++ b/src/store/modules/runplan.js @@ -0,0 +1,140 @@ +const runPlan = { + namespaced: true, + + state: { + stations: [], //车站列表 + planData: {}, //运行图原始数据 + editData: {}, //运行图编辑数据 + updateData: {}, //运行图更新数据 + planSizeCount: 0, //运行图canvas 大小变更标识 + planLoadedCount: 0, //运行图数据更新 + planUpdateCount: 0, //运行图更新标识 + select: {}, //选择的对象 + width: 800, //运行图canvas 容器 宽度 + height: 600, //运行图canvas 容器 高度 + + }, + getters: { + stations: (state) => { + return state.stations || []; + }, + convertPlanData: (state) => () => { + let data = { serviceNumberDataList: [] }; + + let serviceNumberList = Object.keys(state.editData).sort((a, b) => { + return state.editData[a].oldIndex - state.editData[b].oldIndex; + }); + + serviceNumberList.forEach(serviceNumber => { + let serviceObj = { + serviceNumber: serviceNumber, + tripNumberDataList: [] + }; + + if (state.editData[serviceNumber].backup) { + serviceObj['backup'] = state.editData[serviceNumber].backup; + } + + let trainMap = state.editData[serviceNumber].trainMap; + let tripNumberList = Object.keys(trainMap).sort((a, b) => { + return trainMap[a].oldIndex - trainMap[b].oldIndex; + }); + + tripNumberList.forEach(tripNumber => { + serviceObj.tripNumberDataList.push(trainMap[tripNumber]); + }); + + data.serviceNumberDataList.push(serviceObj); + }); + + return data; + }, + + }, + mutations: { + setWidth: (state, width) => { + state.width = width; + state.planSizeCount += 1; + }, + setHeight: (state, height) => { + state.height = height; + state.planSizeCount += 1; + }, + setStations: (state, stations) => { + state.stations = stations; + }, + setPlanData: (state, data) => { + state.planData = data; + state.editData = {}; + if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) { + let serviceList = data.serviceNumberDataList; + serviceList.forEach((service, i) => { + let trainList = service.tripNumberDataList; + state.editData[service.serviceNumber] = { oldIndex: i, serviceNumber: service.serviceNumber, backup: service.backup, trainMap: {} }; + trainList.forEach((train, j) => { + state.editData[service.serviceNumber].trainMap[`${train.directionCode}${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, reentry: train.reentry, stationTimeList: train.stationTimeList }; + }); + }); + } + state.planLoadedCount++; + }, + setSelected: (state, select) => { + state.select = select; + }, + addserviceNumber: (state, serviceNumber) => { + let serviceObj = state.planData[serviceNumber]; + if (serviceObj) { + let oldIndex = serviceObj.oldIndex; + state.planData[serviceNumber] = { oldIndex, serviceNumber, trainMap: {} }; + state.planLoadedCount++; + } + }, + updateRunPlanData: (state, data) => { + state.updateData = data; + state.planUpdateCount++; + }, + clear: (state) => { + state.stations = []; + state.planData = {}; + state.editData = {}; + state.select = {}; + } + }, + actions: { + /** 设置运行图大小*/ + resize({ commit }, opt) { + if (opt.width) { + commit('setWidth', opt.width); + } + if (opt.height) { + commit('setHeight', opt.height); + } + }, + /** 设置stations数据 */ + setStations: ({ commit }, mapModel) => { + commit('setStations', mapModel); + }, + /** 设置运行图数据 */ + setPlanData: ({ commit }, data) => { + commit('setPlanData', data); + }, + /** 增加服务号*/ + addserviceNumber: ({ commit }, serviceNumber) => { + commit('addserviceNumber', serviceNumber); + }, + /** 选择车次*/ + setSelected: ({ commit }, select) => { + commit('setSelected', select); + }, + /** 更新数据*/ + updateRunPlanData: ({ commit }, data) => { + commit('updateRunPlanData', data); + }, + /** 清空数据*/ + clear: ({ commit }) => { + commit('clear'); + } + } +}; + +export default runPlan; diff --git a/src/store/modules/socket.js b/src/store/modules/socket.js new file mode 100644 index 000000000..d0f7281b2 --- /dev/null +++ b/src/store/modules/socket.js @@ -0,0 +1,390 @@ + +import store from '@/store'; + +function handle(state, data) { + // console.log(data, 'socket订阅'); + let msg = data.body; + switch (data.type) { + case 'Order_Pay_Result': { // 订单支付结果消息 + state.payOrder = msg; + } break; + case 'JointTraining_Room': { // 综合演练室-房间消息 + state.jointRoomInfo = msg; // 房间信息 + } break; + case 'JointTraining_User': { // 综合演练室-用户消息 + handleUserinfo(state, msg); // 分配角色权限消息 + } break; + case 'JointTraining_Chat': { // 综合演练室-群聊消息 + handleRecordList(state, msg); + } break; + case 'Simulation_DeviceStatus': { // 仿真-设备状态消息 + state.equipmentStatus = msg; + } break; + case 'Simulation_RunFact': { // 仿真-列车实际到发车站消息 + state.trainStationList = msg; + } break; + case 'Simulation_Error': { // 仿真-异常消息 + state.simulationError = msg; + } break; + case 'Simulation_RunAsPlan_Start': { // 仿真-仿真开始按计划行车消息 + state.simulationStart = msg; + } break; + case 'Simulation_Reset': { // 仿真-仿真重置消息 退出计划行车 + state.simulationReset = msg; + } break; + case 'Simulation_Conversation': { // 仿真-用户交互消息(聊天/命令) + handleSimulationInfo(state, msg); + } break; + case 'Simulation_PlayBack_Conversation': {// 回放-用户交互消息 + handleSimulationInfo(state, msg); + } break; + case 'Simulation_ApplyHandle': { // 请求处理消息 + handlePushMsgQueue(state, msg); + } break; + case 'JointTraining_User_Permit': { // 综合演练室-用户获取权限消息 + state.userPermit = msg; + } break; + case 'JointTraining_User_RoomKickOut': { // 综合演练室-用户被踢出房间消息 + state.userRoomKickOut = msg; // 没有给被踢用户发送 + handleMessageInfo(state, 'userRoomKickOut', msg); + } break; + case 'JointTraining_User_InRoom': { // 综合演练室-用户从外部进入房间消息 + state.userInRoom = msg; + handleMessageInfo(state, 'userInRoom', msg); + } break; + case 'JointTraining_User_OutRoom': { // 综合演练室-用户退出房间消息 + state.userOutRoom = msg; + handleMessageInfo(state, 'userOutRoom', msg); + } break; + case 'JointTraining_User_InSimulation': { // 综合演练室-用户进入仿真消息 + state.userInSimulation = msg; + handleMessageInfoSimulation(state, 'userInSimulation', msg); + } break; + case 'JointTraining_User_BackRoom': { // 综合演练室-用户从仿真返回房间消息 + state.userBackRoom = msg; + handleMessageInfoSimulation(state, 'userBackRoom', msg); + } break; + case 'JointTraining_Room_Invite': { // 综合演练室-房间邀请消息 + state.roomInvite = msg; + } break; + case 'Big_Screen_Simulation_DeviceStatus': { //大屏仿真状态数据 + state.equipmentStatus = msg; + } break; + case 'Big_Screen_Simulation_RunFact': { //大屏仿真运行图状态 + state.trainStationList = msg; + } break; + case 'Plan_Simulation_DeviceStatus': { //大屏仿真状态数据 + state.equipmentStatus = msg; + } break; + case 'Plan_Simulation_RunFact': { //大屏仿真运行图状态 + state.trainStationList = msg; + } break; + case 'Simulation_Permission_Over': { //权限结束 + state.permissionOver = msg; + } break; + case 'Simulation_Quest_Finish': { //任务结束标志 + state.tipOperateCount++; + } + } +} +// 操作聊天信息 +function handleRecordList(state, data) { + let userId = store.state.user.id; + let isSelf = false; + if (data.member.id == userId) { + isSelf = true; + } + let myDate = new Date(); + let myDate1 = myDate.toLocaleDateString().replace(/\//g, "-"); + let param = { + join: false, + value: data.message, + self: isSelf, + voice: data.isAudio, + src: data.isAudio ? `${process.env.VOICE_API}/jlcloud/audio/${data.audioPath}` : '', + other: !isSelf, + userName: data.member.nickName, + chatTime: data.chatTime, + chatInfo: true, + inSimulation: false, + inRoom: true, + date: +new Date(`${myDate1} ${data.chatTime}`), + }; + state.chatContentList = param; +} +// 仿真内部聊天 +function handleSimulationInfo(state, data) { + let userId = store.state.user.id; + let isSelf = false; + if (data.member.userId == userId) { + isSelf = true; + } + let role = ''; + switch (data.member.role) { + case '01': { + role = '管理员'; + } break; + case '02': { + role = '教员'; + } break; + case '03': { + role = `调度员`; + } break; + case '04': { + store.state.map.map.stationList.forEach(nor => { + if (nor.code == data.member.deviceCode) { + role = `${nor.name}`; + } + }); + } break; + } + if (!data.member.userId && data.member.deviceName) { + data.member.nickName = data.member.deviceName; + } + if (!data.targetMember.userId && data.targetMember.deviceName) { + data.targetMember.nickName = data.targetMember.deviceName; + } + let myDate = new Date(); + let myDate1 = myDate.toLocaleDateString().replace(/\//g, "-"); + let chatTime = /\d{2}:\d{2}:\d{2}/.exec(data.chatTime)[0] || data.chatTime; + let param = { + join: false, + value: data.message, + self: isSelf, + voice: data.isAudio, + src: data.isAudio ? `${process.env.VOICE_API}/jlcloud/audio/${data.audioPath}` : '', + other: !isSelf, + userName: '', + id: data.member.id, + chatTime: data.chatTime, + date: +new Date(`${myDate1} ${chatTime}`), + conversationId: data.conversationId, + changeVO: data.changeVO || {}, + targetMember: data.targetMember, + member: data.member, + group: data.group, + }; + if (data.member.role) { + param.userName = `${role}【${data.member.nickName}】`; + } else { + param.userName = `${data.member.nickName}`; + } + state.simulationText = param; +} +function handleUserinfo(state, data) { + if (data.length) { // 分配角色信息 + state.roleInfo = data; + } +} +function handleMessageInfo(state, type, data) { + let message = { + join: true, + id: data.id, + userName: data.nickName, + userRole: data.userRole, + name: data.name, + roomTip: '', + chatInfo: true, + inSimulation: data.inSimulation, + inRoom: data.inRoom, + session: 'session', + type: type, + oneself: data.id === store.state.user.id, + }; + switch (type) { + case 'userInRoom': { + message.roomTip = `${data.nickName}进入房间`; + } break; + case 'userRoomKickOut': { + message.roomTip = `${data.nickName}被踢出房间`; + } break; + case 'userOutRoom': { + message.roomTip = `${data.nickName}退出房间`; + } break; + } + state.chatContentList = message; +} +function handleMessageInfoSimulation(state, type, data) { + let message = { + join: true, + id: data.id, + userName: data.nickName, + userRole: data.userRole, + name: data.name, + simulationTip: '', + chatInfo: true, + inSimulation: data.inSimulation, + inRoom: data.inRoom, + session: 'session', + }; + switch (type) { + case 'userInSimulation': { + message.simulationTip = `${data.nickName}进入仿真`; + } break; + case 'userBackRoom': { + message.simulationTip = `${data.nickName}退出仿真`; + } break; + } + state.chatContentSimuList = message; +} +function handlePushMsgQueue(state, msg) { + if (msg instanceof Array) { + state.msgQueue.concat(msg); + } else { + state.msgQueue.push(msg); + } + + if (!state.msgHead) { + state.msgHead = state.msgQueue[0]; + } +} + +const socket = { + namespaced: true, + + state: { + payOrder: {}, // 支付消息 + jointRoomInfo: {}, // 受邀请房间信息 + chatContentList: {}, // 聊天室聊天内容 + roleInfo: [], // 设置角色信息 + jointRoomPrepare: false, // 演练房间准备状态 + equipmentStatus: [], // 仿真-设备状态消息 + trainStationList: [], // 仿真-列车实际到发车站消息 + simulationError: '', // 仿真-异常消息 + simulationStart: '', // 仿真-开始消息 + simulationReset: '', // 仿真-异常消息 + simulationText: {}, // 仿真-用户交互消息(聊天/命令) + message: {}, // 仿真聊天 + msgQueue: [], //命令请求列表 + msgHead: null, //消息头 + + userPermit: {}, // 用户获取权限消息 + userRoomKickOut: {}, // 用户被踢出房间消息 + userInRoom: {}, // 用户从外部进入房间消息 + userOutRoom: {}, // 用户退出房间消息 + userInSimulation: {}, // 用户进入仿真消息 + userBackRoom: {}, // 用户从仿真返回房间消息 + roomInvite: {}, // 用户扫码信息 + chatContentSimuList: {}, // 进入仿真,离开仿真信息 + + permissionOver: {}, // 权限结束 + + tipOperateCount: 0 // 任务结束提示消息 + }, + + getters: { + }, + mutations: { + setJointRoomInfo: (state, jointRoomInfo) => { + state.jointRoomInfo = jointRoomInfo; + }, + + setChatContentList: (state, chatContentList) => { + state.chatContentList = chatContentList; + }, + + setEquipmentStatus: (state, equipmentStatus) => { + state.equipmentStatus = equipmentStatus; + }, + + setTrainStationList: (state, trainStationList) => { + state.trainStationList = trainStationList; + }, + + setSimulationError: (state, simulationError) => { + state.simulationError = simulationError; + }, + + setSimulationStart: (state, simulationStart) => { + state.simulationStart = simulationStart; + }, + + setSimulationReset: (state, simulationReset) => { + state.simulationReset = simulationReset; + }, + + setSimulationTextList: (state, simulationText) => { + state.simulationText = simulationText; + }, + + setPayOrder: (state, payOrder) => { + state.payOrder = payOrder; + }, + + shiftMsgQueue: (state) => { + state.msgHead = null; + state.msgQueue.shift(); + state.msgHead = state.msgQueue[0]; + }, + pushMsgQueue: (state, msg) => { + handlePushMsgQueue(state, msg); + }, + + setRoomInvite: (state, roomInvite) => { + state.roomInvite = roomInvite; + } + }, + + actions: { + setStomp: ({ state }, res) => { + handle(state, res); + }, + + setChatContentList: ({ commit }, chatContentList) => { + commit('setChatContentList', chatContentList); + }, + + setJointRoomInfo: ({ commit }) => { + commit('setJointRoomInfo', {}); + }, + + setEquipmentStatus: ({ commit }) => { + commit('setEquipmentStatus', []); + }, + + setTrainStationList: ({ commit }) => { + commit('setTrainStationList', []); + }, + + setSimulationError: ({ commit }) => { + commit('setSimulationError', ''); + }, + + setSimulationStart: ({ commit }) => { + commit('setSimulationStart', ''); + }, + + setSimulationReset: ({ commit }) => { + commit('setSimulationReset', ''); + }, + + setSimulationTextList: ({ commit }) => { + commit('setSimulationTextList', {}); + }, + + setRoomInvite: ({ commit }) => { + commit('setRoomInvite', {}); + }, + + setMessage: ({ state }, data) => { + if (!state.message[data.key]) { + state.message[data.key] = []; + } + state.message[data.key].push(data.value); + }, + + setPayOrder: ({ commit }) => { + commit('setPayOrder', {}); + }, + + shiftMsgQueue: ({ commit }) => { + commit('shiftMsgQueue'); + }, + + pushMsgQueue: ({ commit }, msg) => { + commit('pushMsgQueue', msg); + } + }, +}; + +export default socket; diff --git a/src/store/modules/trainingList.js b/src/store/modules/trainingList.js new file mode 100644 index 000000000..743f19d5a --- /dev/null +++ b/src/store/modules/trainingList.js @@ -0,0 +1,66 @@ +const trainingList = { + namespaced: true, + + state: { + index: 0, //当前选择实训索引 + trainingList: [], //实训初始列表 + }, + getters: { + trainingList: (state) => { + return state.trainingList; + }, + prevTraining: (state) => () => { + if (state.trainingList && state.trainingList.length > 0) { + state.index = state.index - 1; + if (state.index >= 0) { + return state.trainingList[state.index]; + } + } + }, + nextTraining: (state) => () => { + if (state.trainingList && state.trainingList.length > 0) { + state.index = state.index + 1; + if (state.index < state.trainingList.length) { + return state.trainingList[state.index]; + } + } + } + }, + mutations: { + setIndex: (state, index) => { + state.index = index; + }, + setTrainingList: (state, trainingList) => { + if (trainingList && trainingList.length) { + state.trainingList = trainingList; + } else { + state.trainingList = []; + } + }, + }, + actions: { + setIndex({ commit }, index) { + commit('setIndex', index); + }, + setIndexByTrainingObj({ commit, state }, trainingId) { + let index = 0; + if (state.trainingList && state.trainingList.length) { + state.trainingList.forEach((elem, i) => { + if (elem.id === trainingId) { + index = i; + } + }); + } + commit('setIndex', index); + }, + setTrainingList({ commit }, trainingList) { + commit('setTrainingList', trainingList); + }, + clearTrainingList({ commit }) { + commit('setTrainingList', []); + commit('setIndex', 0); + } + } +}; + +export default trainingList; \ No newline at end of file diff --git a/src/store/modules/user.js b/src/store/modules/user.js index cef0155a9..9cac7c9be 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,8 +1,7 @@ import localStore from 'storejs'; import { login, logout, getInfo } from '@/api/login'; import { getToken, setToken, removeToken, removeScreenToken, setScreenToken, getScreenToken, setPlanToken, getPlanToken, removePlanToken, handleToken, handleRemoveToken } from '@/utils/auth'; -import { getUserConfigInfo } from '@/api/user'; -// import { creatSubscribe, perpetualTopic } from '@/utils/stomp'; +import { getUserConfigInfo } from '@/api/management/user'; import { LoginParams } from '@/utils/login'; const user = { diff --git a/src/utils/Blob.js b/src/utils/Blob.js new file mode 100644 index 000000000..26382ccd2 --- /dev/null +++ b/src/utils/Blob.js @@ -0,0 +1,179 @@ +/* eslint-disable */ +/* Blob.js + * A Blob implementation. + * 2014-05-27 + * + * By Eli Grey, http://eligrey.com + * By Devin Samarin, https://github.com/eboyjr + * License: X11/MIT + * See LICENSE.md + */ + +/*global self, unescape */ +/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, + plusplus: true */ + +/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ + +(function (view) { + "use strict"; + + view.URL = view.URL || view.webkitURL; + + if (view.Blob && view.URL) { + try { + new Blob; + return; + } catch (e) {} + } + + // Internally we use a BlobBuilder implementation to base Blob off of + // in order to support older browsers that only have BlobBuilder + var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) { + var + get_class = function(object) { + return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; + } + , FakeBlobBuilder = function BlobBuilder() { + this.data = []; + } + , FakeBlob = function Blob(data, type, encoding) { + this.data = data; + this.size = data.length; + this.type = type; + this.encoding = encoding; + } + , FBB_proto = FakeBlobBuilder.prototype + , FB_proto = FakeBlob.prototype + , FileReaderSync = view.FileReaderSync + , FileException = function(type) { + this.code = this[this.name = type]; + } + , file_ex_codes = ( + "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " + + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" + ).split(" ") + , file_ex_code = file_ex_codes.length + , real_URL = view.URL || view.webkitURL || view + , real_create_object_URL = real_URL.createObjectURL + , real_revoke_object_URL = real_URL.revokeObjectURL + , URL = real_URL + , btoa = view.btoa + , atob = view.atob + + , ArrayBuffer = view.ArrayBuffer + , Uint8Array = view.Uint8Array + ; + FakeBlob.fake = FB_proto.fake = true; + while (file_ex_code--) { + FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; + } + if (!real_URL.createObjectURL) { + URL = view.URL = {}; + } + URL.createObjectURL = function(blob) { + var + type = blob.type + , data_URI_header + ; + if (type === null) { + type = "application/octet-stream"; + } + if (blob instanceof FakeBlob) { + data_URI_header = "data:" + type; + if (blob.encoding === "base64") { + return data_URI_header + ";base64," + blob.data; + } else if (blob.encoding === "URI") { + return data_URI_header + "," + decodeURIComponent(blob.data); + } if (btoa) { + return data_URI_header + ";base64," + btoa(blob.data); + } else { + return data_URI_header + "," + encodeURIComponent(blob.data); + } + } else if (real_create_object_URL) { + return real_create_object_URL.call(real_URL, blob); + } + }; + URL.revokeObjectURL = function(object_URL) { + if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) { + real_revoke_object_URL.call(real_URL, object_URL); + } + }; + FBB_proto.append = function(data/*, endings*/) { + var bb = this.data; + // decode data to a binary string + if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) { + var + str = "" + , buf = new Uint8Array(data) + , i = 0 + , buf_len = buf.length + ; + for (; i < buf_len; i++) { + str += String.fromCharCode(buf[i]); + } + bb.push(str); + } else if (get_class(data) === "Blob" || get_class(data) === "File") { + if (FileReaderSync) { + var fr = new FileReaderSync; + bb.push(fr.readAsBinaryString(data)); + } else { + // async FileReader won't work as BlobBuilder is sync + throw new FileException("NOT_READABLE_ERR"); + } + } else if (data instanceof FakeBlob) { + if (data.encoding === "base64" && atob) { + bb.push(atob(data.data)); + } else if (data.encoding === "URI") { + bb.push(decodeURIComponent(data.data)); + } else if (data.encoding === "raw") { + bb.push(data.data); + } + } else { + if (typeof data !== "string") { + data += ""; // convert unsupported types to strings + } + // decode UTF-16 to binary string + bb.push(unescape(encodeURIComponent(data))); + } + }; + FBB_proto.getBlob = function(type) { + if (!arguments.length) { + type = null; + } + return new FakeBlob(this.data.join(""), type, "raw"); + }; + FBB_proto.toString = function() { + return "[object BlobBuilder]"; + }; + FB_proto.slice = function(start, end, type) { + var args = arguments.length; + if (args < 3) { + type = null; + } + return new FakeBlob( + this.data.slice(start, args > 1 ? end : this.data.length) + , type + , this.encoding + ); + }; + FB_proto.toString = function() { + return "[object Blob]"; + }; + FB_proto.close = function() { + this.size = this.data.length = 0; + }; + return FakeBlobBuilder; + }(view)); + + view.Blob = function Blob(blobParts, options) { + var type = options ? (options.type || "") : ""; + var builder = new BlobBuilder(); + if (blobParts) { + for (var i = 0, len = blobParts.length; i < len; i++) { + builder.append(blobParts[i]); + } + } + return builder.getBlob(type); + }; +}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this)); diff --git a/src/utils/HZRecorder.js b/src/utils/HZRecorder.js new file mode 100644 index 000000000..ff19ac2a4 --- /dev/null +++ b/src/utils/HZRecorder.js @@ -0,0 +1,204 @@ + +//兼容 +window.URL = window.URL || window.webkitURL; +navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; + +export function init(stream, config) { + config = config || {}; + config.sampleBits = config.sampleBits || 16; //采样数位 8, 16 + config.sampleRate = config.sampleRate || (16000); //采样率(1/6 44100) + + var context = new (window.webkitAudioContext || window.AudioContext)(); + var audioInput = context.createMediaStreamSource(stream); + var createScript = context.createScriptProcessor || context.createJavaScriptNode; + var recorder = createScript.apply(context, [4096, 1, 1]); + + var audioData = { + size: 0 //录音文件长度 + , buffer: [] //录音缓存 + , inputSampleRate: context.sampleRate //输入采样率 + , inputSampleBits: 16 //输入采样数位 8, 16 + , outputSampleRate: config.sampleRate //输出采样率 + , oututSampleBits: config.sampleBits //输出采样数位 8, 16 + , input: function (data) { + this.buffer.push(new Float32Array(data)); + this.size += data.length; + } + , compress: function () { //合并压缩 + //合并 + var data = new Float32Array(this.size); + var offset = 0; + for (var i = 0; i < this.buffer.length; i++) { + data.set(this.buffer[i], offset); + offset += this.buffer[i].length; + } + //压缩 + var compression = parseInt(this.inputSampleRate / this.outputSampleRate); + var length = data.length / compression; + var result = new Float32Array(length); + var index = 0, j = 0; + while (index < length) { + result[index] = data[j]; + j += compression; + index++; + } + return result; + } + , encodeWAV: function () { + var sampleRate = Math.min(this.inputSampleRate, this.outputSampleRate); + var sampleBits = Math.min(this.inputSampleBits, this.oututSampleBits); + var bytes = this.compress(); + var dataLength = bytes.length * (sampleBits / 8); + var buffer = new ArrayBuffer(44 + dataLength); + var data = new DataView(buffer); + + var channelCount = 1;//单声道 + var offset = 0; + + var writeString = function (str) { + for (var i = 0; i < str.length; i++) { + data.setUint8(offset + i, str.charCodeAt(i)); + } + }; + + // 资源交换文件标识符 + writeString('RIFF'); offset += 4; + // 下个地址开始到文件尾总字节数,即文件大小-8 + data.setUint32(offset, 36 + dataLength, true); offset += 4; + // WAV文件标志 + writeString('WAVE'); offset += 4; + // 波形格式标志 + writeString('fmt '); offset += 4; + // 过滤字节,一般为 0x10 = 16 + data.setUint32(offset, 16, true); offset += 4; + // 格式类别 (PCM形式采样数据) + data.setUint16(offset, 1, true); offset += 2; + // 通道数 + data.setUint16(offset, channelCount, true); offset += 2; + // 采样率,每秒样本数,表示每个通道的播放速度 + data.setUint32(offset, sampleRate, true); offset += 4; + // 波形数据传输率 (每秒平均字节数) 单声道×每秒数据位数×每样本数据位/8 + data.setUint32(offset, channelCount * sampleRate * (sampleBits / 8), true); offset += 4; + // 快数据调整数 采样一次占用字节数 单声道×每样本的数据位数/8 + data.setUint16(offset, channelCount * (sampleBits / 8), true); offset += 2; + // 每样本数据位数 + data.setUint16(offset, sampleBits, true); offset += 2; + // 数据标识符 + writeString('data'); offset += 4; + // 采样数据总数,即数据总大小-44 + data.setUint32(offset, dataLength, true); offset += 4; + // 写入采样数据 + if (sampleBits === 8) { + for (let i = 0; i < bytes.length; i++ , offset++) { + let s = Math.max(-1, Math.min(1, bytes[i])); + let val = s < 0 ? s * 0x8000 : s * 0x7FFF; + val = parseInt(255 / (65535 / (val + 32768))); + data.setInt8(offset, val, true); + } + } else { + for (let i = 0; i < bytes.length; i++ , offset += 2) { + let s = Math.max(-1, Math.min(1, bytes[i])); + data.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true); + } + } + + return new Blob([data], { type: 'audio/wav' }); + } + }; + + //开始录音 + this.start = function () { + audioInput.connect(recorder); + recorder.connect(context.destination); + }; + + //停止 + this.stop = function () { + recorder.disconnect(); + }; + + //获取音频文件 + this.getBlob = function () { + this.stop(); + return audioData.encodeWAV(); + }; + + //回放 + this.play = function (audio) { + audio.src = window.URL.createObjectURL(this.getBlob()); + }; + + //上传 + this.upload = function (url, callback) { + var fd = new FormData(); + fd.append("audioData", this.getBlob()); + var xhr = new XMLHttpRequest(); + if (callback) { + xhr.upload.addEventListener("progress", function (e) { + callback('uploading', e); + }, false); + xhr.addEventListener("load", function (e) { + callback('ok', e); + }, false); + xhr.addEventListener("error", function (e) { + callback('error', e); + }, false); + xhr.addEventListener("abort", function (e) { + callback('cancel', e); + }, false); + } + xhr.open("POST", url); + xhr.send(fd); + }; + + //音频采集 + recorder.onaudioprocess = function (e) { + audioData.input(e.inputBuffer.getChannelData(0)); + //record(e.inputBuffer.getChannelData(0)); + }; + +} +//抛出异常 +init.throwError = function (message, callback) { + alert(message); + callback('1001'); + // throw new function () { this.toString = function () { return message; }; }; +}; +//是否支持录音 +init.canRecording = (navigator.getUserMedia != null); +//获取录音机 +init.get = function (callback, config) { + if (callback) { + if (navigator.getUserMedia) { + navigator.getUserMedia( + { audio: true } //只启用音频 + , function (stream) { + var rec = new init(stream, config); + callback(rec); + } + , function (error) { + switch (error.code || error.name) { + case 'PERMISSION_DENIED': + case 'PermissionDeniedError': + init.throwError('用户拒绝提供信息。'); + break; + case 'NOT_SUPPORTED_ERROR': + case 'NotSupportedError': + init.throwError('浏览器不支持硬件设备。', callback); + break; + case 'MANDATORY_UNSATISFIED_ERROR': + case 'MandatoryUnsatisfiedError': + init.throwError('无法发现指定的硬件设备。', callback); + break; + default: + init.throwError('无法打开麦克风。', callback); + break; + } + }); + } else { + init.throwErr('当前浏览器不支持录音功能。'); return; + } + } +}; + +export default { init }; \ No newline at end of file diff --git a/src/utils/animation.js b/src/utils/animation.js new file mode 100644 index 000000000..ee2d10b11 --- /dev/null +++ b/src/utils/animation.js @@ -0,0 +1,13 @@ +export const requestAnimationFrame = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function (callback) { callback.timter = window.setTimeout(callback, 1000 / 60); }; + +export const cancelRequestAnimFrame = window.cancelAnimationFrame || + window.webkitCancelRequestAnimationFrame || + window.mozCancelRequestAnimationFrame || + window.oCancelRequestAnimationFrame || + window.msCancelRequestAnimationFrame || + function (callback) { window.clearTimeout(callback); }; diff --git a/src/utils/chatFomat.js b/src/utils/chatFomat.js new file mode 100644 index 000000000..8deb5c114 --- /dev/null +++ b/src/utils/chatFomat.js @@ -0,0 +1,33 @@ +var ChatFomat = { + roleConfig: { + 'Admin': '管理员', + 'Instructor': '教员', + 'Dispatcher': '行调', + 'Attendant': '车站', + 'Audience': '观众', + 'Driver': '列车' + }, + formatTime(time) { + return /\d{2}:\d{2}:\d{2}/.exec(time)[0] || time; + }, + formatName(member) { + let name = `${member.nickName}`; + if (member.id) { + name = `【${this.roleConfig[member.role] || ''}】${name}`; + } + return name; + }, + formatSay(nor) { + let who = ''; + if (nor.group) { + if (nor.targetMember) { + who = `@${nor.targetMember.nickName}`; + } else { + who = '@ALL'; + } + } + return `${who} ${nor.value}`; + } +}; + +export default ChatFomat; diff --git a/src/utils/date.js b/src/utils/date.js new file mode 100644 index 000000000..dc52ba841 --- /dev/null +++ b/src/utils/date.js @@ -0,0 +1,40 @@ +export function now() { + var d = new Date(); + var year = d.getFullYear(); + var month = change(d.getMonth() + 1); + var day = change(d.getDate()); + var hour = change(d.getHours()); + var minute = change(d.getMinutes()); + var second = change(d.getSeconds()); + function change(t) { + if (t < 10) { + return "0" + t; + } else { + return t; + } + } + return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; +} + +export function timeFormat(usedTime) { + let hour = 0, minute = 0, second = 0, sumTime = usedTime; + if (sumTime) { + if (sumTime >= 3600) { + hour = Math.floor(sumTime / 3600) % 24; + sumTime = (sumTime % 3600); + } + if (sumTime >= 60) { + minute = Math.floor(sumTime / 60); + sumTime = sumTime % 60; + } + second = Math.floor(sumTime); + } + function getTimeStr(val) { + return val < 10 ? '0' + val : val; + } + return getTimeStr(hour) + ':' + getTimeStr(minute) + ':' + getTimeStr(second); +} + +export function prefixIntrger(num, length) { + return (Array(length).join('0') + num).slice(-length); +} \ No newline at end of file diff --git a/src/utils/loaddata.js b/src/utils/loaddata.js new file mode 100644 index 000000000..2de62589a --- /dev/null +++ b/src/utils/loaddata.js @@ -0,0 +1,36 @@ +import store from '@/store'; +import { getPublishMapVersion, getPublishMapDetail } from '@/api/jmap/map'; + +// 获取地图版本数据,和store里面的map版本做比较,如果不同 +// 获取发布的地图数据 +// 先设置地图数据 +// 清除列车数据 +export function loadMapData(skinStyle) { + return new Promise((resolve, reject) => { + getPublishMapVersion(skinStyle).then(resp => { + let version = resp.data; + let mapData = store.state.map.mapData[`mapDate_${skinStyle}`]; + if (mapData && mapData.version == version) { + store.dispatch('map/setMapData', mapData).then(() => { + store.dispatch('map/clearJlmapTrainView').then(() => { + resolve(); + }); + }); + } else { + getPublishMapDetail(skinStyle).then(res => { + mapData = res.data; + store.dispatch('map/setMapDataList', mapData); // 缓存地图 + store.dispatch('map/setMapData', mapData).then(() => { + store.dispatch('map/clearJlmapTrainView').then(() => { + resolve(); + }); + }); + }).catch(error => { + reject(error); + }); + } + }).catch(error => { + reject(error); + }); + }); +} diff --git a/src/utils/screen.js b/src/utils/screen.js new file mode 100644 index 000000000..30254f094 --- /dev/null +++ b/src/utils/screen.js @@ -0,0 +1,52 @@ +//判断全屏模式是否是可用 +export function isFullscreenEnabled() { + return document.fullscreenEnabled || + document.mozFullScreenEnabled || + document.webkitFullscreenEnabled || + document.msFullscreenEnabled || false; +} + +//判断浏览器是否全屏 +export function isFullscreen() { + return document.fullscreenElement || + document.msFullscreenElement || + document.mozFullScreenElement || + document.webkitFullscreenElement || false; +} + +//启动全屏 +export function launchFullscreen() { + if (isFullscreenEnabled()) { + let element = document.documentElement; + if (element.requestFullScreen) { + element.requestFullScreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.msRequestFullscreen) { + element.msRequestFullscreen(); + } else if (element.oRequestFullscreen) { + element.oRequestFullscreen(); + } else if (element.webkitRequestFullScreen) { + element.webkitRequestFullScreen(); + } + } +} + +//退出全屏 +export function exitFullscreen() { + if (isFullscreen()) { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.mozExitFullScreen) { + document.mozExitFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + } +} + + diff --git a/src/views/components/filterCity/index.vue b/src/views/components/filterCity/index.vue new file mode 100644 index 000000000..0cf1381f7 --- /dev/null +++ b/src/views/components/filterCity/index.vue @@ -0,0 +1,221 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/limits/distribute.vue b/src/views/components/limits/distribute.vue new file mode 100644 index 000000000..5db734b4a --- /dev/null +++ b/src/views/components/limits/distribute.vue @@ -0,0 +1,203 @@ + + + \ No newline at end of file diff --git a/src/views/components/limits/index.vue b/src/views/components/limits/index.vue new file mode 100644 index 000000000..c63486dde --- /dev/null +++ b/src/views/components/limits/index.vue @@ -0,0 +1,140 @@ + + + \ No newline at end of file diff --git a/src/views/components/limits/transfer.vue b/src/views/components/limits/transfer.vue new file mode 100644 index 000000000..ac1448a9e --- /dev/null +++ b/src/views/components/limits/transfer.vue @@ -0,0 +1,209 @@ + + + \ No newline at end of file diff --git a/src/views/components/pay/commit.vue b/src/views/components/pay/commit.vue new file mode 100644 index 000000000..c8056a0cd --- /dev/null +++ b/src/views/components/pay/commit.vue @@ -0,0 +1,192 @@ + + + \ No newline at end of file diff --git a/src/views/components/pay/confirm.vue b/src/views/components/pay/confirm.vue new file mode 100644 index 000000000..10911a614 --- /dev/null +++ b/src/views/components/pay/confirm.vue @@ -0,0 +1,295 @@ + + + + \ No newline at end of file diff --git a/src/views/components/pay/finish.vue b/src/views/components/pay/finish.vue new file mode 100644 index 000000000..4f77df7ef --- /dev/null +++ b/src/views/components/pay/finish.vue @@ -0,0 +1,78 @@ + + + \ No newline at end of file diff --git a/src/views/components/pay/index.vue b/src/views/components/pay/index.vue new file mode 100644 index 000000000..7f0a6d01b --- /dev/null +++ b/src/views/components/pay/index.vue @@ -0,0 +1,125 @@ + + + \ No newline at end of file diff --git a/src/views/components/quickMenu/index.vue b/src/views/components/quickMenu/index.vue new file mode 100644 index 000000000..eeb6a895e --- /dev/null +++ b/src/views/components/quickMenu/index.vue @@ -0,0 +1,448 @@ + + + \ No newline at end of file diff --git a/src/views/components/systemTime/digit.vue b/src/views/components/systemTime/digit.vue new file mode 100644 index 000000000..8442e7c83 --- /dev/null +++ b/src/views/components/systemTime/digit.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/systemTime/index.vue b/src/views/components/systemTime/index.vue new file mode 100644 index 000000000..0a0cef9d9 --- /dev/null +++ b/src/views/components/systemTime/index.vue @@ -0,0 +1,80 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/systemTime/point.vue b/src/views/components/systemTime/point.vue new file mode 100644 index 000000000..888730e2e --- /dev/null +++ b/src/views/components/systemTime/point.vue @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/systemTime/separator.vue b/src/views/components/systemTime/separator.vue new file mode 100644 index 000000000..710c219fd --- /dev/null +++ b/src/views/components/systemTime/separator.vue @@ -0,0 +1,51 @@ + + + + + \ No newline at end of file diff --git a/src/views/demonstration/deomonList/index.vue b/src/views/demonstration/deomonList/index.vue new file mode 100644 index 000000000..4dc89cf18 --- /dev/null +++ b/src/views/demonstration/deomonList/index.vue @@ -0,0 +1,121 @@ + + + + + \ No newline at end of file diff --git a/src/views/demonstration/deomonTopic/index.vue b/src/views/demonstration/deomonTopic/index.vue new file mode 100644 index 000000000..2c3e4080c --- /dev/null +++ b/src/views/demonstration/deomonTopic/index.vue @@ -0,0 +1,77 @@ + + + + + \ No newline at end of file diff --git a/src/views/demonstration/detail/index.vue b/src/views/demonstration/detail/index.vue new file mode 100644 index 000000000..855a4523d --- /dev/null +++ b/src/views/demonstration/detail/index.vue @@ -0,0 +1,358 @@ + + + + \ No newline at end of file diff --git a/src/views/demonstration/home.vue b/src/views/demonstration/home.vue new file mode 100644 index 000000000..59ddee229 --- /dev/null +++ b/src/views/demonstration/home.vue @@ -0,0 +1,104 @@ + + + + \ No newline at end of file diff --git a/src/views/demonstration/index.vue b/src/views/demonstration/index.vue new file mode 100644 index 000000000..984c12f1a --- /dev/null +++ b/src/views/demonstration/index.vue @@ -0,0 +1,78 @@ + + + + diff --git a/src/views/demonstration/list/demonList.vue b/src/views/demonstration/list/demonList.vue new file mode 100644 index 000000000..088c27cbd --- /dev/null +++ b/src/views/demonstration/list/demonList.vue @@ -0,0 +1,138 @@ + + + + \ No newline at end of file diff --git a/src/views/display/demon/addQuest.vue b/src/views/display/demon/addQuest.vue new file mode 100644 index 000000000..6c93cd7e4 --- /dev/null +++ b/src/views/display/demon/addQuest.vue @@ -0,0 +1,137 @@ + + + \ No newline at end of file diff --git a/src/views/display/demon/chartView.vue b/src/views/display/demon/chartView.vue new file mode 100644 index 000000000..2ccc2e89a --- /dev/null +++ b/src/views/display/demon/chartView.vue @@ -0,0 +1,678 @@ + + + + + \ No newline at end of file diff --git a/src/views/display/demon/chatBox.vue b/src/views/display/demon/chatBox.vue new file mode 100644 index 000000000..92e126600 --- /dev/null +++ b/src/views/display/demon/chatBox.vue @@ -0,0 +1,532 @@ + + + + + \ No newline at end of file diff --git a/src/views/display/demon/faultChoose.vue b/src/views/display/demon/faultChoose.vue new file mode 100644 index 000000000..eab52f2c0 --- /dev/null +++ b/src/views/display/demon/faultChoose.vue @@ -0,0 +1,162 @@ + + + + \ No newline at end of file diff --git a/src/views/display/demon/runPlanLoad.vue b/src/views/display/demon/runPlanLoad.vue new file mode 100644 index 000000000..118c3aff4 --- /dev/null +++ b/src/views/display/demon/runPlanLoad.vue @@ -0,0 +1,67 @@ + + + + \ No newline at end of file diff --git a/src/views/display/demon/runPlanView.vue b/src/views/display/demon/runPlanView.vue new file mode 100644 index 000000000..a4f5ce866 --- /dev/null +++ b/src/views/display/demon/runPlanView.vue @@ -0,0 +1,351 @@ + + + + \ No newline at end of file diff --git a/src/views/display/demon/setTime.vue b/src/views/display/demon/setTime.vue new file mode 100644 index 000000000..334a938ac --- /dev/null +++ b/src/views/display/demon/setTime.vue @@ -0,0 +1,113 @@ + + + \ No newline at end of file diff --git a/src/views/display/index.vue b/src/views/display/index.vue new file mode 100644 index 000000000..88e74915c --- /dev/null +++ b/src/views/display/index.vue @@ -0,0 +1,540 @@ + + + + \ No newline at end of file diff --git a/src/views/display/menuDemon.vue b/src/views/display/menuDemon.vue new file mode 100644 index 000000000..e9bd23739 --- /dev/null +++ b/src/views/display/menuDemon.vue @@ -0,0 +1,250 @@ + + + + + \ No newline at end of file diff --git a/src/views/display/menuExam.vue b/src/views/display/menuExam.vue new file mode 100644 index 000000000..2b85312b3 --- /dev/null +++ b/src/views/display/menuExam.vue @@ -0,0 +1,295 @@ + + + + \ No newline at end of file diff --git a/src/views/display/menuLesson.vue b/src/views/display/menuLesson.vue new file mode 100644 index 000000000..2b0705f7d --- /dev/null +++ b/src/views/display/menuLesson.vue @@ -0,0 +1,274 @@ + + + + \ No newline at end of file diff --git a/src/views/display/menuPlan.vue b/src/views/display/menuPlan.vue new file mode 100644 index 000000000..d37342efc --- /dev/null +++ b/src/views/display/menuPlan.vue @@ -0,0 +1,145 @@ + + + + \ No newline at end of file diff --git a/src/views/display/menuReplay.vue b/src/views/display/menuReplay.vue new file mode 100644 index 000000000..8efd7695b --- /dev/null +++ b/src/views/display/menuReplay.vue @@ -0,0 +1,176 @@ + + + + + \ No newline at end of file diff --git a/src/views/display/menuSchema.vue b/src/views/display/menuSchema.vue new file mode 100644 index 000000000..4876d3757 --- /dev/null +++ b/src/views/display/menuSchema.vue @@ -0,0 +1,155 @@ + + + \ No newline at end of file diff --git a/src/views/display/menuScreen.vue b/src/views/display/menuScreen.vue new file mode 100644 index 000000000..5a7e8df7f --- /dev/null +++ b/src/views/display/menuScreen.vue @@ -0,0 +1,156 @@ + + + + \ No newline at end of file diff --git a/src/views/display/menuScript.vue b/src/views/display/menuScript.vue new file mode 100644 index 000000000..79bf8b641 --- /dev/null +++ b/src/views/display/menuScript.vue @@ -0,0 +1,188 @@ + + + + + \ No newline at end of file diff --git a/src/views/display/menuSystemTime.vue b/src/views/display/menuSystemTime.vue new file mode 100644 index 000000000..c7d0f8e1d --- /dev/null +++ b/src/views/display/menuSystemTime.vue @@ -0,0 +1,78 @@ + + + + \ No newline at end of file diff --git a/src/views/display/scriptRecord/addAction.vue b/src/views/display/scriptRecord/addAction.vue new file mode 100644 index 000000000..ead8c36a1 --- /dev/null +++ b/src/views/display/scriptRecord/addAction.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/views/display/scriptRecord/addBehavior.vue b/src/views/display/scriptRecord/addBehavior.vue new file mode 100644 index 000000000..19a405745 --- /dev/null +++ b/src/views/display/scriptRecord/addBehavior.vue @@ -0,0 +1,200 @@ + + + \ No newline at end of file diff --git a/src/views/display/scriptRecord/getAction.vue b/src/views/display/scriptRecord/getAction.vue new file mode 100644 index 000000000..5d27fc21b --- /dev/null +++ b/src/views/display/scriptRecord/getAction.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/views/display/scriptRecord/getBehavior.vue b/src/views/display/scriptRecord/getBehavior.vue new file mode 100644 index 000000000..ef961f198 --- /dev/null +++ b/src/views/display/scriptRecord/getBehavior.vue @@ -0,0 +1,135 @@ + + + \ No newline at end of file diff --git a/src/views/display/scriptRecord/roleSection.vue b/src/views/display/scriptRecord/roleSection.vue new file mode 100644 index 000000000..42df33b39 --- /dev/null +++ b/src/views/display/scriptRecord/roleSection.vue @@ -0,0 +1,194 @@ + + + diff --git a/src/views/display/scriptRecord/targetCondition.vue b/src/views/display/scriptRecord/targetCondition.vue new file mode 100644 index 000000000..8a4bc5030 --- /dev/null +++ b/src/views/display/scriptRecord/targetCondition.vue @@ -0,0 +1,243 @@ + + + + + \ No newline at end of file diff --git a/src/views/display/tipExamList.vue b/src/views/display/tipExamList.vue new file mode 100644 index 000000000..bb3e50a05 --- /dev/null +++ b/src/views/display/tipExamList.vue @@ -0,0 +1,391 @@ + + + + \ No newline at end of file diff --git a/src/views/display/tipQuestDetail.vue b/src/views/display/tipQuestDetail.vue new file mode 100644 index 000000000..e46d91c86 --- /dev/null +++ b/src/views/display/tipQuestDetail.vue @@ -0,0 +1,204 @@ + + + + \ No newline at end of file diff --git a/src/views/display/tipScriptRecord.vue b/src/views/display/tipScriptRecord.vue new file mode 100644 index 000000000..0c5fd9c2b --- /dev/null +++ b/src/views/display/tipScriptRecord.vue @@ -0,0 +1,310 @@ + + + + \ No newline at end of file diff --git a/src/views/display/tipTrainingDetail.vue b/src/views/display/tipTrainingDetail.vue new file mode 100644 index 000000000..501cb22fc --- /dev/null +++ b/src/views/display/tipTrainingDetail.vue @@ -0,0 +1,268 @@ + + + + \ No newline at end of file diff --git a/src/views/exam/detail/courseDetail.vue b/src/views/exam/detail/courseDetail.vue new file mode 100644 index 000000000..06703ea7b --- /dev/null +++ b/src/views/exam/detail/courseDetail.vue @@ -0,0 +1,171 @@ + + + \ No newline at end of file diff --git a/src/views/exam/detail/examDetail.vue b/src/views/exam/detail/examDetail.vue new file mode 100644 index 000000000..78a1503c3 --- /dev/null +++ b/src/views/exam/detail/examDetail.vue @@ -0,0 +1,294 @@ + + + \ No newline at end of file diff --git a/src/views/exam/detail/questionDetail.vue b/src/views/exam/detail/questionDetail.vue new file mode 100644 index 000000000..18182c736 --- /dev/null +++ b/src/views/exam/detail/questionDetail.vue @@ -0,0 +1,163 @@ + + + \ No newline at end of file diff --git a/src/views/exam/home.vue b/src/views/exam/home.vue new file mode 100644 index 000000000..3109d88f5 --- /dev/null +++ b/src/views/exam/home.vue @@ -0,0 +1,106 @@ + + + + \ No newline at end of file diff --git a/src/views/exam/index.vue b/src/views/exam/index.vue new file mode 100644 index 000000000..a7f9a5ced --- /dev/null +++ b/src/views/exam/index.vue @@ -0,0 +1,108 @@ + + + + \ No newline at end of file diff --git a/src/views/exam/list/examList.vue b/src/views/exam/list/examList.vue new file mode 100644 index 000000000..61cc25e8c --- /dev/null +++ b/src/views/exam/list/examList.vue @@ -0,0 +1,145 @@ + + + + \ No newline at end of file diff --git a/src/views/exam/list/questionList.vue b/src/views/exam/list/questionList.vue new file mode 100644 index 000000000..03c1d2ff9 --- /dev/null +++ b/src/views/exam/list/questionList.vue @@ -0,0 +1,124 @@ + + + \ No newline at end of file diff --git a/src/views/exam/result.vue b/src/views/exam/result.vue new file mode 100644 index 000000000..a1c264ed8 --- /dev/null +++ b/src/views/exam/result.vue @@ -0,0 +1,140 @@ + + + \ No newline at end of file diff --git a/src/views/index.js b/src/views/index.js new file mode 100644 index 000000000..55af6d062 --- /dev/null +++ b/src/views/index.js @@ -0,0 +1,974 @@ +/* eslint-disable no-unused-vars */ +import Vue from 'vue'; +import Router from 'vue-router'; + +// in development-env not use lazy-loading, because lazy-loading too many pages will cause webpack hot update too slow. so only in production use lazy-loading; +// detail: https://panjiachen.github.io/vue-element-admin-site/#/lazy-loading + +Vue.use(Router); + +/* Dashboard */ +import Dashboard from '@/views/dashboard/index.vue'; + +/* Layout */ +import Layout from '@/views/layout/Layout'; +import Login from '@/views/login/index'; +import LoginNew from '@/views/login/loginNew'; +import Page404 from '@/views/404'; + +import LoginScreen from '@/views/login/loginScreen'; +import LoginNewScreen from '@/views/login/loginNewScreen'; + +import LoginPlan from '@/views/login/loginPlan'; +import LoginNewPlan from '@/views/login/loginNewPlan'; + + +//地图绘制 +import MapManage from '@/views/map/mapdraft/index'; +import MapEdit from '@/views/map/mapdraft/mapedit/index'; +import SkinStyle from '@/views/map/skinStyle/index'; +import SkinStyleDraft from '@/views/map/skinStyle/draft'; + +//列车运行表 +import ListPlan from '@/views/map/runplan/index'; +//运行图视图 +import ViewPlan from '@/views/map/runplan/chart'; + +//实训管理和编辑 +import TrainingManage from '@/views/lesson/trainingrecord/index'; +import TrainingEdit from '@/views/lesson/trainingrecord/manage/index'; +//产品管理 +import TrainingCategory from '@/views/lesson/trainingcategory/index'; +import ProductList from '@/views/map/product/list'; +import ProductDraft from '@/views/map/product/draft'; + +//课程管理 +import LessonCategory from '@/views/lesson/lessoncategory/index'; +//自动生成实训 +import TrainingGeneration from '@/views/lesson/trainingmanage/index'; +import TrainingRule from '@/views/lesson/trainingRule/list'; +import TrainingRuleDetail from '@/views/lesson/trainingRule/detail/index'; + +//购买页面 +import PayPage from '@/views/components/pay/index'; + +//教学系统 +import Teach from '@/views/teach/index'; +import TeachHome from '@/views/teach/home'; +import TeachDetail from '@/views/teach/detail/index'; +import TeachPracticalDetail from '@/views/teach/practical/index'; +import TaskManageList from '@/views/lesson/taskmanage/list'; +import ScriptManage from '@/views/lesson/scriptmanage/list'; + +//考试系统 +import Exam from '@/views/exam/index'; +import ExamHome from '@/views/exam/home'; +import ExamDetail from '@/views/exam/detail/examDetail'; +import ExamCourseDetail from '@/views/exam/detail/courseDetail'; +import ExamQuestionDetail from '@/views/exam/detail/questionDetail'; +import ExamResult from '@/views/exam/result'; + +//考试规则 +import ExamRuleList from '@/views/publish/examRule/index'; +import ExamRuleDraft from '@/views/publish/examRule/draft/index'; + +//仿真系统 +import Demonstration from '@/views/demonstration/index'; +import DemonstrationHome from '@/views/demonstration/home'; +import DemonstrationDetail from '@/views/demonstration/detail/index'; + +//大屏系统 +import ScreenMonitor from '@/views/screenMonitor/index'; +import ScreenMonitorHome from '@/views/screenMonitor/home'; +import ScreenMonitorDetail from '@/views/screenMonitor/detail/index'; + +//琏计划系统 +import PlanMonitor from '@/views/planMonitor/index'; +import PlanMonitorHome from '@/views/planMonitor/home'; +import PlanMonitorDetail from '@/views/planMonitor/detail'; +import PlanEditTool from '@/views/planMonitor/editTool/index'; + +//回放管理 +import replay from '@/views/replay/index'; + +//权限管理 +import PermissionList from '@/views/package/index'; +import PermissionDraft from '@/views/package/draft/ruleForm'; + +// 产品状态管理 +import ProductStatus from '@/views/publish/productStatus/index'; +// 发布地图管理 +import PublishMap from '@/views/publish/publishMap/index'; +import PublishMapDraft from '@/views/publish/publishMap/draft'; +// 发布课程管理 +import PublishLesson from '@/views/publish/publishLesson/index'; +// 仿真脚本管理 +import SimulationScript from '@/views/publish/simulationScript/index'; +// 运行图模板管理 +import PlanTemplate from '@/views/publish/runPlanTemplate/index'; +import PlanCommon from '@/views/publish/runPlanCommon/index'; +import PlanCommonDraft from '@/views/publish/runPlanCommon/draft'; +// 运行图每日加载管理 +import PlanEveryDay from '@/views/publish/runPlanEveryDay/index'; + +// 系统字典管理 +import Dictionary from '@/views/management/dictionary/index'; +import DictionaryDetail from '@/views/management/dictionaryDetail/index'; +// 用户考试管理 +import UserExam from '@/views/management/userExam/index'; +// 用户仿真管理 +import UserSimulation from '@/views/management/userSimulation/index'; +// 存在仿真管理 +import ExistingSimulation from '@/views/management/existingSimulation/index'; +// 用户实训管理 +import UserTraining from '@/views/management/userTraining/index'; +// 用户管理 +import UserControl from '@/views/management/userControl/index'; + +// 商品管理 +import commodityList from '@/views/orderauthor/commodity/index'; +import CommodityDraft from '@/views/orderauthor/commodity/draft'; + +//课程权限管理 +import LessonPermission from '@/views/orderauthor/author/index'; +import LessonPermissionDraft from '@/views/orderauthor/author/draft'; + +//订单操作 +import OrderList from '@/views/orderauthor/order/list'; +import OrderDraft from '@/views/orderauthor/order/draft'; +import runPlan from '../store/modules/runplan'; + +//打包管理 +import PackageMange from '@/views/orderauthor/permission/index'; +import PackageDetail from '@/views/orderauthor/permission/detail'; +import PackageDraft from '@/views/orderauthor/permission/draft/ruleForm'; + +//综合演练 +import trainRoom from '@/views/trainRoom/index'; +import JointTrainingDraft from '@/views/jointTraining/index'; + +import ThreeTest from '@/views/jlmap3d/index';//test +import ThreeDrawTest from '@/views/jlmap3d/jlmap3dedit';//test +import Jl3dSimulation from '@/views/jlmap3d/simulation/jl3dsimulation'; + +export const UrlConfig = { + display: '/display', + examRuleDraft: '/examRule/draft', + examRuleManage: '/examRule/manage', + map: { + prefix: '/map', + draft: '/map/draw', + skinStyle: '/map/skinStyle', + skinStyleDraft: '/map/skinStyle/draft', + runPlan: '/map/runPlan', + runPlanView: '/map/runPlan/view', + product: '/map/product', + productDraft: '/map/product/draft', + }, + lesson: { + prefix: '/lesson', + record: '/lesson/record/training', + manage: '/lesson/manage/training' + }, + teach: { + prefix: '/teach', + detail: '/teach/detail', + practical: '/teach/practical', + pay: '/teach/pay', + }, + exam: { + prefix: '/exam', + detail: '/exam/detail', + course: '/exam/course', + examRuleManage: '/exam/examRule/manage', + pay: '/exam/pay' + }, + demonstration: { + prefix: '/demonstration', + detail: '/demonstration/detail', + pay: '/demonstration/pay' + }, + dp: { + prefix: '/dp', + detail: '/dp/detail', + pay: '/dp/pay' + + }, + plan: { + prefix: '/plan', + tool: '/plan/tool', + detail: '/plan/detail', + pay: '/plan/pay' + }, + replay: { + prefix: '/replay' + }, + permission: { + prefix: '/permission', + permissionList: '/permission/manage', + permissionDraft: '/permission/draft', + permission: '/permission/restore' + }, + publish: { + prefix: '/publish', + map: '/publish/map', + mapDraft: '/publish/map/draft', + runPlanEveryDay: '/publish/runPlan/everyDay', + runPlanTemplate: '/publish/runPlan/template', + runPlanCommon: '/publish/runPlan/common', + runPlanView: '/publish/runPlan/view', + }, + orderauthor: { + prefix: '/orderauthor', + commodityManage: '/orderauthor/commodity/manage', + commodityDraft: '/orderauthor/commodity/draft', + orderManage: '/orderauthor/order/manage', + orderDraft: '/orderauthor/order/draft', + authorMange: '/orderauthor/author/manage', + authorDraft: '/orderauthor/author/draft', + transferDetail: '/orderauthor/transfer/detail', + trainferPackage: '/orderauthor/transfer/package' + } +}; + +export const constantRouterMap = [ + { path: '/dp/login', component: resolve => require(['@/views/login/loginNewScreen'], resolve), hidden: true }, //扫码登录 + { path: '/dp/login1', component: resolve => require(['@/views/login/loginScreen'], resolve), hidden: true }, //密码登录 + + { path: '/plan/login', component: resolve => require(['@/views/login/loginNewPlan'], resolve), hidden: true }, //扫码登录 + { path: '/plan/login1', component: resolve => require(['@/views/login/loginPlan'], resolve), hidden: true }, //密码登录 + + { path: '/login', component: resolve => require(['@/views/login/loginNew'], resolve), hidden: true }, //扫码登录 + { path: '/login1', component: resolve => require(['@/views/login/index'], resolve), hidden: true }, //密码登录 + { path: '/jlmap3d/edit', component: resolve => require(['@/views/jlmap3d/jlmap3dedit'], resolve), hidden: true }, + { path: '/404', component: resolve => require(['@/views/404'], resolve), hidden: true }, + { path: '*', redirect: '/404', hidden: true } +]; + +export default new Router({ + mode: 'history', //后端支持可开 + scrollBehavior: () => ({ y: 0 }), + routes: constantRouterMap +}); + +export const user = '01'; // 普通用户 +export const mapCreater = '02'; // 地图创建权限 +export const lessonCreater = '03'; // 课程创建权限 +export const admin = '04'; // 管理员 +export const superAdmin = '05'; // 超级管理员 + +export const userExam = '011'; // 考试系统 +export const userLesson = '012'; // 教学系统 +export const userSimulation = '013'; // 仿真系统 +export const userScreen = '014'; // 大屏系统 +export const userPlan = '015'; // 计划系统 + + +export const asyncRouterMap = [ + { + path: '/', + component: resolve => require(['@/views/layout/Layout'], resolve), + redirect: '/dashboard', + name: 'Dashboard', + hidden: true, + children: [ + { + path: 'dashboard', + component: resolve => require(['@/views/dashboard/index.vue'], resolve) + }, + ] + }, + { + path: '/display/:mode', + component: resolve => require(['@/views/display/index'], resolve), + meta: { + title: '实训视图' + }, + hidden: true + }, + { + path: '/trainroom', + component: resolve => require(['@/views/trainRoom/index'], resolve), + meta: { + title: '综合演练房间' + }, + hidden: true, + }, + { + path: '/jointTraining', + name: '联合演练试图', + component: resolve => require(['@/views/jointTraining/index'], resolve), + hidden: true + }, + { + path: '/jlmap3d', + name: '三维test', + component: resolve => require(['@/views/jlmap3d/index'], resolve), + meta: { + title: '三维test' + }, + hidden: true + }, + { + path: '/map', + name: '地图管理', + meta: { + title: '地图管理', + roles: [admin, mapCreater], + }, + component: resolve => require(['@/views/layout/Layout'], resolve), + children: [ + { + path: 'skinStyle', + name: '皮肤管理', + component: resolve => require(['@/views/map/skinStyle/index'], resolve), + meta: { + title: '皮肤管理', + }, + }, + { + path: 'skinStyle/draft/:mode/:skinStyleId', + name: '操作权限', + hidden: true, + component: resolve => require(['@/views/map/skinStyle/draft'], resolve), + meta: { + title: '操作权限' + } + }, + { + path: 'draw', + redirect: '/map/draw/0/draft', + component: resolve => require(['@/views/map/mapdraft/index'], resolve), + meta: { + title: '地图绘制', + }, + children: [ + { + path: ':mapId/:view', + component: resolve => require(['@/views/map/mapdraft/mapedit/index'], resolve), + meta: { + title: '地图绘制', + }, + hidden: true + } + ] + }, + { + path: 'runPlan', + redirect: '/map/runPlan/view/draft', + name: '运行图管理', + component: resolve => require(['@/views/map/runplan/index'], resolve), + meta: { + title: '运行图管理' + }, + children: [{ + path: 'view/:mode', + component: resolve => require(['@/views/map/runplan/chart'], resolve), + hidden: true + }], + }, + { + path: 'product', + name: '产品编辑', + component: resolve => require(['@/views/lesson/trainingcategory/index'], resolve), + meta: { + title: '产品编辑', + } + } + ] + }, + { + path: '/lesson', + component: resolve => require(['@/views/layout/Layout'], resolve), + name: '课程管理', + meta: { + title: '课程管理', + roles: [admin, lessonCreater], + }, + children: [ + { + path: 'record', + redirect: '/lesson/record/training/0/null', + component: resolve => require(['@/views/lesson/trainingrecord/index'], resolve), + meta: { + title: '实训录制', + }, + children: [ + { + path: 'training/:trainingId/:trainingName', + component: resolve => require(['@/views/lesson/trainingrecord/manage/index'], resolve), + meta: { + title: '实训录制', + }, + hidden: true + }, + ] + }, + { + path: 'manage/taskmanage', + name: '任务管理', + component: resolve => require(['@/views/lesson/taskmanage/list'], resolve), + meta: { + title: '任务管理' + } + }, + { + path: 'manage/trainingRule', + name: '操作定义', + component: resolve => require(['@/views/lesson/trainingRule/list'], resolve), + meta: { + title: '操作定义' + }, + }, + { + path: 'manage/trainingRule/detail', + name: '操作定义明细', + hidden: true, + component: resolve => require(['@/views/lesson/trainingRule/detail/index'], resolve), + meta: { + title: '操作定义明细' + } + }, + { + path: 'manage/training', + name: '实训管理', + component: resolve => require(['@/views/lesson/trainingmanage/index'], resolve), + meta: { + title: '实训管理' + } + }, + { + path: 'edit', + name: '课程编辑', + component: resolve => require(['@/views/lesson/lessoncategory/index'], resolve), + meta: { + title: '课程编辑', + } + }, + { + path: 'manage/scriptmanage', + name: '剧本管理', + component: resolve => require(['@/views/lesson/scriptmanage/list'], resolve), + meta: { + title: '剧本管理' + } + } + ] + }, + { + path: '/teach', + redirect: '/teach/home', + name: '教学系统', + component: resolve => require(['@/views/teach/index'], resolve), + meta: { + roles: [admin, userLesson, user], + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/teach/home'], resolve), + meta: { + title: '教学系统' + }, + }, + { + path: 'detail/:lessonId', + name: '课程详情', + component: resolve => require(['@/views/teach/detail/index'], resolve), + meta: { + title: '课程详情' + }, + hidden: true + }, + { + path: 'practical/:trainingId/:lessonId', + name: '实训详情', + component: resolve => require(['@/views/teach/practical/index'], resolve), + meta: { + title: '实训详情' + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/exam', + redirect: '/exam/home', + component: resolve => require(['@/views/exam/index'], resolve), + name: '考试系统', + meta: { + roles: [admin, userExam, user], + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/exam/home'], resolve), + meta: { + title: '考试系统' + }, + }, + { + path: 'detail/:examId', + name: '试卷详情', + component: resolve => require(['@/views/exam/detail/examDetail'], resolve), + meta: { + title: '试卷详情' + }, + hidden: true, + }, + { + path: 'course/:lessonId', + component: resolve => require(['@/views/exam/detail/courseDetail'], resolve), + meta: { + }, + hidden: true, + }, + { + path: 'examRule/manage', + name: '试题设置', + component: resolve => require(['@/views/publish/examRule/index'], resolve), + meta: { + title: '试题设置' + }, + hidden: true, + }, + { + path: 'examRule/draft/:mode/:ruleId/:lessonId', + hidden: true, + component: resolve => require(['@/views/publish/examRule/draft/index'], resolve), + meta: { + title: '添加订单' + } + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'questionDetail/:examQuestionId', + name: '开始考试', + component: resolve => require(['@/views/exam/detail/questionDetail'], resolve), + meta: { + title: '开始考试', + }, + hidden: true, + }, + { + path: 'result/:userExamId', + name: '考试结果', + component: resolve => require(['@/views/exam/result'], resolve), + meta: { + title: '考试结果', + }, + hidden: true + }, + ] + }, + { + path: '/demonstration', + redirect: '/demonstration/home', + component: resolve => require(['@/views/demonstration/index'], resolve), + name: '仿真系统', + meta: { + roles: [admin, userSimulation, user], + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/demonstration/home'], resolve), + meta: { + title: '仿真系统' + }, + }, + { + path: 'detail/:mapId', + name: '地图详情', + component: resolve => require(['@/views/demonstration/detail/index'], resolve), + meta: { + title: '地图详情' + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/dp', + redirect: '/dp/home', + component: resolve => require(['@/views/screenMonitor/index'], resolve), + name: '大屏系统', + meta: { + roles: [admin, userScreen], + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/screenMonitor/home'], resolve), + meta: { + title: '大屏系统' + }, + target: true + }, + { + path: 'detail/:lessonId', + component: resolve => require(['@/views/screenMonitor/detail/index'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/plan/tool', + component: resolve => require(['@/views/planMonitor/editTool/index'], resolve), + meta: { + }, + hidden: true + }, + { + path: '/plan', + redirect: '/plan/home', + component: resolve => require(['@/views/planMonitor/index'], resolve), + name: '琏计划', + meta: { + roles: [admin, user], + }, + children: [ + { + path: 'home', + component: resolve => require(['@/views/planMonitor/home'], resolve), + meta: { + title: '琏计划' + }, + target: true + }, + { + path: 'detail/:lessonId', + component: resolve => require(['@/views/planMonitor/detail'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: resolve => require(['@/views/components/pay/index'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/replay', + component: resolve => require(['@/views/layout/Layout'], resolve), + meta: { + roles: [admin], + }, + children: [ + { + path: 'manage', + component: resolve => require(['@/views/replay/index'], resolve), + meta: { + title: '回放管理' + }, + } + ] + }, + { + path: '/permission', + component: resolve => require(['@/views/layout/Layout'], resolve), + meta: { + roles: [admin, user], + }, + children: [ + { + path: 'manage', + component: resolve => require(['@/views/package/index'], resolve), + meta: { + title: '权限管理' + }, + }, + { + path: 'draft', + component: resolve => require(['@/views/package/draft/ruleForm'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/publish', + name: '发布内容管理', + component: resolve => require(['@/views/layout/Layout'], resolve), + meta: { + title: '发布内容管理', + roles: [admin], + }, + children: [ + { + path: 'map', + name: '发布地图管理', + component: resolve => require(['@/views/publish/publishMap/index'], resolve), + meta: { + title: '发布地图管理', + } + }, + { + path: 'product', + name: '产品状态管理', + component: resolve => require(['@/views/publish/productStatus/index'], resolve), + meta: { + title: '产品状态管理', + } + }, + { + path: 'lesson', + name: '发布课程管理', + component: resolve => require(['@/views/publish/publishLesson/index'], resolve), + meta: { + title: '发布课程管理', + } + }, + // { + // path: 'script', + // name: '仿真脚本管理', + // component: resolve => require(['@/views/publish/simulationScript/index'], resolve), + // meta: { + // title: '仿真脚本管理', + // } + // }, + { + path: 'runPlan/template', + component: resolve => require(['@/views/publish/runPlanTemplate/index'], resolve), + meta: { + title: '运行图模板管理' + } + }, + { + path: 'runPlan/common', + component: resolve => require(['@/views/publish/runPlanCommon/index'], resolve), + meta: { + title: '运行图通用管理' + } + }, + { + path: 'runPlan/everyDay', + component: resolve => require(['@/views/publish/runPlanEveryDay/index'], resolve), + meta: { + title: '运行图每日管理' + } + }, + { + path: 'examRule/manage', + name: '试题管理', + component: resolve => require(['@/views/publish/examRule/index'], resolve), + meta: { + title: '试题管理' + } + }, + { + path: 'map/draft/:mode/:mapId', + component: resolve => require(['@/views/publish/publishMap/draft'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'examRule/draft/:mode/:ruleId/:lessonId', + hidden: true, + component: resolve => require(['@/views/publish/examRule/draft/index'], resolve), + meta: { + } + }, + { + path: 'runPlan/common/:mode', + component: resolve => require(['@/views/publish/runPlanCommon/draft'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'runPlan/view/:mode', + component: resolve => require(['@/views/map/runplan/chart'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/orderauthor', + component: resolve => require(['@/views/layout/Layout'], resolve), + name: '订单权限管理', + meta: { + title: '订单权限管理', + roles: [admin] + }, + children: [ + { + path: 'commodity/manage', + name: '商品管理', + component: resolve => require(['@/views/orderauthor/commodity/index'], resolve), + meta: { + title: '商品管理' + } + }, + { + path: 'order/manage', + name: '订单管理', + component: resolve => require(['@/views/orderauthor/order/list'], resolve), + meta: { + title: '订单管理' + } + }, + { + path: 'author/manage', + name: '权限管理', + component: resolve => require(['@/views/orderauthor/author/index'], resolve), + meta: { + title: '权限管理' + } + }, + { + path: 'transfer/manage', + name: '权限分发管理', + component: resolve => require(['@/views/orderauthor/permission/index'], resolve), + meta: { + title: '权限分发管理' + } + }, + { + path: 'commodity/draft/:mode/:commodityId', + name: '添加商品', + hidden: true, + component: resolve => require(['@/views/orderauthor/commodity/draft'], resolve), + meta: { + title: '添加商品' + } + }, + { + path: 'order/draft/:mode/:orderId', + name: '添加订单', + hidden: true, + component: resolve => require(['@/views/orderauthor/order/draft'], resolve), + meta: { + title: '添加订单' + } + }, + { + path: 'author/draft/:mode/:userId', + name: '添加课程权限', + hidden: true, + component: resolve => require(['@/views/orderauthor/author/draft'], resolve), + meta: { + title: '添加课程权限' + } + }, + { + path: 'transfer/detail/:permissionId', + component: resolve => require(['@/views/orderauthor/permission/detail'], resolve), + meta: { + }, + hidden: true + }, + { + path: 'transfer/package', + component: resolve => require(['@/views/orderauthor/permission/draft/ruleForm'], resolve), + meta: { + }, + hidden: true + } + ] + }, + { + path: '/system', + component: resolve => require(['@/views/layout/Layout'], resolve), + meta: { + title: '系统管理', + roles: [admin], + }, + children: [ + { + path: 'dictionary', + name: 'Dictionary', + component: resolve => require(['@/views/management/dictionary/index'], resolve), + meta: { + title: '数据字典' + } + }, + { + path: 'dictionary/detail', + name: '数据字典明细', + hidden: true, + component: resolve => require(['@/views/management/dictionaryDetail/index'], resolve), + meta: { + title: '数据字典明细' + } + }, + { + path: 'userManage', + name: '用户管理', + component: resolve => require(['@/views/management/userControl/index'], resolve), + meta: { + title: '用户管理', + } + }, + { + path: 'userTrainingManage', + name: '用户实训管理', + component: resolve => require(['@/views/management/userTraining/index'], resolve), + meta: { + title: '用户实训管理', + } + }, + { + path: 'userExamManage', + name: '用户考试管理', + component: resolve => require(['@/views/management/userExam/index'], resolve), + meta: { + title: '用户考试管理', + } + }, + { + path: 'userSimulationManage', + name: '用户仿真管理', + component: resolve => require(['@/views/management/userSimulation/index'], resolve), + meta: { + title: '用户仿真管理', + } + }, + { + path: 'existingSimulation', + name: '存在仿真管理', + component: resolve => require(['@/views/management/existingSimulation/index'], resolve), + meta: { + title: '存在仿真管理', + } + } + ] + }, +]; diff --git a/src/views/jlmap3d/edit/action.vue b/src/views/jlmap3d/edit/action.vue new file mode 100644 index 000000000..a4a431c64 --- /dev/null +++ b/src/views/jlmap3d/edit/action.vue @@ -0,0 +1,168 @@ + + + + + + diff --git a/src/views/jlmap3d/edit/assets.vue b/src/views/jlmap3d/edit/assets.vue new file mode 100644 index 000000000..322a4e5d2 --- /dev/null +++ b/src/views/jlmap3d/edit/assets.vue @@ -0,0 +1,208 @@ + + + + + + diff --git a/src/views/jlmap3d/edit/index.vue b/src/views/jlmap3d/edit/index.vue new file mode 100644 index 000000000..a75f96293 --- /dev/null +++ b/src/views/jlmap3d/edit/index.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/views/jlmap3d/edit/map3dlist.vue b/src/views/jlmap3d/edit/map3dlist.vue new file mode 100644 index 000000000..8621705fb --- /dev/null +++ b/src/views/jlmap3d/edit/map3dlist.vue @@ -0,0 +1,306 @@ + + + + + diff --git a/src/views/jlmap3d/edit/menu.vue b/src/views/jlmap3d/edit/menu.vue new file mode 100644 index 000000000..544cacbd9 --- /dev/null +++ b/src/views/jlmap3d/edit/menu.vue @@ -0,0 +1,84 @@ + + + + + + diff --git a/src/views/jlmap3d/edit/property.vue b/src/views/jlmap3d/edit/property.vue new file mode 100644 index 000000000..50b86f8e9 --- /dev/null +++ b/src/views/jlmap3d/edit/property.vue @@ -0,0 +1,200 @@ + + + + + + diff --git a/src/views/jlmap3d/index.vue b/src/views/jlmap3d/index.vue new file mode 100644 index 000000000..dd791e92b --- /dev/null +++ b/src/views/jlmap3d/index.vue @@ -0,0 +1,256 @@ + + + + + + diff --git a/src/views/jlmap3d/jlmap3dedit.vue b/src/views/jlmap3d/jlmap3dedit.vue new file mode 100644 index 000000000..2d643fac9 --- /dev/null +++ b/src/views/jlmap3d/jlmap3dedit.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/views/jlmap3d/show/configmenu.vue b/src/views/jlmap3d/show/configmenu.vue new file mode 100644 index 000000000..2efdb62f7 --- /dev/null +++ b/src/views/jlmap3d/show/configmenu.vue @@ -0,0 +1,83 @@ + + + + + + diff --git a/src/views/jlmap3d/show/menu.vue b/src/views/jlmap3d/show/menu.vue new file mode 100644 index 000000000..13ceed726 --- /dev/null +++ b/src/views/jlmap3d/show/menu.vue @@ -0,0 +1,165 @@ + + + + + + diff --git a/src/views/jlmap3d/show/msg.vue b/src/views/jlmap3d/show/msg.vue new file mode 100644 index 000000000..0eaf1b37f --- /dev/null +++ b/src/views/jlmap3d/show/msg.vue @@ -0,0 +1,180 @@ + + + + + + diff --git a/src/views/jlmap3d/show/property.vue b/src/views/jlmap3d/show/property.vue new file mode 100644 index 000000000..39ade69a8 --- /dev/null +++ b/src/views/jlmap3d/show/property.vue @@ -0,0 +1,124 @@ + + + + + + diff --git a/src/views/jlmap3d/simulation/jl3dsimulation.vue b/src/views/jlmap3d/simulation/jl3dsimulation.vue new file mode 100644 index 000000000..d8d6d4c6c --- /dev/null +++ b/src/views/jlmap3d/simulation/jl3dsimulation.vue @@ -0,0 +1,303 @@ + + + + + + diff --git a/src/views/jlmap3d/simulation/sceneview/mmi.css b/src/views/jlmap3d/simulation/sceneview/mmi.css new file mode 100644 index 000000000..f0532b361 --- /dev/null +++ b/src/views/jlmap3d/simulation/sceneview/mmi.css @@ -0,0 +1,78 @@ +/* N区 跳停扣车显示 */ +.narea{ + left:0px;top:0; +} + +/* D区 信息设置按钮 */ +.darea{ + right:0px;top:0; +} + +/* M1区 当前驾驶模式显示 */ +.m1area{ + left:0px;top:12%; +} + +/* M2区 当前运行等级显示 */ +.m2area{ + right:0px;top:12%; +} + +/* M3区 折返状态显示 */ +.m3area{ + left:0px;top:24%; +} + +/* M4区 列车进入停车窗显示 */ +.m4area{ + right:0px;top:24%; +} + +/* M5区 车门状态及门允许侧显示 */ +.m5area{ + left:0px;top:36%; +} + +/* M6区 发车信息显示 */ +.m6area{ + right:0px;top:36%; +} + +/* M7区 客室门控制模式显示 */ +.m7area{ + left:0px;top:48%; +} + +/* M8区 屏蔽门状态显示 */ +.m8area{ + right:0px;top:48%; +} + +/* M9区 设备故障显示 */ +.m9area{ + left:0px;top:60%; +} + +/* M10区 停车场/车辆段的转换区显示 */ +.m10area{ + right:0px;top:60%; +} + +/* C1区 ATO牵引制动状态显示 */ +.c1area{ +} + +/* C2区 最高预设驾驶模式显示 */ +.c2area{ + left:70px; +} + +/* C3区 列车完整性状态显示 */ +.c3area{ + left:140px; +} + +/* C5区 列车头尾设备状态显示 */ +.c5area{ + right:0; +} diff --git a/src/views/jlmap3d/simulation/sceneview/mmi.js b/src/views/jlmap3d/simulation/sceneview/mmi.js new file mode 100644 index 000000000..5da0d2fd0 --- /dev/null +++ b/src/views/jlmap3d/simulation/sceneview/mmi.js @@ -0,0 +1,127 @@ +import Vue from 'vue'; + +import {Three} from '@/jlmap3d/main/three.min.js'; + + +export function mmirender(dom) { + let scope = this; + + let scene = new THREE.Scene(); + scene.background = new THREE.Color( 0xcce0ff ); + scene.fog = new THREE.Fog( 0xcce0ff, 500, 10000 ); + scene.add( new THREE.AmbientLight( 0xffffff ) ); + // camera + + let camera = new THREE.PerspectiveCamera( 30, 360 / 200, 1, 10000 ); + camera.position.set( 0, 0, 80 ); + + let renderer = new THREE.WebGLRenderer( { antialias: true } ); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setSize( 360, 200 ); + + var geometry = new THREE.PlaneBufferGeometry( 80, 80, 2 ); + var material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide} ); + var plane = new THREE.Mesh( geometry, material ); + scene.add( plane ); + + + var texture = new THREE.TextureLoader().load( '/static/jl3d/biao.png' ); + var geometry = new THREE.PlaneBufferGeometry( 60, 60, 2 ); + var material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide} ); + var kd = new THREE.Mesh( geometry, material ); + kd.position.x = -5; + scene.add( kd ); + + var geometry = new THREE.PlaneBufferGeometry( 2, 2, 2 ); + var material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide} ); + var zc = new THREE.Mesh( geometry, material ); + zc.position.x = 2.48; + zc.position.y = -0.34; + zc.position.z = 1; + //zc.rotation.y = Math.PI; + //0刻度-Math.PI*65.8/100 + //110刻度-Math.PI*234.8/100 + zc.rotation.z = -Math.PI*65.8/100; + scene.add( zc ); + + var geometry = new THREE.PlaneBufferGeometry( 14, 0.8, 2 ); + var material = new THREE.MeshBasicMaterial( {color: 0xffffff, side: THREE.DoubleSide} ); + var zz = new THREE.Mesh( geometry, material ); + zz.position.z = 1; + zz.position.x = 11; + zc.add( zz ); + + var geometry = new THREE.PlaneBufferGeometry( 2, 2, 2 ); + var material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide} ); + var atp = new THREE.Mesh( geometry, material ); + atp.position.x = 2.48; + atp.position.y = -0.34; + atp.position.z = 1; + //zc.rotation.y = Math.PI; + //0刻度-Math.PI*65.8/100 + //110刻度-Math.PI*234.8/100 + atp.rotation.z = -Math.PI*65.8/100; + scene.add( atp ); + + var geometry = new THREE.CircleBufferGeometry(1.5, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0xea0000, side: THREE.DoubleSide} ); + var atpmark = new THREE.Mesh( geometry, material ); + atpmark.position.z = 1; + atpmark.position.x = 21; + atpmark.rotation.y = Math.PI; + atp.add( atpmark ); + + var geometry = new THREE.PlaneBufferGeometry( 2, 2, 2 ); + var material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide} ); + var ato = new THREE.Mesh( geometry, material ); + ato.position.x = 2.48; + ato.position.y = -0.34; + ato.position.z = 1; + //zc.rotation.y = Math.PI; + //0刻度-Math.PI*65.8/100 + //110刻度-Math.PI*234.8/100 + ato.rotation.z = -Math.PI*65.8/100; + scene.add( ato ); + + var geometry = new THREE.CircleBufferGeometry(1.5, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0xEEEE00, side: THREE.DoubleSide} ); + var atomark = new THREE.Mesh( geometry, material ); + atomark.position.z = 1; + atomark.position.x = 21; + atomark.rotation.y = Math.PI; + ato.add( atomark ); + + + + dom.appendChild( renderer.domElement); + animate(); + + function animate() { + //zc.rotation.z -= 0.01; + renderer.render( scene, camera ); + requestAnimationFrame(animate); + } + + this.updatezz = function(speed){ + zc.rotation.z = -Math.PI*(65.8+169*speed/110)/100; + } + this.updateatp = function(atpspeed){ + if(atpspeed<0){ + atp.position.x = 10000; + }else{ + atp.position.x = 2.48; + atp.rotation.z = -Math.PI*(65.8+169*atpspeed/110)/100; + } + + } + + this.updateato = function(atospeed){ + if(atospeed<0){ + ato.position.x = 10000; + }else{ + ato.position.x = 2.48; + ato.rotation.z = -Math.PI*(65.8+169*atospeed/110)/100; + } + + } +} diff --git a/src/views/jlmap3d/simulation/sceneview/mmiimage.js b/src/views/jlmap3d/simulation/sceneview/mmiimage.js new file mode 100644 index 000000000..eec1756eb --- /dev/null +++ b/src/views/jlmap3d/simulation/sceneview/mmiimage.js @@ -0,0 +1,94 @@ +import Vue from 'vue'; + +export function mmiimage() { + let scope = this; + + //n + this.n = []; + this.n['tiaoting'] = '/static/jl3d/mmi/n-tiaoting.png'; + this.n['kouche'] = '/static/jl3d/mmi/n-kouche.png'; + this.n['none'] = '/static/jl3d/mmi/none.png'; + + //d + this.d = [] + this.d['info'] = '/static/jl3d/mmi/d-info.png'; + + this.m1 = []; + this.m1['start'] = '/static/jl3d/mmi/none.png'; + this.m1['am'] = '/static/jl3d/mmi/m1-am.png'; + this.m1['cm'] = '/static/jl3d/mmi/m1-cm.png'; + this.m1['rm'] = '/static/jl3d/mmi/m1-rm.png'; + + this.m2 = []; + this.m2['start'] = '/static/jl3d/mmi/none.png'; + this.m2['il'] = '/static/jl3d/mmi/m2-il.png'; + this.m2['itc'] = '/static/jl3d/mmi/m2-itc.png'; + this.m2['cbtc'] = '/static/jl3d/mmi/m2-cbtc.png'; + + this.m3 = []; + this.m3['zhefan'] = '/static/jl3d/mmi/m3-zhefan.png'; + this.m3['zhefanzhong'] = '/static/jl3d/mmi/m3-zhefanzhong.png'; + this.m3['none'] = '/static/jl3d/mmi/none.png'; + + this.m4 = []; + this.m4['none'] = '/static/jl3d/mmi/none.png'; + this.m4['out'] = '/static/jl3d/mmi/m4-out.png'; + this.m4['in'] = '/static/jl3d/mmi/m4-in.png'; + + this.m5 = []; + this.m5['state15'] = '/static/jl3d/mmi/m5-15.png'; + + this.m6 = []; + this.m6['none'] = '/static/jl3d/mmi/none.png'; + this.m6['fache'] = '/static/jl3d/mmi/m6-fache.png'; + this.m6['closedoor'] = '/static/jl3d/mmi/m6-closedoor.png'; + + this.m7 = []; + this.m7['momc'] = '/static/jl3d/mmi/m7-momc.png'; + this.m7['aomc'] = '/static/jl3d/mmi/m7-aomc.png'; + this.m7['aoac'] = '/static/jl3d/mmi/m7-aoac.png'; + this.m7['none'] = '/static/jl3d/mmi/none.png'; + + this.m8 = []; + this.m8['dahua'] = '/static/jl3d/mmi/m8-dahua.png'; + this.m8['jinjizhidong'] = '/static/jl3d/mmi/m8-jinjizhidong.png'; + this.m8['doornotclose'] = '/static/jl3d/mmi/m8-doornotclose.png'; + this.m8['none'] = '/static/jl3d/mmi/none.png'; + + this.m9 = []; + this.m9['rad'] = '/static/jl3d/mmi/m9-rad.png'; + this.m9['atp'] = '/static/jl3d/mmi/m9-atp.png'; + this.m9['ato'] = '/static/jl3d/mmi/m9-ato.png'; + this.m9['none'] = '/static/jl3d/mmi/none.png'; + + this.m10 = []; + this.m10['jinduan'] = '/static/jl3d/mmi/m10-jinduan.png'; + this.m10['shiwei'] = '/static/jl3d/mmi/m10-shiwei.png'; + this.m10['querenxinhao'] = '/static/jl3d/mmi/m10-querenxinhao.png'; + this.m10['none'] = '/static/jl3d/mmi/none.png'; + console.log(scope); + + this.c1 = []; + this.c1['qianyin'] = '/static/jl3d/mmi/c1-qianyin.png'; + this.c1['duoxing'] = '/static/jl3d/mmi/c1-duoxing.png'; + this.c1['zhidong'] = '/static/jl3d/mmi/c1-zhidong.png'; + this.c1['none'] = '/static/jl3d/mmi/none.png'; + + + this.c2 = []; + this.c2['rm'] = '/static/jl3d/mmi/m1-rm.png'; + this.c2['cmi'] = '/static/jl3d/mmi/c2-cm-i.png'; + this.c2['cmc'] = '/static/jl3d/mmi/c2-cm-c.png'; + this.c2['ami'] = '/static/jl3d/mmi/c2-am-i.png'; + this.c2['amc'] = '/static/jl3d/mmi/c2-am-c.png'; + this.c2['none'] = '/static/jl3d/mmi/none.png'; + + this.c3 = []; + this.c3['normal'] = '/static/jl3d/mmi/c3-normal.png'; + this.c3['lose'] = '/static/jl3d/mmi/c3-lose.png'; + + this.c5 = []; + this.c5['normal'] = '/static/jl3d/mmi/c5-normal.png'; + this.c5['lose'] = '/static/jl3d/mmi/c5-lose.png'; + +} diff --git a/src/views/jlmap3d/simulation/sceneview/mmiview.vue b/src/views/jlmap3d/simulation/sceneview/mmiview.vue new file mode 100644 index 000000000..13aca37f1 --- /dev/null +++ b/src/views/jlmap3d/simulation/sceneview/mmiview.vue @@ -0,0 +1,374 @@ + + + + + + diff --git a/src/views/jlmap3d/simulation/sceneview/tmsview.vue b/src/views/jlmap3d/simulation/sceneview/tmsview.vue new file mode 100644 index 000000000..24c305d47 --- /dev/null +++ b/src/views/jlmap3d/simulation/sceneview/tmsview.vue @@ -0,0 +1,54 @@ + + + + + + diff --git a/src/views/jointTraining/chartView.vue b/src/views/jointTraining/chartView.vue new file mode 100644 index 000000000..7349d79ea --- /dev/null +++ b/src/views/jointTraining/chartView.vue @@ -0,0 +1,493 @@ + + + + + diff --git a/src/views/jointTraining/chatWindow.vue b/src/views/jointTraining/chatWindow.vue new file mode 100644 index 000000000..177327c41 --- /dev/null +++ b/src/views/jointTraining/chatWindow.vue @@ -0,0 +1,673 @@ + + + + + \ No newline at end of file diff --git a/src/views/jointTraining/index.vue b/src/views/jointTraining/index.vue new file mode 100644 index 000000000..3c0b61ce7 --- /dev/null +++ b/src/views/jointTraining/index.vue @@ -0,0 +1,336 @@ + + + + diff --git a/src/views/jointTraining/menuDemon.vue b/src/views/jointTraining/menuDemon.vue new file mode 100644 index 000000000..825c037cc --- /dev/null +++ b/src/views/jointTraining/menuDemon.vue @@ -0,0 +1,468 @@ + + + + diff --git a/src/views/jointTraining/menuDraft/chooseRole.vue b/src/views/jointTraining/menuDraft/chooseRole.vue new file mode 100644 index 000000000..426cf67e6 --- /dev/null +++ b/src/views/jointTraining/menuDraft/chooseRole.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/src/views/jointTraining/menuDraft/operateMenu.vue b/src/views/jointTraining/menuDraft/operateMenu.vue new file mode 100644 index 000000000..3f5a81600 --- /dev/null +++ b/src/views/jointTraining/menuDraft/operateMenu.vue @@ -0,0 +1,135 @@ + + + diff --git a/src/views/jointTraining/menuSchema.vue b/src/views/jointTraining/menuSchema.vue new file mode 100644 index 000000000..9a6c24c12 --- /dev/null +++ b/src/views/jointTraining/menuSchema.vue @@ -0,0 +1,157 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/category/operateMenu.vue b/src/views/lesson/lessoncategory/category/operateMenu.vue new file mode 100644 index 000000000..c93cb1d45 --- /dev/null +++ b/src/views/lesson/lessoncategory/category/operateMenu.vue @@ -0,0 +1,115 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/category/tree.vue b/src/views/lesson/lessoncategory/category/tree.vue new file mode 100644 index 000000000..fc5b626ec --- /dev/null +++ b/src/views/lesson/lessoncategory/category/tree.vue @@ -0,0 +1,170 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/edit/chapter/index.vue b/src/views/lesson/lessoncategory/edit/chapter/index.vue new file mode 100644 index 000000000..32fcd1ecc --- /dev/null +++ b/src/views/lesson/lessoncategory/edit/chapter/index.vue @@ -0,0 +1,286 @@ + + + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/edit/chapter/list.vue b/src/views/lesson/lessoncategory/edit/chapter/list.vue new file mode 100644 index 000000000..1e6ad527a --- /dev/null +++ b/src/views/lesson/lessoncategory/edit/chapter/list.vue @@ -0,0 +1,239 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/edit/create/index.vue b/src/views/lesson/lessoncategory/edit/create/index.vue new file mode 100644 index 000000000..5b8526675 --- /dev/null +++ b/src/views/lesson/lessoncategory/edit/create/index.vue @@ -0,0 +1,91 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/edit/lesson/index.vue b/src/views/lesson/lessoncategory/edit/lesson/index.vue new file mode 100644 index 000000000..b7c42379c --- /dev/null +++ b/src/views/lesson/lessoncategory/edit/lesson/index.vue @@ -0,0 +1,266 @@ + + + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/edit/lesson/publish.vue b/src/views/lesson/lessoncategory/edit/lesson/publish.vue new file mode 100644 index 000000000..8d4ded1b0 --- /dev/null +++ b/src/views/lesson/lessoncategory/edit/lesson/publish.vue @@ -0,0 +1,136 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/edit/sorttree/index.vue b/src/views/lesson/lessoncategory/edit/sorttree/index.vue new file mode 100644 index 000000000..fa3cb467b --- /dev/null +++ b/src/views/lesson/lessoncategory/edit/sorttree/index.vue @@ -0,0 +1,138 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/lessoncategory/index.vue b/src/views/lesson/lessoncategory/index.vue new file mode 100644 index 000000000..86248333f --- /dev/null +++ b/src/views/lesson/lessoncategory/index.vue @@ -0,0 +1,129 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/scriptmanage/create.vue b/src/views/lesson/scriptmanage/create.vue new file mode 100644 index 000000000..20c3a48af --- /dev/null +++ b/src/views/lesson/scriptmanage/create.vue @@ -0,0 +1,107 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/scriptmanage/list.vue b/src/views/lesson/scriptmanage/list.vue new file mode 100644 index 000000000..4d0d387da --- /dev/null +++ b/src/views/lesson/scriptmanage/list.vue @@ -0,0 +1,188 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/taskmanage/createTask.vue b/src/views/lesson/taskmanage/createTask.vue new file mode 100644 index 000000000..2b656a489 --- /dev/null +++ b/src/views/lesson/taskmanage/createTask.vue @@ -0,0 +1,100 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/taskmanage/list.vue b/src/views/lesson/taskmanage/list.vue new file mode 100644 index 000000000..c2d6e8209 --- /dev/null +++ b/src/views/lesson/taskmanage/list.vue @@ -0,0 +1,181 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingRule/addBatch.vue b/src/views/lesson/trainingRule/addBatch.vue new file mode 100644 index 000000000..37f775391 --- /dev/null +++ b/src/views/lesson/trainingRule/addBatch.vue @@ -0,0 +1,115 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingRule/addEdit.vue b/src/views/lesson/trainingRule/addEdit.vue new file mode 100644 index 000000000..3e78a82d7 --- /dev/null +++ b/src/views/lesson/trainingRule/addEdit.vue @@ -0,0 +1,300 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingRule/detail/edit.vue b/src/views/lesson/trainingRule/detail/edit.vue new file mode 100644 index 000000000..3f5a738ae --- /dev/null +++ b/src/views/lesson/trainingRule/detail/edit.vue @@ -0,0 +1,178 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingRule/detail/index.vue b/src/views/lesson/trainingRule/detail/index.vue new file mode 100644 index 000000000..c3cb09788 --- /dev/null +++ b/src/views/lesson/trainingRule/detail/index.vue @@ -0,0 +1,184 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingRule/list.vue b/src/views/lesson/trainingRule/list.vue new file mode 100644 index 000000000..bbe3fbb7f --- /dev/null +++ b/src/views/lesson/trainingRule/list.vue @@ -0,0 +1,271 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingcategory/edit.vue b/src/views/lesson/trainingcategory/edit.vue new file mode 100644 index 000000000..10d8b0b64 --- /dev/null +++ b/src/views/lesson/trainingcategory/edit.vue @@ -0,0 +1,303 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/trainingcategory/index.vue b/src/views/lesson/trainingcategory/index.vue new file mode 100644 index 000000000..d1e11c30e --- /dev/null +++ b/src/views/lesson/trainingcategory/index.vue @@ -0,0 +1,61 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/trainingcategory/tree.vue b/src/views/lesson/trainingcategory/tree.vue new file mode 100644 index 000000000..7ce52d968 --- /dev/null +++ b/src/views/lesson/trainingcategory/tree.vue @@ -0,0 +1,110 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/trainingmanage/draft.vue b/src/views/lesson/trainingmanage/draft.vue new file mode 100644 index 000000000..ff840868b --- /dev/null +++ b/src/views/lesson/trainingmanage/draft.vue @@ -0,0 +1,317 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/trainingmanage/index.vue b/src/views/lesson/trainingmanage/index.vue new file mode 100644 index 000000000..af0806625 --- /dev/null +++ b/src/views/lesson/trainingmanage/index.vue @@ -0,0 +1,286 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/category/draft.vue b/src/views/lesson/trainingrecord/category/draft.vue new file mode 100644 index 000000000..d64934059 --- /dev/null +++ b/src/views/lesson/trainingrecord/category/draft.vue @@ -0,0 +1,302 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/category/operateMenu.vue b/src/views/lesson/trainingrecord/category/operateMenu.vue new file mode 100644 index 000000000..9ca8bfa3e --- /dev/null +++ b/src/views/lesson/trainingrecord/category/operateMenu.vue @@ -0,0 +1,126 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/category/tree.vue b/src/views/lesson/trainingrecord/category/tree.vue new file mode 100644 index 000000000..c90f1f11a --- /dev/null +++ b/src/views/lesson/trainingrecord/category/tree.vue @@ -0,0 +1,132 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/index.vue b/src/views/lesson/trainingrecord/index.vue new file mode 100644 index 000000000..8f22bb690 --- /dev/null +++ b/src/views/lesson/trainingrecord/index.vue @@ -0,0 +1,111 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/manage/index.vue b/src/views/lesson/trainingrecord/manage/index.vue new file mode 100644 index 000000000..7161f7969 --- /dev/null +++ b/src/views/lesson/trainingrecord/manage/index.vue @@ -0,0 +1,114 @@ + + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/manage/stepmanage/index.vue b/src/views/lesson/trainingrecord/manage/stepmanage/index.vue new file mode 100644 index 000000000..cdbaadf6f --- /dev/null +++ b/src/views/lesson/trainingrecord/manage/stepmanage/index.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/manage/stepmanage/stationlist/index.vue b/src/views/lesson/trainingrecord/manage/stepmanage/stationlist/index.vue new file mode 100644 index 000000000..d1fb835b2 --- /dev/null +++ b/src/views/lesson/trainingrecord/manage/stepmanage/stationlist/index.vue @@ -0,0 +1,76 @@ + + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/index.vue b/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/index.vue new file mode 100644 index 000000000..789fdfc38 --- /dev/null +++ b/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/index.vue @@ -0,0 +1,49 @@ + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/list.vue b/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/list.vue new file mode 100644 index 000000000..4359b56e5 --- /dev/null +++ b/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/list.vue @@ -0,0 +1,40 @@ + + \ No newline at end of file diff --git a/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/step.vue b/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/step.vue new file mode 100644 index 000000000..da5713376 --- /dev/null +++ b/src/views/lesson/trainingrecord/manage/stepmanage/stepinfo/step.vue @@ -0,0 +1,222 @@ + + \ No newline at end of file diff --git a/src/views/management/dictionary/edit.vue b/src/views/management/dictionary/edit.vue new file mode 100644 index 000000000..6269d09b9 --- /dev/null +++ b/src/views/management/dictionary/edit.vue @@ -0,0 +1,155 @@ + + + \ No newline at end of file diff --git a/src/views/management/dictionary/index.vue b/src/views/management/dictionary/index.vue new file mode 100644 index 000000000..76dbbf8f2 --- /dev/null +++ b/src/views/management/dictionary/index.vue @@ -0,0 +1,138 @@ + + + \ No newline at end of file diff --git a/src/views/management/dictionaryDetail/edit.vue b/src/views/management/dictionaryDetail/edit.vue new file mode 100644 index 000000000..71b8d69ae --- /dev/null +++ b/src/views/management/dictionaryDetail/edit.vue @@ -0,0 +1,159 @@ + + + \ No newline at end of file diff --git a/src/views/management/dictionaryDetail/index.vue b/src/views/management/dictionaryDetail/index.vue new file mode 100644 index 000000000..1f8a7da4b --- /dev/null +++ b/src/views/management/dictionaryDetail/index.vue @@ -0,0 +1,166 @@ + + + + \ No newline at end of file diff --git a/src/views/management/existingSimulation/index.vue b/src/views/management/existingSimulation/index.vue new file mode 100644 index 000000000..c8aeb3bb5 --- /dev/null +++ b/src/views/management/existingSimulation/index.vue @@ -0,0 +1,206 @@ + + + diff --git a/src/views/management/userControl/correlationMap.vue b/src/views/management/userControl/correlationMap.vue new file mode 100644 index 000000000..5cb7f5cb0 --- /dev/null +++ b/src/views/management/userControl/correlationMap.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/src/views/management/userControl/edit.vue b/src/views/management/userControl/edit.vue new file mode 100644 index 000000000..5e2b4fd47 --- /dev/null +++ b/src/views/management/userControl/edit.vue @@ -0,0 +1,101 @@ + + + \ No newline at end of file diff --git a/src/views/management/userControl/index.vue b/src/views/management/userControl/index.vue new file mode 100644 index 000000000..52a885670 --- /dev/null +++ b/src/views/management/userControl/index.vue @@ -0,0 +1,146 @@ + + + \ No newline at end of file diff --git a/src/views/management/userExam/edit.vue b/src/views/management/userExam/edit.vue new file mode 100644 index 000000000..17ce53c9e --- /dev/null +++ b/src/views/management/userExam/edit.vue @@ -0,0 +1,107 @@ + + + \ No newline at end of file diff --git a/src/views/management/userExam/index.vue b/src/views/management/userExam/index.vue new file mode 100644 index 000000000..df01a323c --- /dev/null +++ b/src/views/management/userExam/index.vue @@ -0,0 +1,150 @@ + + + \ No newline at end of file diff --git a/src/views/management/userSimulation/add.vue b/src/views/management/userSimulation/add.vue new file mode 100644 index 000000000..afc76dd0e --- /dev/null +++ b/src/views/management/userSimulation/add.vue @@ -0,0 +1,201 @@ + + + \ No newline at end of file diff --git a/src/views/management/userSimulation/edit.vue b/src/views/management/userSimulation/edit.vue new file mode 100644 index 000000000..62b6ad1a8 --- /dev/null +++ b/src/views/management/userSimulation/edit.vue @@ -0,0 +1,109 @@ + + + \ No newline at end of file diff --git a/src/views/management/userSimulation/index.vue b/src/views/management/userSimulation/index.vue new file mode 100644 index 000000000..fdfe4c0cc --- /dev/null +++ b/src/views/management/userSimulation/index.vue @@ -0,0 +1,171 @@ + + + \ No newline at end of file diff --git a/src/views/management/userTraining/add.vue b/src/views/management/userTraining/add.vue new file mode 100644 index 000000000..502c58470 --- /dev/null +++ b/src/views/management/userTraining/add.vue @@ -0,0 +1,186 @@ + + + \ No newline at end of file diff --git a/src/views/management/userTraining/addTraining.vue b/src/views/management/userTraining/addTraining.vue new file mode 100644 index 000000000..4d41fa0e3 --- /dev/null +++ b/src/views/management/userTraining/addTraining.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/src/views/management/userTraining/edit.vue b/src/views/management/userTraining/edit.vue new file mode 100644 index 000000000..cc72d67bb --- /dev/null +++ b/src/views/management/userTraining/edit.vue @@ -0,0 +1,108 @@ + + + \ No newline at end of file diff --git a/src/views/management/userTraining/index.vue b/src/views/management/userTraining/index.vue new file mode 100644 index 000000000..0f49e384b --- /dev/null +++ b/src/views/management/userTraining/index.vue @@ -0,0 +1,146 @@ + + + \ No newline at end of file diff --git a/src/views/map/mapdraft/mapmanage/edit.vue b/src/views/map/mapdraft/mapmanage/edit.vue index 96ed6a2f5..dcf564032 100644 --- a/src/views/map/mapdraft/mapmanage/edit.vue +++ b/src/views/map/mapdraft/mapmanage/edit.vue @@ -213,7 +213,7 @@ export default { }, initLoadData() { this.cityList = []; - // this.$Dictionary.CityType().then(list => { + // this.$Dictionary.cityType().then(list => { // this.cityList = list; // }).catch(() => { // this.$messageBox('加载城市列表失败'); diff --git a/src/views/map/mapdraft/mapmanage/publish.vue b/src/views/map/mapdraft/mapmanage/publish.vue index f55062ae1..e3b40c439 100644 --- a/src/views/map/mapdraft/mapmanage/publish.vue +++ b/src/views/map/mapdraft/mapmanage/publish.vue @@ -56,7 +56,7 @@ export default { } }, mounted() { - // this.$Dictionary.CityType().then(list => { + // this.$Dictionary.cityType().then(list => { // this.cityList = list; // }); }, diff --git a/src/views/map/product/draft.vue b/src/views/map/product/draft.vue new file mode 100644 index 000000000..f786e5e0e --- /dev/null +++ b/src/views/map/product/draft.vue @@ -0,0 +1,304 @@ + + + + \ No newline at end of file diff --git a/src/views/map/product/list.vue b/src/views/map/product/list.vue new file mode 100644 index 000000000..9511579a8 --- /dev/null +++ b/src/views/map/product/list.vue @@ -0,0 +1,168 @@ + + + \ No newline at end of file diff --git a/src/views/map/runplan/chart.vue b/src/views/map/runplan/chart.vue new file mode 100644 index 000000000..7678071c7 --- /dev/null +++ b/src/views/map/runplan/chart.vue @@ -0,0 +1,364 @@ + + + \ No newline at end of file diff --git a/src/views/map/runplan/draft/setting.vue b/src/views/map/runplan/draft/setting.vue new file mode 100644 index 000000000..ee6ce592b --- /dev/null +++ b/src/views/map/runplan/draft/setting.vue @@ -0,0 +1,80 @@ + + + + \ No newline at end of file diff --git a/src/views/map/runplan/index.vue b/src/views/map/runplan/index.vue new file mode 100644 index 000000000..d08ba0e06 --- /dev/null +++ b/src/views/map/runplan/index.vue @@ -0,0 +1,67 @@ + + + + \ No newline at end of file diff --git a/src/views/map/runplan/manage/check.vue b/src/views/map/runplan/manage/check.vue new file mode 100644 index 000000000..b358b83f1 --- /dev/null +++ b/src/views/map/runplan/manage/check.vue @@ -0,0 +1,59 @@ + + + + \ No newline at end of file diff --git a/src/views/map/runplan/manage/create.vue b/src/views/map/runplan/manage/create.vue new file mode 100644 index 000000000..52379b2e6 --- /dev/null +++ b/src/views/map/runplan/manage/create.vue @@ -0,0 +1,319 @@ + + + + \ No newline at end of file diff --git a/src/views/map/runplan/manage/import.vue b/src/views/map/runplan/manage/import.vue new file mode 100644 index 000000000..9ce036d42 --- /dev/null +++ b/src/views/map/runplan/manage/import.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/src/views/map/runplan/manage/list.vue b/src/views/map/runplan/manage/list.vue new file mode 100644 index 000000000..e2d4cc458 --- /dev/null +++ b/src/views/map/runplan/manage/list.vue @@ -0,0 +1,141 @@ + + + + \ No newline at end of file diff --git a/src/views/map/runplan/manage/operateMenu.vue b/src/views/map/runplan/manage/operateMenu.vue new file mode 100644 index 000000000..47febec79 --- /dev/null +++ b/src/views/map/runplan/manage/operateMenu.vue @@ -0,0 +1,197 @@ + + + \ No newline at end of file diff --git a/src/views/map/runplan/manage/publish.vue b/src/views/map/runplan/manage/publish.vue new file mode 100644 index 000000000..cff68cbcc --- /dev/null +++ b/src/views/map/runplan/manage/publish.vue @@ -0,0 +1,78 @@ + + + \ No newline at end of file diff --git a/src/views/map/skinStyle/draft.vue b/src/views/map/skinStyle/draft.vue new file mode 100644 index 000000000..531294e01 --- /dev/null +++ b/src/views/map/skinStyle/draft.vue @@ -0,0 +1,266 @@ + + + + + \ No newline at end of file diff --git a/src/views/map/skinStyle/index.vue b/src/views/map/skinStyle/index.vue new file mode 100644 index 000000000..8107c76b0 --- /dev/null +++ b/src/views/map/skinStyle/index.vue @@ -0,0 +1,154 @@ + + + \ No newline at end of file diff --git a/src/views/orderauthor/author/detail.vue b/src/views/orderauthor/author/detail.vue new file mode 100644 index 000000000..f52ff9ab9 --- /dev/null +++ b/src/views/orderauthor/author/detail.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/src/views/orderauthor/author/draft.vue b/src/views/orderauthor/author/draft.vue new file mode 100644 index 000000000..d4097abbf --- /dev/null +++ b/src/views/orderauthor/author/draft.vue @@ -0,0 +1,236 @@ + + + + + \ No newline at end of file diff --git a/src/views/orderauthor/author/index.vue b/src/views/orderauthor/author/index.vue new file mode 100644 index 000000000..8f79cbb1f --- /dev/null +++ b/src/views/orderauthor/author/index.vue @@ -0,0 +1,265 @@ + + + \ No newline at end of file diff --git a/src/views/orderauthor/commodity/draft.vue b/src/views/orderauthor/commodity/draft.vue new file mode 100644 index 000000000..bdb15904a --- /dev/null +++ b/src/views/orderauthor/commodity/draft.vue @@ -0,0 +1,407 @@ + + + + + \ No newline at end of file diff --git a/src/views/orderauthor/commodity/index.vue b/src/views/orderauthor/commodity/index.vue new file mode 100644 index 000000000..a3fd4f582 --- /dev/null +++ b/src/views/orderauthor/commodity/index.vue @@ -0,0 +1,242 @@ + + + \ No newline at end of file diff --git a/src/views/orderauthor/order/addGoods.vue b/src/views/orderauthor/order/addGoods.vue new file mode 100644 index 000000000..e6aeb70f9 --- /dev/null +++ b/src/views/orderauthor/order/addGoods.vue @@ -0,0 +1,212 @@ + + + \ No newline at end of file diff --git a/src/views/orderauthor/order/canDistribute.vue b/src/views/orderauthor/order/canDistribute.vue new file mode 100644 index 000000000..dc46d97fc --- /dev/null +++ b/src/views/orderauthor/order/canDistribute.vue @@ -0,0 +1,54 @@ + + \ No newline at end of file diff --git a/src/views/orderauthor/order/draft.vue b/src/views/orderauthor/order/draft.vue new file mode 100644 index 000000000..46463eecd --- /dev/null +++ b/src/views/orderauthor/order/draft.vue @@ -0,0 +1,569 @@ + + + + + \ No newline at end of file diff --git a/src/views/orderauthor/order/list.vue b/src/views/orderauthor/order/list.vue new file mode 100644 index 000000000..bffb1fefc --- /dev/null +++ b/src/views/orderauthor/order/list.vue @@ -0,0 +1,333 @@ + + + \ No newline at end of file diff --git a/src/views/orderauthor/permission/detail.vue b/src/views/orderauthor/permission/detail.vue new file mode 100644 index 000000000..4e700b695 --- /dev/null +++ b/src/views/orderauthor/permission/detail.vue @@ -0,0 +1,200 @@ + + + + \ No newline at end of file diff --git a/src/views/orderauthor/permission/draft/choosePermission.vue b/src/views/orderauthor/permission/draft/choosePermission.vue new file mode 100644 index 000000000..f21da73c8 --- /dev/null +++ b/src/views/orderauthor/permission/draft/choosePermission.vue @@ -0,0 +1,219 @@ + + + \ No newline at end of file diff --git a/src/views/orderauthor/permission/draft/ruleForm.vue b/src/views/orderauthor/permission/draft/ruleForm.vue new file mode 100644 index 000000000..fba3e19e2 --- /dev/null +++ b/src/views/orderauthor/permission/draft/ruleForm.vue @@ -0,0 +1,245 @@ + + + + \ No newline at end of file diff --git a/src/views/orderauthor/permission/index.vue b/src/views/orderauthor/permission/index.vue new file mode 100644 index 000000000..5fddddc02 --- /dev/null +++ b/src/views/orderauthor/permission/index.vue @@ -0,0 +1,285 @@ + + + \ No newline at end of file diff --git a/src/views/package/draft/canDistribute.vue b/src/views/package/draft/canDistribute.vue new file mode 100644 index 000000000..f0d003267 --- /dev/null +++ b/src/views/package/draft/canDistribute.vue @@ -0,0 +1,51 @@ + + \ No newline at end of file diff --git a/src/views/package/draft/editRule.vue b/src/views/package/draft/editRule.vue new file mode 100644 index 000000000..cc7c54504 --- /dev/null +++ b/src/views/package/draft/editRule.vue @@ -0,0 +1,328 @@ + + + + + + \ No newline at end of file diff --git a/src/views/package/draft/ruleForm.vue b/src/views/package/draft/ruleForm.vue new file mode 100644 index 000000000..c0a9286af --- /dev/null +++ b/src/views/package/draft/ruleForm.vue @@ -0,0 +1,310 @@ + + + + \ No newline at end of file diff --git a/src/views/package/index.vue b/src/views/package/index.vue new file mode 100644 index 000000000..58aaaa229 --- /dev/null +++ b/src/views/package/index.vue @@ -0,0 +1,232 @@ + + + \ No newline at end of file diff --git a/src/views/package/selectRole/list.vue b/src/views/package/selectRole/list.vue new file mode 100644 index 000000000..1f5dd4da3 --- /dev/null +++ b/src/views/package/selectRole/list.vue @@ -0,0 +1,122 @@ + + + \ No newline at end of file diff --git a/src/views/planMonitor/detail.vue b/src/views/planMonitor/detail.vue new file mode 100644 index 000000000..9a57a9ab8 --- /dev/null +++ b/src/views/planMonitor/detail.vue @@ -0,0 +1,205 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/index.vue b/src/views/planMonitor/editTool/index.vue new file mode 100644 index 000000000..35e112416 --- /dev/null +++ b/src/views/planMonitor/editTool/index.vue @@ -0,0 +1,487 @@ + + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menuBar.vue b/src/views/planMonitor/editTool/menuBar.vue new file mode 100644 index 000000000..34a082792 --- /dev/null +++ b/src/views/planMonitor/editTool/menuBar.vue @@ -0,0 +1,728 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menuTool.vue b/src/views/planMonitor/editTool/menuTool.vue new file mode 100644 index 000000000..d3ecde016 --- /dev/null +++ b/src/views/planMonitor/editTool/menuTool.vue @@ -0,0 +1,172 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/addPlanningTrain.vue b/src/views/planMonitor/editTool/menus/addPlanningTrain.vue new file mode 100644 index 000000000..27efe2da9 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/addPlanningTrain.vue @@ -0,0 +1,92 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/addSmoothRunTime.vue b/src/views/planMonitor/editTool/menus/addSmoothRunTime.vue new file mode 100644 index 000000000..6d042481b --- /dev/null +++ b/src/views/planMonitor/editTool/menus/addSmoothRunTime.vue @@ -0,0 +1,140 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/addTask.vue b/src/views/planMonitor/editTool/menus/addTask.vue new file mode 100644 index 000000000..7f0487536 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/addTask.vue @@ -0,0 +1,317 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/components/dataTable.vue b/src/views/planMonitor/editTool/menus/components/dataTable.vue new file mode 100644 index 000000000..6d0ad3146 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/components/dataTable.vue @@ -0,0 +1,203 @@ + + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/createEmptyPlan.vue b/src/views/planMonitor/editTool/menus/createEmptyPlan.vue new file mode 100644 index 000000000..64ad3a8c5 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/createEmptyPlan.vue @@ -0,0 +1,90 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/deleteTask.vue b/src/views/planMonitor/editTool/menus/deleteTask.vue new file mode 100644 index 000000000..84c149433 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/deleteTask.vue @@ -0,0 +1,91 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/duplicateTrain.vue b/src/views/planMonitor/editTool/menus/duplicateTrain.vue new file mode 100644 index 000000000..4f22bb19b --- /dev/null +++ b/src/views/planMonitor/editTool/menus/duplicateTrain.vue @@ -0,0 +1,90 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/editPlanningTrain.vue b/src/views/planMonitor/editTool/menus/editPlanningTrain.vue new file mode 100644 index 000000000..eead789fd --- /dev/null +++ b/src/views/planMonitor/editTool/menus/editPlanningTrain.vue @@ -0,0 +1,232 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/editSmoothRunTime.vue b/src/views/planMonitor/editTool/menus/editSmoothRunTime.vue new file mode 100644 index 000000000..87ae64950 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/editSmoothRunTime.vue @@ -0,0 +1,113 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/editStationBetweenTime.vue b/src/views/planMonitor/editTool/menus/editStationBetweenTime.vue new file mode 100644 index 000000000..d622cde02 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/editStationBetweenTime.vue @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/lookup.vue b/src/views/planMonitor/editTool/menus/lookup.vue new file mode 100644 index 000000000..3e94d21d0 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/lookup.vue @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/modifyingBeginTime.vue b/src/views/planMonitor/editTool/menus/modifyingBeginTime.vue new file mode 100644 index 000000000..42c4e50e3 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/modifyingBeginTime.vue @@ -0,0 +1,64 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/modifyingRouting.vue b/src/views/planMonitor/editTool/menus/modifyingRouting.vue new file mode 100644 index 000000000..4c757e95b --- /dev/null +++ b/src/views/planMonitor/editTool/menus/modifyingRouting.vue @@ -0,0 +1,85 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/modifyingStationIntervalTime.vue b/src/views/planMonitor/editTool/menus/modifyingStationIntervalTime.vue new file mode 100644 index 000000000..fc05ed699 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/modifyingStationIntervalTime.vue @@ -0,0 +1,183 @@ + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/modifyingTask.vue b/src/views/planMonitor/editTool/menus/modifyingTask.vue new file mode 100644 index 000000000..60d5a481f --- /dev/null +++ b/src/views/planMonitor/editTool/menus/modifyingTask.vue @@ -0,0 +1,423 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/offLine.vue b/src/views/planMonitor/editTool/menus/offLine.vue new file mode 100644 index 000000000..1111996b5 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/offLine.vue @@ -0,0 +1,68 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/openRunPlan.vue b/src/views/planMonitor/editTool/menus/openRunPlan.vue new file mode 100644 index 000000000..aced4f971 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/openRunPlan.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/baseLoop.vue b/src/views/planMonitor/editTool/menus/parameter/baseLoop.vue new file mode 100644 index 000000000..8f8c3259f --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/baseLoop.vue @@ -0,0 +1,65 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/baseParameter.vue b/src/views/planMonitor/editTool/menus/parameter/baseParameter.vue new file mode 100644 index 000000000..22747ceda --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/baseParameter.vue @@ -0,0 +1,72 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/baseParkingDepot.vue b/src/views/planMonitor/editTool/menus/parameter/baseParkingDepot.vue new file mode 100644 index 000000000..4c33b3c1a --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/baseParkingDepot.vue @@ -0,0 +1,44 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/baseRouting.vue b/src/views/planMonitor/editTool/menus/parameter/baseRouting.vue new file mode 100644 index 000000000..ea9e85b70 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/baseRouting.vue @@ -0,0 +1,53 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/baseStation.vue b/src/views/planMonitor/editTool/menus/parameter/baseStation.vue new file mode 100644 index 000000000..f57802bd8 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/baseStation.vue @@ -0,0 +1,44 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/index.vue b/src/views/planMonitor/editTool/menus/parameter/index.vue new file mode 100644 index 000000000..13bbed1f5 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/index.vue @@ -0,0 +1,95 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/modifyingDepotProperty.vue b/src/views/planMonitor/editTool/menus/parameter/modifyingDepotProperty.vue new file mode 100644 index 000000000..6eec7445f --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/modifyingDepotProperty.vue @@ -0,0 +1,73 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/modifyingStationProperty.vue b/src/views/planMonitor/editTool/menus/parameter/modifyingStationProperty.vue new file mode 100644 index 000000000..b6ffd4132 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/modifyingStationProperty.vue @@ -0,0 +1,113 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/parameter/modifyingStationStandProperty.vue b/src/views/planMonitor/editTool/menus/parameter/modifyingStationStandProperty.vue new file mode 100644 index 000000000..d06ce5fe6 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/parameter/modifyingStationStandProperty.vue @@ -0,0 +1,73 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/quickLoopsIncrease.vue b/src/views/planMonitor/editTool/menus/quickLoopsIncrease.vue new file mode 100644 index 000000000..6e963ac92 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/quickLoopsIncrease.vue @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/quickTaskIncrease.vue b/src/views/planMonitor/editTool/menus/quickTaskIncrease.vue new file mode 100644 index 000000000..2ac99000f --- /dev/null +++ b/src/views/planMonitor/editTool/menus/quickTaskIncrease.vue @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/routingSelection.vue b/src/views/planMonitor/editTool/menus/routingSelection.vue new file mode 100644 index 000000000..631b5f45d --- /dev/null +++ b/src/views/planMonitor/editTool/menus/routingSelection.vue @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/selectDeleteRoute.vue b/src/views/planMonitor/editTool/menus/selectDeleteRoute.vue new file mode 100644 index 000000000..f557ee6a1 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/selectDeleteRoute.vue @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/selectPrintArea.vue b/src/views/planMonitor/editTool/menus/selectPrintArea.vue new file mode 100644 index 000000000..49d538139 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/selectPrintArea.vue @@ -0,0 +1,45 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/systermOut.vue b/src/views/planMonitor/editTool/menus/systermOut.vue new file mode 100644 index 000000000..0f18a09fe --- /dev/null +++ b/src/views/planMonitor/editTool/menus/systermOut.vue @@ -0,0 +1,62 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/menus/updateStationIntervalTime.vue b/src/views/planMonitor/editTool/menus/updateStationIntervalTime.vue new file mode 100644 index 000000000..959077da7 --- /dev/null +++ b/src/views/planMonitor/editTool/menus/updateStationIntervalTime.vue @@ -0,0 +1,116 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/schedule.vue b/src/views/planMonitor/editTool/schedule.vue new file mode 100644 index 000000000..c3258a9f7 --- /dev/null +++ b/src/views/planMonitor/editTool/schedule.vue @@ -0,0 +1,519 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/statusBar.vue b/src/views/planMonitor/editTool/statusBar.vue new file mode 100644 index 000000000..22c676719 --- /dev/null +++ b/src/views/planMonitor/editTool/statusBar.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/src/views/planMonitor/editTool/titleBar.vue b/src/views/planMonitor/editTool/titleBar.vue new file mode 100644 index 000000000..02c78a8c6 --- /dev/null +++ b/src/views/planMonitor/editTool/titleBar.vue @@ -0,0 +1,74 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/home.vue b/src/views/planMonitor/home.vue new file mode 100644 index 000000000..2d722cc4c --- /dev/null +++ b/src/views/planMonitor/home.vue @@ -0,0 +1,98 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/index.vue b/src/views/planMonitor/index.vue new file mode 100644 index 000000000..5d845668a --- /dev/null +++ b/src/views/planMonitor/index.vue @@ -0,0 +1,77 @@ + + + + \ No newline at end of file diff --git a/src/views/planMonitor/planmanage/planList.vue b/src/views/planMonitor/planmanage/planList.vue new file mode 100644 index 000000000..6a293e19a --- /dev/null +++ b/src/views/planMonitor/planmanage/planList.vue @@ -0,0 +1,132 @@ + + + \ No newline at end of file diff --git a/src/views/publish/examRule/draft/editRule.vue b/src/views/publish/examRule/draft/editRule.vue new file mode 100644 index 000000000..aa80c7fff --- /dev/null +++ b/src/views/publish/examRule/draft/editRule.vue @@ -0,0 +1,301 @@ + + + + \ No newline at end of file diff --git a/src/views/publish/examRule/draft/examFrom.vue b/src/views/publish/examRule/draft/examFrom.vue new file mode 100644 index 000000000..410a9160c --- /dev/null +++ b/src/views/publish/examRule/draft/examFrom.vue @@ -0,0 +1,272 @@ + + + + \ No newline at end of file diff --git a/src/views/publish/examRule/draft/index.vue b/src/views/publish/examRule/draft/index.vue new file mode 100644 index 000000000..0ac28bb6f --- /dev/null +++ b/src/views/publish/examRule/draft/index.vue @@ -0,0 +1,165 @@ + + + + \ No newline at end of file diff --git a/src/views/publish/examRule/draft/rule.vue b/src/views/publish/examRule/draft/rule.vue new file mode 100644 index 000000000..79ee48d61 --- /dev/null +++ b/src/views/publish/examRule/draft/rule.vue @@ -0,0 +1,291 @@ + + + + \ No newline at end of file diff --git a/src/views/publish/examRule/index.vue b/src/views/publish/examRule/index.vue new file mode 100644 index 000000000..d6402beec --- /dev/null +++ b/src/views/publish/examRule/index.vue @@ -0,0 +1,321 @@ + + + + \ No newline at end of file diff --git a/src/views/publish/productStatus/index.vue b/src/views/publish/productStatus/index.vue new file mode 100644 index 000000000..9329321fd --- /dev/null +++ b/src/views/publish/productStatus/index.vue @@ -0,0 +1,180 @@ + + + \ No newline at end of file diff --git a/src/views/publish/publishLesson/index.vue b/src/views/publish/publishLesson/index.vue new file mode 100644 index 000000000..ba099f9d4 --- /dev/null +++ b/src/views/publish/publishLesson/index.vue @@ -0,0 +1,187 @@ + + + \ No newline at end of file diff --git a/src/views/publish/publishMap/draft.vue b/src/views/publish/publishMap/draft.vue new file mode 100644 index 000000000..50db883d1 --- /dev/null +++ b/src/views/publish/publishMap/draft.vue @@ -0,0 +1,160 @@ + + + + + \ No newline at end of file diff --git a/src/views/publish/publishMap/index.vue b/src/views/publish/publishMap/index.vue new file mode 100644 index 000000000..e447daf42 --- /dev/null +++ b/src/views/publish/publishMap/index.vue @@ -0,0 +1,258 @@ + + + \ No newline at end of file diff --git a/src/views/publish/runPlanCommon/chooseTemplatePlan.vue b/src/views/publish/runPlanCommon/chooseTemplatePlan.vue new file mode 100644 index 000000000..877ffbf2e --- /dev/null +++ b/src/views/publish/runPlanCommon/chooseTemplatePlan.vue @@ -0,0 +1,123 @@ + + + + \ No newline at end of file diff --git a/src/views/publish/runPlanCommon/draft.vue b/src/views/publish/runPlanCommon/draft.vue new file mode 100644 index 000000000..e6d961c86 --- /dev/null +++ b/src/views/publish/runPlanCommon/draft.vue @@ -0,0 +1,182 @@ + + + + + \ No newline at end of file diff --git a/src/views/publish/runPlanCommon/index.vue b/src/views/publish/runPlanCommon/index.vue new file mode 100644 index 000000000..69c6f541d --- /dev/null +++ b/src/views/publish/runPlanCommon/index.vue @@ -0,0 +1,121 @@ + + + \ No newline at end of file diff --git a/src/views/publish/runPlanEveryDay/index.vue b/src/views/publish/runPlanEveryDay/index.vue new file mode 100644 index 000000000..6a384eb2c --- /dev/null +++ b/src/views/publish/runPlanEveryDay/index.vue @@ -0,0 +1,139 @@ + + + \ No newline at end of file diff --git a/src/views/publish/runPlanTemplate/index.vue b/src/views/publish/runPlanTemplate/index.vue new file mode 100644 index 000000000..5ccbe7b74 --- /dev/null +++ b/src/views/publish/runPlanTemplate/index.vue @@ -0,0 +1,161 @@ + + + \ No newline at end of file diff --git a/src/views/publish/simulationScript/index.vue b/src/views/publish/simulationScript/index.vue new file mode 100644 index 000000000..eb471e363 --- /dev/null +++ b/src/views/publish/simulationScript/index.vue @@ -0,0 +1,141 @@ + + + \ No newline at end of file diff --git a/src/views/replay/index.vue b/src/views/replay/index.vue new file mode 100644 index 000000000..a3c198692 --- /dev/null +++ b/src/views/replay/index.vue @@ -0,0 +1,146 @@ + + + \ No newline at end of file diff --git a/src/views/screenMonitor/detail/index.vue b/src/views/screenMonitor/detail/index.vue new file mode 100644 index 000000000..c620b7730 --- /dev/null +++ b/src/views/screenMonitor/detail/index.vue @@ -0,0 +1,256 @@ + + + + \ No newline at end of file diff --git a/src/views/screenMonitor/home.vue b/src/views/screenMonitor/home.vue new file mode 100644 index 000000000..19a0fdef2 --- /dev/null +++ b/src/views/screenMonitor/home.vue @@ -0,0 +1,101 @@ + + + + \ No newline at end of file diff --git a/src/views/screenMonitor/index.vue b/src/views/screenMonitor/index.vue new file mode 100644 index 000000000..ea0c921fa --- /dev/null +++ b/src/views/screenMonitor/index.vue @@ -0,0 +1,87 @@ + + + + \ No newline at end of file diff --git a/src/views/screenMonitor/list/demonList.vue b/src/views/screenMonitor/list/demonList.vue new file mode 100644 index 000000000..5547cead4 --- /dev/null +++ b/src/views/screenMonitor/list/demonList.vue @@ -0,0 +1,131 @@ + + + \ No newline at end of file diff --git a/src/views/teach/category/tree.vue b/src/views/teach/category/tree.vue new file mode 100644 index 000000000..3abe96876 --- /dev/null +++ b/src/views/teach/category/tree.vue @@ -0,0 +1,207 @@ + + + + \ No newline at end of file diff --git a/src/views/teach/detail/index.vue b/src/views/teach/detail/index.vue new file mode 100644 index 000000000..0e97d657f --- /dev/null +++ b/src/views/teach/detail/index.vue @@ -0,0 +1,163 @@ + + + + \ No newline at end of file diff --git a/src/views/teach/home.vue b/src/views/teach/home.vue new file mode 100644 index 000000000..429fc8a2e --- /dev/null +++ b/src/views/teach/home.vue @@ -0,0 +1,105 @@ + + + + \ No newline at end of file diff --git a/src/views/teach/index.vue b/src/views/teach/index.vue new file mode 100644 index 000000000..88b1eed6d --- /dev/null +++ b/src/views/teach/index.vue @@ -0,0 +1,83 @@ + + + + \ No newline at end of file diff --git a/src/views/teach/practical/index.vue b/src/views/teach/practical/index.vue new file mode 100644 index 000000000..cb05ca038 --- /dev/null +++ b/src/views/teach/practical/index.vue @@ -0,0 +1,129 @@ + + + + \ No newline at end of file diff --git a/src/views/trainRoom/addPerson.vue b/src/views/trainRoom/addPerson.vue new file mode 100644 index 000000000..f11ca14a8 --- /dev/null +++ b/src/views/trainRoom/addPerson.vue @@ -0,0 +1,158 @@ + + + + + \ No newline at end of file diff --git a/src/views/trainRoom/index.vue b/src/views/trainRoom/index.vue new file mode 100644 index 000000000..0e44aeb1d --- /dev/null +++ b/src/views/trainRoom/index.vue @@ -0,0 +1,846 @@ + + + + + diff --git a/src/views/trainRoom/operateMenu.vue b/src/views/trainRoom/operateMenu.vue new file mode 100644 index 000000000..8ffbd3a13 --- /dev/null +++ b/src/views/trainRoom/operateMenu.vue @@ -0,0 +1,83 @@ + + + \ No newline at end of file diff --git a/src/views/trainRoom/trainChat.vue b/src/views/trainRoom/trainChat.vue new file mode 100644 index 000000000..2ad3cc161 --- /dev/null +++ b/src/views/trainRoom/trainChat.vue @@ -0,0 +1,351 @@ + + + + + \ No newline at end of file