{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/projects/preview/assets/img/btn.png","webpack:///./src/projects/showroom/assets/icon/icon_3_8.png","webpack:///./src/projects/preview/assets/img/logo.png","webpack:///./src/projects/showroom/assets/icon/icon_4_3.png","webpack:///./src/projects/preview/assets/img/share.png","webpack:///./src/projects/showroom/assets/icon/icon_3_10.png","webpack:///./src/projects/showroom/assets/icon/icon_2_3.png","webpack:///./src/projects/preview/assets/img/icon_qp_g.png","webpack:///./src/projects/showroom/assets/icon/icon_1_2_2.png","webpack:///./src/projects/showroom/assets/icon/icon_4_10.png","webpack:///./src/projects/showroom/assets/icon/icon_4_7.png","webpack:///./src/projects/showroom/assets/icon/icon_1_7.png","webpack:///./src/projects/showroom/assets/icon/icon_3_2_2.png","webpack:///./src/projects/preview/assets/img/download.png","webpack:///./src/projects/preview/assets/img/rule.png","webpack:///./src/projects/showroom/assets/icon/icon_4_6.png","webpack:///./src/projects/preview/assets/img/icon_yu_g.png","webpack:///./src/projects/dongsheng/assets/newImg/chatRoom/chat.png","webpack:///./src/projects/showroom/assets/icon/icon_1_5.png","webpack:///./src/projects/showroom/assets/icon/icon_3_4.png","webpack:///./src/projects/showroom/assets/icon/icon_1_1.png","webpack:///./src/projects/common/images/alpha.png","webpack:///./src/projects/showroom/assets/icon/icon_4_1.png","webpack:///./src/projects/showroom/components/box.vue?8168","webpack:///./src/projects/preview/components/mobileTest.vue?e89a","webpack:///./src/projects/preview/components/banner.vue?5449","webpack:///./src/projects/showroom/assets/icon/icon_1_4.png","webpack:///./src/projects/preview/components/MainView.vue?765f","webpack:///./src/projects/showroom/assets/icon/icon_2_10.png","webpack:///./src/projects/showroom/assets/img/bg-left.png","webpack:///./src/projects/showroom/assets/icon/icon_1_10.png","webpack:///./src/projects/preview/App.vue?7d17","webpack:///./src/projects/preview/components/MainView.vue?9b92","webpack:///./src/projects/preview/assets/api/request.js","webpack:///./src/projects/preview/assets/api/index.js","webpack:///./src/projects/common/js/bus.js","webpack:///src/projects/preview/components/MainView.vue","webpack:///./src/projects/preview/components/MainView.vue?a7f2","webpack:///./src/projects/preview/components/MainView.vue","webpack:///./src/projects/preview/components/client.vue?51ba","webpack:///src/projects/preview/components/client.vue","webpack:///./src/projects/preview/components/client.vue?c438","webpack:///./src/projects/preview/components/client.vue","webpack:///./src/projects/showroom/components/box.vue?846a","webpack:///src/projects/showroom/components/box.vue","webpack:///./src/projects/showroom/components/box.vue?5d50","webpack:///./src/projects/showroom/components/box.vue","webpack:///./src/projects/preview/components/handShake.vue?4213","webpack:///src/projects/preview/components/handShake.vue","webpack:///./src/projects/preview/components/handShake.vue?a82c","webpack:///./src/projects/preview/components/handShake.vue","webpack:///./src/projects/preview/components/mobileTest.vue?a6bc","webpack:///src/projects/preview/components/mobileTest.vue","webpack:///./src/projects/preview/components/mobileTest.vue?44c8","webpack:///./src/projects/preview/components/mobileTest.vue","webpack:///./src/projects/preview/components/banner.vue?fac0","webpack:///src/projects/preview/components/banner.vue","webpack:///./src/projects/preview/components/banner.vue?1245","webpack:///./src/projects/preview/components/banner.vue","webpack:///./src/projects/showroom/components/playNew_repair.vue?5f29","webpack:///./src/projects/dongsheng/player.js","webpack:///src/projects/showroom/components/playNew_repair.vue","webpack:///./src/projects/showroom/components/playNew_repair.vue?d34e","webpack:///./src/projects/showroom/components/playNew_repair.vue","webpack:///./src/projects/preview/components/function.vue?60f2","webpack:///src/projects/preview/components/function.vue","webpack:///./src/projects/preview/components/function.vue?b5e1","webpack:///./src/projects/preview/components/function.vue","webpack:///./src/projects/preview/components/login.vue?b58a","webpack:///./src/projects/preview/components/chat.vue?eb17","webpack:///src/projects/preview/components/chat.vue","webpack:///./src/projects/preview/components/chat.vue?cda8","webpack:///./src/projects/preview/components/chat.vue","webpack:///src/projects/preview/components/login.vue","webpack:///./src/projects/preview/components/login.vue?2edc","webpack:///./src/projects/preview/components/login.vue","webpack:///./src/projects/preview/components/login1.vue?6153","webpack:///src/projects/preview/components/login1.vue","webpack:///./src/projects/preview/components/login1.vue?7572","webpack:///./src/projects/preview/components/login1.vue","webpack:///src/projects/preview/App.vue","webpack:///./src/projects/preview/App.vue?c96b","webpack:///./src/projects/preview/App.vue","webpack:///./src/projects/preview/store/index.js","webpack:///./src/projects/common/js/OrbitControls.js","webpack:///./src/projects/common/js/animation.js","webpack:///./src/projects/common/js/o2.js","webpack:///./src/projects/showroom/assets/api/request.js","webpack:///./src/projects/common/js/showroom.js","webpack:///./src/projects/common/js/o2vrClient_repair.js","webpack:///./src/projects/common/js/o2Function.js","webpack:///./src/projects/common/js/chat.js","webpack:///./src/projects/preview/main.js","webpack:///./src/projects/showroom/assets/icon/icon_1_8.png","webpack:///./src/projects/preview/assets/img/role3.png","webpack:///./src/projects/showroom/assets/icon/icon_2_2_2.png","webpack:///./src/projects/wdf/assets/newImg/function/yuyinOpen.png","webpack:///./src/projects/showroom/assets/img/big.png","webpack:///./src/projects/showroom/assets/icon/icon_4_9.png","webpack:///./src/projects/preview/assets/img/role2.jpg","webpack:///./src/projects/preview/assets/img/addicon2.png","webpack:///./src/projects/preview/assets/img/icon_qp_k.png","webpack:///./src/projects/preview/App.vue?3f97","webpack:///./src/projects/showroom/assets/icon/icon_4_8.png","webpack:///./src/projects/preview/assets/img/icon_yu_k.png","webpack:///./src/projects/showroom/assets/icon/icon_2_7_2.png","webpack:///./src/projects/showroom/assets/icon/icon_4_7_2.png","webpack:///./src/projects/showroom/assets/icon/icon_1_2.png","webpack:///./src/projects/showroom/assets/icon/icon_3_6.png","webpack:///./src/projects/wdf/assets/newImg/function/close.png","webpack:///./src/projects/wdf/assets/右箭头.png","webpack:///./src/projects/preview/components/function.vue?8b51","webpack:///./src/projects/showroom/assets/icon/icon_1_6.png","webpack:///./src/projects/preview/components/login1.vue?43e9","webpack:///./src/projects/showroom/assets/img/bg-right.png","webpack:///./src/projects/showroom/assets/icon/icon_1_3.png","webpack:///./src/projects/wdf/assets/newImg/function/xiangjiClose.png","webpack:///./src/projects/showroom/assets/img/close.png","webpack:///./src/projects/wdf/assets/newImg/function/xiangjiOpen.png","webpack:///./src/projects/preview/assets/img/role1.jpg","webpack:///./src/projects/showroom/assets/icon/icon_2_9.png","webpack:///./src/projects/showroom/assets/icon/icon_3_2.png","webpack:///./src/projects/common/images/white.png","webpack:///./src/projects/preview/components/chat.vue?4856","webpack:///./src/projects/showroom/assets/icon/icon_2_8.png","webpack:///./src/projects/showroom/assets/icon/icon_2_6.png","webpack:///./src/projects/showroom/assets/icon/icon_1_9.png","webpack:///./src/projects/preview/components/handShake.vue?3241","webpack:///./src/projects/showroom/assets/icon/icon_3_7_2.png","webpack:///./src/projects/showroom/assets/icon/icon_3_9.png","webpack:///./src/projects/preview/assets/img/reduce.png","webpack:///./src/projects/preview/assets/img/role4.png","webpack:///./src/projects/showroom/assets/icon/icon_3_1.png","webpack:///./src/projects/showroom/assets/icon/icon_4_2.png","webpack:///./src/projects/showroom/assets/icon/icon_3_3.png","webpack:///./src/projects/showroom/assets/icon/icon_4_2_2.png","webpack:///./src/projects/showroom/assets/icon/icon_2_2.png","webpack:///./src/projects/common/images/half_alpha.png","webpack:///./src/projects/wdf/assets/newImg/function/yuyinClose.png","webpack:///./src/projects/dongsheng/assets/newImg/chatRoom/close.png","webpack:///./src/projects/showroom/assets/icon/icon_4_4.png","webpack:///./src/projects/preview/components/client.vue?0a42","webpack:///./src/projects/common/images/normalmap.jpg","webpack:///./src/projects/showroom/assets/img/small.png","webpack:///./src/projects/dongsheng/assets/newImg/chatRoom/group.png","webpack:///./src/projects/preview/assets/img/add.png","webpack:///./src/projects/showroom/assets/icon/icon_3_7.png","webpack:///./src/projects/showroom/assets/icon/icon_3_5.png","webpack:///./src/projects/showroom/assets/icon/icon_1_7_2.png","webpack:///./src/projects/preview/assets/img/role5.jpg","webpack:///./src/projects/preview/components/login.vue?55d0","webpack:///./src/projects/showroom/assets/icon/icon_4_5.png","webpack:///./src/projects/preview/assets/newImg/info.png","webpack:///./src/projects/showroom/assets/icon/icon_2_7.png","webpack:///./src/projects/showroom/assets/icon/icon_2_4.png","webpack:///./src/projects/dongsheng/assets/newImg/举手.png","webpack:///./src/projects/showroom/assets/icon/icon_2_5.png","webpack:///./src/projects/showroom/assets/img/re.png","webpack:///./src/projects/showroom/assets/icon/icon_2_1.png","webpack:///./src/projects/preview/assets/img/role6.jpg"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","flag","on","$event","infoFlag","_e","obj","floor_name","wall_name","vip","multi","id","staticRenderFns","_m","url","params","Promise","resolve","reject","axios","then","res","catch","err","post","QS","stringify","headers","localStorage","getItem","defaults","baseURL","timeout","add_popular","get_scene_user","getScene","get_scene_interacts","set_scene_thumbs","set_scene_comment","rtc_timer","search_time","update_time","qrcode","statistics","config","get_solo_media","Vue","components","desc","O2","selObj","methods","readTextFile","rawFile","XMLHttpRequest","overrideMimeType","open","file","onreadystatechange","readyState","status","callback","responseText","send","load","document","showroom","room","wxConfig","w","documentElement","clientWidth","o2","cameraControls","orientation","console","log","sceneTitle","title","utf8to16","set_edit_mode","changeSence","that","type","text","JSON","parse","room_id","secret","ratio","query","atob","guid","edit_info","pswFlag","psw","$notify","message","confirmButtonText","inputErrorMessage","debug","appId","rs","timestamp","nonceStr","signature","jsApiList","success","link","location","href","imgUrl","logo","preview","errMsg","beforeCreate","created","mounted","component","directives","rawName","localFlag","list","expression","class","suo","playValue","stopPropagation","_v","_s","sharename","staticStyle","shipinFlag","$chat","role","yuyinFlag","_l","item","index","userId","hasAudio","audioMuted","hasVideo","videoMuted","screenFlag","shareFlag","qpFlag","imgFlag","two","jinyanflag","hostguest","shrinkFlag","Bus","$on","e","getElementById","innerHTML","placement","content","duration","forEach","stream","getUserId","node","createElement","setAttribute","shadow","appendChild","play","box","remove","checkFlag","style","scale","position","left","right","top","bottom","checkWidth","start","arguments","audio","iframeFlag","ref","playerOptions","f","img","font","close","touch","flag1","vedio","vedioFlag","functionBox","moveobj","playbackRates","autoplay","muted","loop","preload","language","aspectRatio","fluid","sources","poster","notSupportedMessage","controlBar","timeDivider","durationDisplay","remainingTimeDisplay","fullscreenToggle","setTimeout","clientHeight","className","body","addEventListener","move","end","removeEventListener","changeBox","cssText","split","target","res_list","voice_res","CheckUrl","a","regstr","test","linkValue","replace","watch","handler","newValue","clientX","oldValue","clientY","touches","deep","val","src","props","x","y","opacity","preventDefault","newV","oldV","banner","width","loading_msg","vflag","o2vr","on_loading_msg","b","player","THREE","sex","auth","accInfo","dicBone","arrBone","mixer","modelIdx","isNPC","bodyMat","bodyColor","hairMat","hairColor","arrAccObj","boneInverses","onStateChg","info","action","setPlayerInfo","setModel","initAcc","setHairColor","setBodyColor","namePanel","add_lable_to_char","handPanel","add_hand_to_char","visible","isTemp","scene","add","clipName","state","playClip","isChgModel","parseInt","undefined","arrStr","arrAccName","indexOf","modelUrl","arrPrebAcc","prebAcc","idx","setAcc","children","Number","arrObj","pos","rot","modelPreb","rotation","cloneObj","curAction","lastAction","time","enabled","crossFadeTo","clips","skeletons","traverse","child","material","clone","transparent","set","z","preb","clonePreb","onModelLoad","promise","import_object_url","obj3","vertexColors","color","multiplyScalar","initPrebAcc","arr","resetPlayer","rgb","accs","hairType","hairIdx","hatType","acc","newAcc","cloneAcc","curIdx","newArr","skeleton","bones","bindMatrix","playerInfo","temp","bone","bonearr","getBoneArray","rootBone","isAcc","k","skinmesh","accMesh","geometry","dispose","vertices","normals","skinIndices","skinWeights","arrUV","arrUV2","matrices","matrix","combineMat","map","poses","attributes","array","applyMatrix4","arrNormal","normal","uv","bs","idxs","skinIndex","wgts","skinWeight","arrMatrix","boneMatrices","mesh","clamp","clip","setState","clipAction","clampWhenFinished","canvas","height","drawingContext","getContext","fillStyle","globalAlpha","fillRect","textAlign","fillText","sprite","depthWrite","handMat","depthTest","texLoader","handTexPath","tex","loadTempModel","tempModel","tempUrl","require","colli","last_click_time","touch_time","ws","last_pos_send","last_click_pos","bPaused","bEditMode","itemName","floor","player_name","ws_pos_cold_down","player_id","bLoginSuccess","viewHeight","moveSpd","_o2","char_urls","view_length","role_id","bKeyCtrl","bAutoMove","targetAutoMove","moveDir","mouse_down","onMouseDown","event","Date","now","onMouseMove","click_able_items","intersects","bind_id","highlight_object","showbox","Hyperlinks","cursor","matrixWorld","mtl_highlight","Base64","_keyStr","encode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","_utf8_encode","charCodeAt","isNaN","decode","charAt","String","fromCharCode","_utf8_decode","string","utftext","c2","c3","send_position_to_server","bForce","str","stop_ctrl","bStop","old_pos","camera","old_eye","onItemClick","intersect","parent_root","parent","guide_view","active_guide","toView","bGuideActived","trigger_showbox","sb","move_to","point","old_audio_object","removeAudio","old_video_object","old_map","stop_video_tex","linkFlag","bPopUp","videoTex","voice","playAudio","getView","view","posPlayer","onMouseUp","dst","offset","offsetX","offsetY","sub","len","dst2","on_db_click","dnow","on_click","set_edit_type","editType","hot_area_parent","oldfar","maxDistance","bHot_area","hot","user_object","obj2","user_model","set_gizmo_object","set_gizmo_mode","aht","do_multi_sprite_click","ctrlKey","multi_seled","setRGB","guide_obj","add_player","num","toString","renew_all_uuid","players","players_object","base","update_player_position","id_player","posx","posy","posz","angle","remove_player","left_players","init","search_obj_by_name","blending","roleValue","char","viewFlag","setViewMode","stop_switch_camera","login","roomid","rid","add_video_stream_to_char","move_player_position","time_passed","clip_name","fullDst","normalize","Math","abs","current","last_clip_name","cold_down","play_skeleton_clip","move_with_colli","org","colli_height","target2","raycaster","far","dir","intersectObjects","distance","radius","final","applyEuler","spit","cross","dot","intersects3","len_final","down_speed","raycaster2","down_length","bedit","beforeguide","prepare_run","set_camera_controls","init_play","received_msg","evt","cmd","param","bInitPlayers","Array","isArray","new_player_id","new_player_name","substr","arrMsg","cmd2","player_video","display","parms","m_begin_play_time","m_last_record_time","last_walk","bRecording","bRecordPlaying","record_frame_space","record_cameras","record_camera","play_record_camera","_load_camera_record","json","eye","get_record_json","trigger_area_item","bInside","type_trigger","enter_type","target_trigger","enter_target","timelines","check_hot_areas","hot_areas","wts","invert","hotobj","lentest","type_geo","frame_move","tm","passed","num_frame","lower","key2","lerp","alpha","target_angle","movedir","eye_distance","v1","neweye","fixed_view","dir2","ray","rt","target_distance","frame","onSwitchCameraFinish","xx","yy","zz","send_transfer_position_to_server","process_edit_key","selected_model","remove_model","remove_hot","bguid","guide","targetDistance","min","minDistance","switch_camera","onKeyDown","moveFlag","translate_camera","onKeyUp","container","frame_move_recall","switch_camera_finish","popular","mobile","viewList","scrollX","uitype","uiList","airFlag","roam","openComment","likeFlag","addFlag","addNum","thumbs","full","voiceFlag","modelFlag","myFlag","roam1","shareFlag1","pic","downLoad","model","$$v","textarea","toComments","comment1Flag","roomFlag","timmer","comment","thumbsFlag","commentFlag","checked","flag1975","guideFlag","share","bindQRCode","$refs","qrCode","colorDark","colorLight","correctLevel","see","launchFullscreen","element","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","getNum","random","max","image","Image","getBase64Image","ctx","drawImage","ext","substring","lastIndexOf","toLowerCase","dataURL","toDataURL","onload","base64","jsbridge","default","ready","bridge","audioAutoPlay","onkeydown","setInterval","clearInterval","$nextTick","pause","boxFlag","activeimg","change","loginIn","chatFlag","chooseRoom","groupFlag","msgList","msg","playerList","onlyChat","keyFlag","cheatList","$emit","$message","error","found","filter","findIndex","to_footer","div","scrollTop","scrollHeight","el","keyCode","blur","from","roleList","leftList","value1","adminFlag","loginFlag","videoFlag","abegintime","vbegintime","timmer1","atime","vtime","closeAudio","audioFlag","online","loginOut","$client","reload","videoTime","endtime","getTime","saveTime","audioTime","client","getRemoteMutedState","videoList","audioList","sid","begin_time","newVal","voice_time","video_time","destroyed","alert","MainView","HandShake","Box","mobileTest","Play","Function","Login","Login1","screen","listen","namespaced","user_power","pageMsgList","worldMsgList","privateChatMsgList","unreadMsgP","unreadMsgW","mutations","responseCmd","MSG_ALL_CHATS","MSG_MY_CHAT","commit","sendname","reName","sendid","reid","MSG_LOGIN_SUCCESS","fd","MSG_PLAYERS","disable","MSG_NEWPLAYER","MSG_QUIT","MSG_CHATS","user","MSG_CHAT","MSG_RELOGIN","removeItem","done","MSG_CUSTOM","includes","roleName","searchName","setValue","setMsgPageValue","searchNameByZhuChiRen","editVA","find","kickOut","pcml","key1","shiftOutUnread","restoreUnread","getters","actions","_changeEvent","_startEvent","_endEvent","OrbitControls","domElement","warn","touchCount","arrTouch","Vector3","Infinity","minZoom","maxZoom","minPolarAngle","maxPolarAngle","PI","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","screenSpacePanning","keyPanSpeed","autoRotate","autoRotateSpeed","keys","LEFT","UP","RIGHT","BOTTOM","mouseButtons","MOUSE","ROTATE","MIDDLE","DOLLY","PAN","ONE","TOUCH","TWO","DOLLY_PAN","target0","position0","zoom0","zoom","_domElementKeyEvents","getPolarAngle","spherical","phi","getAzimuthalAngle","theta","listenToKeyEvents","saveState","scope","copy","reset","updateProjectionMatrix","dispatchEvent","update","STATE","NONE","quat","Quaternion","setFromUnitVectors","up","quatInverse","lastPosition","lastQuaternion","twoPI","applyQuaternion","setFromVector3","rotateLeft","getAutoRotationAngle","sphericalDelta","isFinite","makeSafe","addScaledVector","panOffset","setFromSpherical","lookAt","zoomChanged","distanceToSquared","EPS","quaternion","onContextMenu","onPointerDown","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","ownerDocument","onPointerMove","onPointerUp","TOUCH_ROTATE","TOUCH_PAN","TOUCH_DOLLY_PAN","TOUCH_DOLLY_ROTATE","Spherical","rotateStart","Vector2","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","pow","rotateUp","panLeft","v","objectMatrix","setFromMatrixColumn","panUp","crossVectors","pan","deltaX","deltaY","isPerspectiveCamera","tan","fov","isOrthographicCamera","dollyOut","dollyScale","dollyIn","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","subVectors","handleMouseMoveDolly","handleMouseMovePan","handleMouseUp","handleMouseWheel","handleKeyDown","needsUpdate","code","handleTouchStartRotate","pageX","pageY","count","handleTouchStartPan","handleTouchStartDolly","dx","dy","sqrt","handleTouchStartDollyPan","handleTouchStartDollyRotate","handleTouchMoveRotate","handleTouchMovePan","handleTouchMoveDolly","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","handleTouchEnd","pointerType","mouseAction","focus","button","metaKey","shiftKey","DOLLY_ROTATE","passive","EventDispatcher","compareFunction","propertyName","tar","v2","ani_object","jsonobj","to_json_object","newobj","from_json","ani_type","newtime","sort","objj","aniobj","objid","_x","_y","_z","_w","uv_offset","uv_repeat","ill_color","ease","repeat","uv_rotation","emissive","ill_power","emissiveIntensity","lightMapIntensity","aoMapIntensity","bSkeleton","bfound","ii","bFound","exp","startQuaternion","slerp","color1","color2","g","uuid","objname","timeline","script","rate","bPlaying","oldtime","current_time","LoopType","total_time","old_loop","scripts","excute_script","objects","ao","record","aniobj2","autoPlay","export","syn_material","objidx","newkeys","old_time","o2animation","animation","tl","from_tl_json","search_obj_by_guid","search_object_by_guid","tl2","new_tls","SobelOperatorShader2","uniforms","tDiffuse","resolution","vertexShader","join","fragmentShader","camera_target2","camera_eye2","begin_eye2","camDir","getWorldDirection","begin_target2","camera_switch_count2","camera_switch_total2","targetPos","cameraPos","dis","distanceTo","lastDir","switch_camera2","bSwitchFinish","verz","dst1","begin_length","begin_quaterion","end_length","end_quaterion","objs","bLock","collect_visible_object","collect_visible_object2","mouse","WIDTH","HEIGHT","setFromCamera","gizmo","depth","mtls","from_zip","zip_info","mtl","material2","load_phong_mtl","envMap","background","reflectivity","depth2","apply_skeleton_mtl","requestAnimationFrame","animate","time2","update_frame_rate","last_time","is_mobile","rendererStats","bShow","renderer","gif_anis","gifani","texture","current_frame","ceil","wrapS","wrapT","camera_switch_count","camera_target","camera_eye","eyelen2","quat2","eyedir","time4","custom_render","render","time3","div_bind","viewMatrix","viewProjectionMatrix","matrixWorldInverse","multiplyMatrices","projectionMatrix","round","frame_count","render_cost","enable_gizmo","saved_object","map_white","create_map_with_default","o2_default","begin","lightMap","map2","side","alphaTest","shininess","o2id","setHex","combine","normalScale","alphaMap","emissiveMap","normalMap","specularMap","aoMap","specular","materials","create_envMap","meshid","castShadow","receiveShadow","matrixWorldNeedsUpdate","mat","common_mesh","xxx","all_files","load_mesh2","meshes","load_mesh_data","xy","uv2","fStep","bake_step","buffer","ix","iy","mdl_url","project_url","xhr","responseType","response","line","load_mesh_line","mdls","allRequest","model_obj","load_saved_object","lib_uuid","all","obj1","intensity","f1","blob","Blob","URL","createObjectURL","load_skeleton_animate","f2","blob2","load_skeleton_clip","near","mapSize","decay","bias","penumbra","target_uuid","UVTransformNode","masktex","mask","SwitchNode","TextureNode","planeGeo","groundMirror","ReflectorRTT","clipBias","textureWidth","textureHeight","mirror","ReflectorNode","map_normal","normalXY","normalXYFlip","MathNode","INVERT","offsetNormal","OperatorNode","FloatNode","SUB","XnormalScale","MUL","diffusemap","light_map","color_node","ColorNode","diffuseNode","lightmap","setUvTransform","_u","_sx","_sy","_rotation","groundMirrorMaterial","PhongNodeMaterial","environment","environmentAlpha","light","mirrorMesh","ua","navigator","userAgent","isIos","match","ver","panelMat","panelMesh","elements","load_mesh","search_obj_by_guid2","_process_after_load","collect_syn_materials","exhibition","objects_ids","load_mesh_url","_dispose_object","zip","JSZip","item_file","on_unzipped","from_json_export","bind_objects_export","loadAsync","counts","type_read","async","postEffect","lutFile","lutBlobFile","lutBlobFil","lut","lutBlob","create_render_pass","toneMappingExposure","scene_id","abc","constructor","create_map","cubemap","reset_scene","grid","load_common_scene","copy_saved_param","bind_objects","process_after_load","lengthComputable","percentComplete","loaded","total","aaa","cube","tree","import_root","evn","envmaps","urls2","urls","fnn","cubename","format","map_url","RGBFormat","RGBAFormat","unload_textures","image_loader","isJPEG","search","raw_url","copyed","tex2","map_obj","default_textures","absurl","mapurl","load_image_to_texture","maps","bDefaultRender","glow","bloomComposer","layers","finalComposer","renderer2","setSize","size","aspect","effectSobel","devicePixelRatio","fxaaPass","pixelRatio","getPixelRatio","intarray","Uint32Array","num_faces","num_pos","num_nor","num_uv","num_uv2","limits1","Float32Array","posmin","posmax","posstep","normin","normax","norstep","uvmin","uvmax","uvstep","uv2min","uv2max","uv2step","pfaces","ppos","pnor","puv","puv2","a1","Uint16Array","a2","a3","a4","snor","ba","setIndex","computeBoundingBox","uvs","mdl","bb","bake_tex","cullMode","aoTex","map3","dif_color","earthDiv","_search_obj_by_name","skeleton_url","loader","FBXLoader","isMesh","isLight","clip_url","skeleton_obj","animations","AnimationAction","animate_skeleton","passTime","clock","getDelta","_tree","parent_name","mat0","multiply","_childs","child_guid","mat1","local","offsetinv","getInverse","premultiply","msDiv","msText","msTexts","nLines","lastTime","webGLRenderer","assert","textContent","memory","programs","geometries","textures","calls","faces","map1","Map","_collect_syn_materials","synMaterials","_update_all_mtl","getHex","oldcombine","cube_maps","play_setting","cameras","sobel","fxaa","film","outline","glow_strength","glow_threshold","glow_radius","aoIntensity","aoRadius","aoScale","camera_move_dir","last_frame_time","frame_total_count","dispose_all","same_texture_count","same_mesh_count","material_buffer","selection","toneMapping","bColliTest","bPickable","customed_lut","LUTCubeLoader","map_lut","update_all_mtl","EffectComposer","renderScene","RenderPass","addPass","bloomPass","UnrealBloomPass","threshold","strength","ShaderPass","FilmPass","FXAAShader","u","lutPass","LUTPass","lutPower","OutlinePass","visibleEdgeColor","hiddenEdgeColor","edgeStrength","edgeGlow","edgeThickness","saoPass","SAOPass","saoIntensity","saoKernelRadius","saoScale","loaded_images","multi_selection","copy_maps","Uint8Array","stride","map_red","red","map_green","green","map_blue","blue","map_black","black","filpX","filpY","white","map_alpha","half_alpha","normal_map","antialias","powerPreference","setPixelRatio","shadowMap","tonemapping_pars_fragment","VIEW_ANGLE","ASPECT","NEAR","FAR","fpsControls","PointerLockControls","onWindowResize","video","imgData","video_stream_data","video_stream_data_list","videoPlayer","removeChild","create_renderer_stats","RendererStats","old","news","pass_time","frame_rate","on_update_frame_rate","_area_hot_trigger","encode64","utf16to8","leave_type","leave_target","json_obj","decode64","_showbox","voiceid","urlPopType","sets","sr","resid","user_item_info","sbs","_collect_obj_showbox","user_item","Set","get_object_bind","to_json","collect_res","hots","hot_idx","hot_scale","lutName","models","mdl_item","binds","collect_model_bind","camera_record","object_id","add_exhibition_item","bChangeMap","get_model_exhibition_item","hot_urls","intersection","nor","face","on_add_hot_finish","viewstr","all_objects","get_all_exhibition_items","generate_guide_bb","detach","set_fbx_mtl","dir_up","asin","change_bind_item_texture","saved","aht_saved","savedhot","apply_mode_bind","um","oldmode","gizmo_mode","setMode","newlst","left_list","TransformControls","ctrl","bCopyModel","curObj","attach","setSpace","oldbind_id","switch_lut","show_boxes","template","getUrl","SCREEN_WIDTH","SCREEN_HEIGHT","ppp","load_zip_scene","dist_appear","bPrepare","load_models","bind_items","load_camera_record","load_hots","load_hot_areas","load_lut","Audio","bEdit","POSITIVE_INFINITY","keyStr","base64test","exec","out","char2","char3","o2vrClient","sdkAppId","usersig","audioflag","videoflag","userid","roomId","startGetAudioLevel","setAnimationFrame","clearAnimationFrame","timer","cancelAnimationFrame","animeLoop","getAudioLevelTimer","publish","localStream","unmuteAudio","muteAudio","unpublish","unmuteVideo","muteVideo","userSig","sig","appid","TRTC","createClient","remoteStream","getId","subscribe","getCameras","createStream","initialize","leave","appname","o2Function","dir_prefix","OSS","credentials","region","accessKeyId","accessKeySecret","stsToken","securityToken","bucket","getMD5","md5","date","nameList","path","sliceupload","name2","put","page","options","progress","cpt","parallel","partSize","multipartUpload","token","sha1","toUpperCase","FileDragHover","FileDragLeave","Drop","drag","classList","fileList","DirectoryEntryList","dataTransfer","items","webkitGetAsEntry","getAsEntry","$alert","getFileTree","FileTree","flattenArray","div_x","getBoundingClientRect","div_x_width","div_y","div_y_height","dirReader","rel","rej","readEntries","fullPath","isFile","fileSync","resFile","isDirectory","createReader","readEntriesSync","entries","proItem","callBack","fileReader","FileReader","blobSlice","File","mozSlice","webkitSlice","chunkSize","chunks","currentChunk","spark","SparkMD5","loadNext","readAsBinaryString","appendBinary","chat","wsConnect","WebSocket","port","onopen","onmessage","onclose","use","VideoPlayer","VueAudio","Showroom","productionTip","O2vr","ElementUI","$o2Function","store","h","App","$mount"],"mappings":"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0B,mBCA3CC,EAAOD,QAAU,0uB,0CCAjBC,EAAOD,QAAU,89D,qBCAjBC,EAAOD,QAAU,IAA0B,0B,kCCA3C,W,mBCAAC,EAAOD,QAAU,0nG,mBCAjBC,EAAOD,QAAU,8uF,mBCAjBC,EAAOD,QAAU,kqC,kCCAjB,W,mBCAAC,EAAOD,QAAU,8+C,mBCAjBC,EAAOD,QAAU,s+B,mBCAjBC,EAAOD,QAAU,0pE,qBCAjBC,EAAOD,QAAU,IAA0B,0B,mBCA3CC,EAAOD,QAAU,0kD,0CCAjBC,EAAOD,QAAU,ktG,mBCAjBC,EAAOD,QAAU,k6D,mBCAjBC,EAAOD,QAAU,04G,mBCAjBC,EAAOD,QAAU,0tG,qBCAjBC,EAAOD,QAAU,IAA0B,+B,mBCA3CC,EAAOD,QAAU,03B,mBCAjBC,EAAOD,QAAU,kjB,oBCAjBC,EAAOD,QAAU,sxG,yDCAjB,W,qBCAAC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,mBCA3CC,EAAOD,QAAU,syB,mBCAjBC,EAAOD,QAAU,8nE,mBCAjBC,EAAOD,QAAU,8iD,mBCAjBC,EAAOD,QAAU,8/D,mBCAjBC,EAAOD,QAAU,k9C,qBCAjBC,EAAOD,QAAU,IAA0B,0B,kCCA3C,W,mBCAAC,EAAOD,QAAU,0uG,mECAjBC,EAAOD,QAAU,IAA0B,yB,mBCA3CC,EAAOD,QAAU,81F,mBCAjBC,EAAOD,QAAU,0vG,4CCAjBC,EAAOD,QAAU,IAA0B,uB,mBCA3CC,EAAOD,QAAU,8tG,qBCAjBC,EAAOD,QAAU,IAA0B,uB,0CCA3CC,EAAOD,QAAU,84F,qBCAjBC,EAAOD,QAAU,IAA0B","file":"js/index.fed07199.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/btn.b2cb4ea7.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABNVJREFUWEfFmH9MVWUYx7+PXOnyQ0OuClxMWlrLH6uVgxa6flhMSxGEsNSSotkkU9JylcosabpWsGUDlEvAxaFzOom5tTJcP93calit5mbqFokDhFq3y4+QeNv37py7w+Wcey8Mx9nOP/e+7/N+3ud93u/zPEcwhkcpNQXAbQAcAGI0Ez0AugBcFZF/RmtWwp2glJoDYBGAewDEAxgEMKS9NDNJe20A/gTwE4AWEbkczhohQZRSMwGsAbAAAHfdB+C/EMYjAERp3voFwHER6Qw2xxJEKcX/MgBkAvhXg1Dh7M4whjZiAUQC+EREzljNNwVRSnHiZgB3APjL4P5RcviH00PTAFwEcFBEBgINjQDRIIoAOAH8PdaVLebdymAGcEBEbhjHDAPRjmMLgNsBeMYZQjc3FQADuEJE/EcdCJINYKkW9TeJw2eW1/60iJzSF/GDKKV4FLsAdI9DTITaBK86YUpEpJ2DjSBbAcwC0Btopbb+yJ0Vh2pX9fX28QYMe3a+se3wumdyrxwody2sqnbnmhFsf7XwaEH+egaq8aEQXhGRSj+IUioZwE4A180MpS7OeM0MgmMzVyxr3v9u8dnu7u7IM199S6/6nvb267G1dQ2ZNwYHI5/fsLbp9W2bfzSxPQPAO9QYn0eUUnkA0jStGDF+4X1L9lj52m6395a9v7fuoSXp/k1cunQ5tuClovyExJmdf7S2zXoqd9WXFiBMFd+JSKMO8h4AXifK9qhAODg52dnadKLebbfbh3SI2Cmx3pPH6g4vXZa9JSc782sLkMm+YxHZJUqpBADcsaUEB/NI/LS4rsbjbpfD4RjQIaKio3uPuCsb+Fv6w8uLgoCQg+v7QJjINmgKanoCViCEqKn60D137hyvGQSNhQHC21NNkMcBPBlMwMxAgkHExMQM8pgI8uwLm7Jys1eeX521stUizqi2TQR5AgBhLGuIQJCY6ChvTfVHrgXz7vYEesLr7bFtLNy+1lVZdjQlZfYIKTCBYcB+QZDlWpYNC4QQZR/scy9+MLUrEIKLrMsvXN/Wdm12YsKMa0+vyfkmLm5qvzPJ2cPxFh7xg1DSmeotE5zuEREZKistcWU8+kh7MIjABYPoCIf6j+ZeAC8Gyy86iDMp8erpT098TPFanZe/Ub8dRk+Y7ToECKs9X7BOp+YD6LASLR2E7m7+rNHl8Xhse/eVpr+1Y+s5BuZzBS/nXrhwcb7V/BAgvL67dUHbr5V/IQVtT/GOurycrN+5aH9//6RQEBwXBIT1rfgETZN4Jqt0q5tjvDURERGDaan3t0x3xHu+/+H8/PaOTn9+GYNHGKhnReSkDpIEoNhKXYMlPavFjb+XvP1mrYmOcG096XUYy4BXAKSYJb4ad8NdVa76Fd6eHlZXYT+TbbaBB9IWtRwsL/3cZBJLCpYBFb58ow9QStEruye8MNJiJQvAYxNaKmog9NDNLp4pYCyeyy2LZw2GPQ3LRlZtE9NOGOLlFgCbALDfZYM12g4vMDbpaTZYvwE4FFaDZYDhZGZl5iH2u3zH8kQD4MZOiUizlYFwmnBKMJvweVqFP5omnBC/AjgmIlbZ18cWEsTgIXZ/LLD1zxJmNS4lm3UoP0v8DOCciFgVRMOcEzaIcZZSisLGYGbCHJcPNf8DYDwQu3y3MgUAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"img/logo.cd2097be.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/share.03c2753a.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAAj1JREFUWEftlT9oE1Ecx7+/uzQ0SYcIDlIQzsl6SnODmDRVVBTs6iBk6OAg6CLUqYuCu4h0KBTs6ODQ0ixCBEFBuTS4vFSa1OBQ8c9cQdNg7t5PLhgI4Zp3OS1kuFvf+35/n/d9v989woh8NCIciED6byJKJEpENZ2he8QwjPFkevIagHkCDAl+5jLWGtXyN1VRv/VhQWLm9MxF0qjATAUiTPSbMvCKpXy+r+2v7wqxFxQqEIg5ncuSpheY4RU/FsScGS0QlxhYrQv7hUqjBDEsK53i1Bf4nF5l3lln/rpdtY+r9ipBvDTguJ8pHl9kxh0ijKtMO/XBAozHzR/f1xLpySt1Yb8E4BykHQhy8sy5s7HY2PuOKfAQv9sVFRCDixJyqYWWSHHyNoMWvOtss3OhUa28CwUyZeUu6dBfd8UHAjF+grDaasvlmK7pOskFQLvZm54L9/KO2HzzX0D8gBAfm2uiWUxxIsvQvNPP+RU7FJAeoGJN2NfNTL5MRLlBvXPYILs1YZ84bc2yqoEjkP6ERiYRKZ2Z+lZlM9TUmKY5gfiRDQKu+hkwOEiP7AHy/rYoLw/qI+Wf1RObmfw8iJ4QcLTXTAHiMGOlSb8eBHn8AoF4xb03J4HkIw10q2d8fRNhRsmR8l7jQ3lHNU3d9cAgXYGZyZ4n6E9BNNWfCIM/uZLvftwql4IChAb5K4ydsvKLBFg1Yd8wM7NvAS7WqvbSoIftn3tk2NOF2T/01YQpEkQTgfSnFCUSJaKanD/8zh4yG/TiOgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAAhRJREFUWEftlb9rFVEQhb8DFum0M2AKQUsF/Qs0XewsLG2sFBRUEBRMYTAQBcFYCAoWChYWgtrZGUijnaJlQMFGuxQWKQIj5zEL1/W97I8YCLIDr3h77+5898zMuWKXhHYJBwNIvRKDIoMiTdPZu0ciYj9wCbiQSZ4DdyT9bEo6br0zSALcSIAp4DWwAZwBNoFHfYBag0TEIcAAZwEDrAOnJL33CSPiMHAz1zsDNYJExAFgsUjwAtiT/w3jtYeSrMokoAVJ3jsx2oB8Bo4Ab4Fzkn5kwmPAfeAk8A24JelZlSkVWsqSfQGOS7JSY2NLkIg4CHwt3nQ/OOGnIuEc4IQG+5jl+wBcBq4A+3KvQby+LZCrwN7iw38ARURVqtvATDatn3mfoQw6K2lluyAuydOI8OnKk46AgF/AfPaNc70E7lqBiHDp3v1TkKIcdSDX3j97iQHWir07B1IDWs0psvSjRi5jRxWpJbLsSJodV///DsQT8B1YluTJ+SsiokmR67Z84Kgk+0n38fUbEfEKOJ0eYQ9506Y0EXEiJ8rNujKpdNW32jir/eBiGtV0HaiuSA3Atr6ckzS6AnorUkyIL7rzwLU0LbukPcTu6biXa1agAnjQdMe0VmTMOFYu6pvWN24ZHl/3w+PqEtxKhXKtsTSTPlTYustmtZ70AeitSNsTdt3XW5GuiZr2DyB1hQZFBkWapuY3ngrwI/iqgjoAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABNlJREFUWEe1mH9MlHUcx98fRbjQ8EBlhf2ghS78ccSNaU2bc9MRI7nUNZwdJIzigEEZQnMn9gNrZbWFDcSkUfKj8QdSwCpjliDCMtopaYm0ATdyDqJOQSKr+7YPe+72cHLP89wB3+3Zbvd8vp/v6/l+Pt/Pjy/BhyGECAYQLT3hAMIAhEgqbgL4A8AQgF/4IaJxrepJi6AQIgrANgArAPwD4G8A/wL4D4BT0jEPwHwAAQCCACwA0AugiYh+VVtHEUQIcR+ApwGsAjAK4C81hR7v7wJwN4DLABqI6Jq3+V5BhBDrAaQC4O295SOAp/hCAGzWE0T0/XS6pgURQiQC4OdPyRQz5JiczqYKlUz1lafCO0CEEPEAkgCMyOw/GyCsg/1oCYBGIjolVzoFRAixGkD2HEG41nXBlBER+87kcIMIIZYCsEo+wSdD8+j60RZW39AcbTQaBp/ZYRrQMJHNxD5ziIh456eAPA9gpa+Oee36dV3SdnPu/csjBvsH7JHpaebG3OwM95cqQLED9xBRhRtECPEggEIAwxq+ZorI0WOVqz6rq9/c9m1z6Uv51s1Dw8P62hMfNWjUswzAYSIamDSNECIPwHI/4gQsOfnxExMTgZ98XNqUnVewdfzWuI5/awThOGMnolISQugAvAfgd42T3WIjIyOBiabdOakpu05lZ6b9vHPXnuTolSvsh96wdvqgi31zH4PEAUiRYobm+QxhyS0w3XDcCGk8WVOp0+mcj22M35tlSW96zpysGtJlC3FsqWKQNACPKJnl5cKiTVd6eiNdk8dGxxbdHB0LCV+2ZKjsyOG6qKiHx1rPdoTn5BVmRdx7z2DAggDOQwgL0ztesxac5vcKX8in5zKD5EtB5rY34TWxG181bUtoCQ3Vj7ecbo0NCgq8nfXCnu8S4re4c0dXly3szNmOB+Q62to7VzudznnNDbVVCiCB7BYM8qYUQTmTTjsYpPrT8pJHDWsc5jSLiYWqK8u/ULPjuc4flmZm7825ZGt/XUGWMzYxyIdSJPUq6y9IVXVd1NHjlYkdrV+XKIDwydXPKcjB4rfXX7hwKaqxvrpGBSSUQd6SCpxZN02G5cUEBqgoL7kj28rA2DTzGeQVAIsBKDqrPz6StNP8bJzR0HvQWnhexVkdDJIh5Riv9aW/PsJxJceS3pSiHFf4+PYwCFdiu5UCmj8gHPA2bTHtd+2kwo5wQKtlECZ6Vynh+QOy/0Dxhrb2TuO5M1/yqVQanPgKNCW9tcYnijY8vu588MLgCdvFbo7CiI0xXPGmva9/IKK/zx5ZdGBfzQ7TU3YFCk56vxHRERcIh+8Cb7vy/gdlMbaL3e4QrxbI9Iv1Y6nmZNu6uFjuc9R24x0isssrtEwA3L/MtGJX43S958LoKhEd5z/kINy5canICcqnUlHryjI5LhUXASgmosnyw7N4NgCwSLWJq4PzYx3FKa7i+RgRdbskp2snnpTay7lqJ7gQ+pyIvpHjemuwtkqtpmMWzcTm0EsQLZ57ptRyco/DlT37y0wdmB2Tm/MKeS+juiMuASEEd2XbOWxITuxPE85OaQNwkoi8Hmet1xIPSabivoeTo5ZrCa68rkqm6FPzeE0gsh3iS5m1AGKk8pKvHDhF8OCkyVcXfBz5NPxERHx5o2n8D8hR82IJ5RLCAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABT9JREFUWEe9mGtsk2UUx/9nWwt0bd91pds62Tpwg4kQFBOyCR80UaLJjBrDB28xXtBgQOQ2ILAhIAEnXsLMgiCQGIxGFBIlITF+EwQxQojKVnehGwMyStfayzsYZcec5l0ZW9v3Hcs839q+7/P8+j+X55yHMApjZgXAQwBmAXAAsACwaktEAagAggD+BHCWiEJGlye9B5nZBWAOgHkAPABuALgOIA6AAdzU1jABkPVyAEwEMAGAD8BpAOeI6FqmvTKCMHMegEUAHgAQ0wAG9OC137M0IBuAPwB8l0mhtCDMPBPA69qiAmEUYDinAOVqX+4jovOp/khKEGZeCOAZzd+D0hsUIu1j4jqJq8NE9PPwp0aAMPOTAGoABMagQjoaUccJ4CgRHRv60B0gzPwggDcB+McBYnBfgZEE+IKIJHYSlgRhZjeA9QAiQzJhrO5I9764SdL+AyK6PBxElJihgdw1QH9/nGKxSE4kEstRFPtNRbFLmqcyySYvEe1JgjCz1Ic1AHqNuiQelw3VbFXty1avqzm/HD/l7vR15QdD4dwe/9W83t5QntWaG9v/+a7DaWDERZMBbCWiKwnXMPNSAKVaZdRV40Jnl+XAl1/Pam1tvycaiVhiap+lsMB1zWazqW53YbDMUxJ0FxVGG3Y21hzYu+srj6dUKm4qk8rsI6ImYmb50DAaNTbWb6tq9/nc86urvJUzKgLl5WXhxC4DWfAHAhP/bj7vbGvtmPzryd9n64CIKvkAlgtINYDnNRBdNeSBVWvrFzAPZC2orvK1t3fk+3uD1ovd3a5YTLVEIzFLYZHrmtORHz7f7J2mAyLLCchBAZEgLTfqFnlz9bpNC86cOXefw5H3r9WWqxYWFIRmVJb3eKaUhKdPnxa25ebGe3tD5sVLVrxgAESqrldA1gGwA+g3JIcGEo/HszasX3lq0oQJt6xW663h73Z2dlleXfzOiwZAzADCArJdyxTDpVwUkY137th8PB38KECkprCANAG4alSNQdfogQSDQVP91g/nb9m09oRDUfT+pFNAGrVzxTCLniItLW02p9Nxw+VyJtx98tRpZ3XVPDm70lkC5H2t1OtRJxfRA9lYv626raPT3fjJ9qPbGz59WO3rM+/+bOdPaSiSrtENVr8/YP7m0JGKi92XHE6HI3rF32PPycoZyBQjK9fUPdLsbfUoii3a+PGOHwfVSQGTDNaM6ftPW5t19dpNT1ssFrW0pNjfdfGy62qPf/LcuXOa9UBaWlrL7Io9LMpkAEmmb9qCJgH37pq6hZ7SKf5Vy5ecURQlHggGTRvqtj5qt9rUhjRZk3DNBV+xKGHANcmClrbE+3zdk157a+lL+/c1HSybUtwnssrpumxF7eNFRUWhzXW10hiPsFEE6+0SL6sw89sAyoZX10AgaFq6oramwFkQeuXlRWdvMdOhQz/c3+HrLN7yXu2xmZWV0ruMxUSEDiLaPXj6SlNUB0Ba/juaZDlpGz7aNd/b0lZmMpviUz0ll1atXHai4t6p0lCPxUa2AZoqaRujaDSaHQ5HTUTETqej32w2yzwzVhvZGGkghQA2/I+tooBIUyT98e2eVYORcfKNcW6es7XOrImIZDRNWKpx4ikAT4zTOCEQkq6Zx4lBOmZ+DMCzAGSINlz6dYJGSrmMsEcMDVhDYMZj5NxDRN5UwEaH8LlaEMstgNEZeOgQfhbAt3c1hA+lZuYKAM8BmKbdCMjVhLgs1bWEuECuJORqogPA90TUqpfruvcjw4DEx6LObM3fqS5qJK7+AvAbEcnljSH7D/BETnURM1FtAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/rule.5d6eab60.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAV9JREFUOE+9lC1LBFEUhp8XDIYNFsFoMLpgMBgNChtsFoOCdkGDzeAKBougYBEEBS3bDIKIBkGjYHB/gEHQYDAYDMKRI3eWmdkZnCuLp13uOc99z9cVPTb1mEcp0Mz6gVlgEhgJDz8BN0BL0meRmEKgmTloHxgqyeAVWJXUyt93Ac1sBditWAqH7qV9M0AzmwKuKsISt4aky+SQBz4AY5HAtqR6F9DMRoHHSFjiXpfU9kNHoZnNAycpYBOYAcaBU6APmAPuQ6fXUr4LktwnA1wEjlJOw4AHLQP+mAOPQ8MOgR9FwZYk+V0G2AAu/pjytKTrPNAH+QUYiIR+AIPJoOe7vAF47WKsKWmzbGy8TrfAREXiHeDpdtawaFPWga0KwHPAu/teuil+YWbpbr8BXttaCHIl/jkcSDorerRIoafr67cN7Hg6ZuYj9CXp+TflZb9NTZJ3L9r+74ONlhYCvgHixWYVwbIRgQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABV9JREFUWEfNWEtMG0cYnpldr43BNl6b9fqRYGODAklfSpPcUslplaqQFiJOrVqo1KioEr20tIcc+5BaegLRqGqiSK3aU4VpI/pIxaPcqkRqlSYiARLAGD/Xa7AB2+vd2WpdOQ+wsVHdpHvc+eebb+ef+f7vXwj28NhsNq0s17QCFWwFEmYAgLQMgV6BgDJIAiDzgEBRkJNnIUzPBoPBrUrhYSWBDQ0OD6KoU1DGzZlsNpfNbGUlKSeKoiBhEWMFA5EIkSRFEISKVGu0ao1arZIhmseCcCkWCyyUW2dXIjRtd1AaqlPEYttmai2V3kylywHeP15Tq6vR6WgdQuiGKIg+jlsJlppfkojJ5DhGqFWvbabWtjZTic29ENgeW6sz1tbq6rVSNvdVPB74vRhWUSJmtrEdAdDO85GEKGRy/4ZEYS5FaVT1tMUoA3ApFl7+aTvmDiKM1XlSlqUX49HVOMb/5L9aD0IImRi7CULih2ho6Zf7cR8gwrKegxjk3uKiK1UnUVgUIRKZGbsJAdXn4fDCjcL7u0RsthazBMWz8Vhwq1rpKLWTSpqMDTYtCagPV1dvxvPXvxBsdbjPJNf5lmIH02AwkAzDUEosx3FCIpEQd0uX0WgkzWZzPj4ajQrr6+s74pUDrDeYboUCC+fvErG6WhvF9MZ7sfBKbPsCCuj09HQ3TdM6ZWxubm71xIkTP+5GZHp6ut3tdtuUGJ7nU8ePH/+uGBmGbWwgIPo0FFpczu+IxeF+O5mI2ovpRHNzs3ZycvKVoaGh32ZnZ9euX7+eXFpayuxGxOl0ag4dOqRva2ur7+/vf8br9X4zPz+/Q2UVnTHQFn94ZWEEKpMyAvwsHFzkioEXiPT19X0/Pj4e3csN6ujoYM6dO/dSKSIKFmtzmTWU/C60WpueTgvpV9fioUSxRZTzMTY2drKnp2fC7/dn+vv7m7q6ulohLK6FsiwDn883Ozw8fEf5yAsXLni7u7svlzpXtMlqVFM1X0N2X9Pr63zsQKXyPTk52a7owZUrV1aKET9y5Mg+SZKkcueoMLem1qA11JtvQNbueoePhUyCkBEq2fapqan2q1evrg4MDPxZLH5wcPDJw4cP271e73gleJRGS5lMLAetdvdHkcgyxqIoVTKx2kQQSRIWSyOErMM9HA7czotKJU+1iQCAoNXhqv9fEGEdLiO02ps+jkT80qNNzX4Csjbn+zwXNjzKw0rTzBq0OFxvJBN8S3pzvSJ/OTEx8QJBEESp63v06NF9oiju6frqDfQtaLE4j2XF7MulBE2pNT6f72Rvb++EIu2KoHV2dh6AJRRNlmV5dHT05sjISF7QLl68+Ozp06d/3k3QVKT6W6g4cwzUg+Hg4o6Cp9yihyDxDQhkBx550dMbmdVI4PZQngjLOp0SkAaK2QCl1szMzOzJBkxNTXV4PB5rJTaARMQnweAd/z1jZHe/mUzynodrjOi5UOD2lw84NIvFzQACn41zoY2HYhXN1rotkP0gFQzm7ccDtZxxuB4HGPdx4RWu2g6+UD7y5pm1mwBCX0QDi9cK73eYigar83kgS6f+m3aCRDRjNSNEjkWDi5fvr21F3Q1jcz0HAO7kuchatdKUb7DMlnoAkELi1+0FtmTLye73HJQlfGYjmchVo+Ws0xtJSKDzYf+9XqbsjhQC7PYDJgzFLknMPZVK8RuVurh77ivfhNcRpOoPAmRGA4EAX8pqVPRbwmJpdAGS6IQYt2SErFDut0SNRqumKDUlIzQHRGksElleLOd1KiJSAKFpWk+SdY8BEj4BMDAhhHQAQW1+HMtbGOMUAJADGF8TxY2/eJ5PliNQGP8bfJT7kSuiUxcAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"img/alpha.e6ddc245.png\";","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./box.vue?vue&type=style&index=0&id=6c94c6dc&scoped=true&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mobileTest.vue?vue&type=style&index=0&id=5b783e87&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./banner.vue?vue&type=style&index=0&id=4a88f9ec&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABsVJREFUWEe1mG1MU1cYx8859/YV2tJbentvW6S1yEAZTDc1avwyXWrGXNw+mECiUTPG4iaJbjDDEhKzF5xOjDNbXMYSo4mZi9mMfphu4aNm08RGfEVABvS9vS30hb7d3rtczGXstogOdj+e85z/8+t5nvOc5xSC5/jMZrOa51W1QAZrQZ4jAYAED4FWkIA8iAHARwCGgiDHP4Aw9cDr9U49qzx8FkOj0VqF5PKtkOeWpTOZXCY9lcnncyzLZvMcy3GCBsIRwnE5hmEyXKFUK5QKhYyHaJDLZi+HQu6h+fw8FYQgLFa5Ur6N5djlyfhEPJWMp+YTnD2vKtGoNBpCgxC6x2bZX8Lhce9c6+cEMRisazGFbGcyPjGVjEeTzwMgtS3R6EtKNGXqfCZ3hmHcfxbTKgpSTlU2IgAaI5FAlM2mcwuBENfK5UpZGWHS8wBcDvlHf5VqFoCQtM3J8/k3maCH4bgn8V+sDyGEDKTFACF2Kej76+ps3X+BUFTVCg7k9oaD44sOITpFCEflpMWAgOxbv3/onjg+A2I2V5fnIfsJE/JOScOB4zjUaDRYMpnMZ7NZfqE7JIRJbzSrcSD/zON5yEwff1GUtjpaYpORamlirl69Wnf+/Pm37Xb7EoZhmIMHD17q7e0dKwajVCrR3r17HcIchmHw+PHjg/X19RqappV9fX3hdDo9E2ohgbU6w4DPPdQ7A0LbayvZVKIj5B8PSR3cuXOnua6ubpk4PjExMUnT9NezRcW57du3mwcGBuK3b9+OCz/A6XSag8FgyuVyRTdu3Ej29PQMztYnqUojBtERn29kdHpHTFZHWywatEjrhBASj8fzPkmSBlFASGCSJA8zDFNwmpqamiz379+PiSB79ux5oaen5+7g4ODUgQMHlklBhDqjI0xj/vGhb6DNZlOms/Arv3ckXGy7T506tbq1tfV1ce769eu3N2zYcHG2rU6nw51OJ3n16tVgR0dHbSKRyNXU1Bj8fn+itLRUzjBMKh6PZ48ePfpI6oMy28uVcv4jSNNLX0llUzsmGF90riRsa2tzNDY2VrlcLl9nZ2e/9FSvW7eubP/+/S95PJ4YQRAqlUolk2pFo9FUa2trQTEjDLReIVedhVTF0t2TkVBNsfKt1WqxQ4cO1adSKbarq+tuc3Ozdfny5fpjx449CIVCM6ERQZ52miYnJ9MtLS1/SG1UJTq1rqz8HqQs9g8jIZ8hm01npUZnzpzZsGPHjs3C+PDw8Kjdbq8QitLNmzfvrVmz5oJoPxuE4zgeIVRQKOcCkSvVcoOBCkPa4vg8EBjlOJbNS0GuXbu2bf369Q3ScZ/PF7BarafEENXV1ZXu27dvxenTpwc2bdpE19fXm6RrXC6Xv7u7+6F0HOE4ZjJVQkhZHSf97uHpoiL9Hj9+vFuoH9LxZDI5ZTabe2KxWAH808JTfA5B2movmxNErVaj8fHxDwiC0BcTaGhoONbf3594fscFewIpq10PacvSLwKBsbw0NEajUebz+TowDMOLOdu5c+cPZ8+edS8U5ElolmCQMts+joT9umLJumvXroru7u6tFEUZZzvs7Oz88eTJk0OJRGLBoRGSlSDICWiy2t+JRSPVqeRk0f7y1q1b21euXFkrgixufgAgHF+tjhiAJpNtbYbNNM9V0K5cubLF6XSuFUGCwWC4oqLi28W4hQVNoaDJcMU5KHTmHFAc9XtHCi48wfDcuXMbm5qaXhVBRkdH3Tab7YeF5oa4njLbjQhk2p966QnGJ06ceLmtre0NcaHL5XqwatWqnxYDRLj0tHrSE3APfz0NQlE2Wx7k24u1Ae3t7dVHjhxpEh339fXd2Lx5c0HP+V/AhDYAR9iXXu/jsX8aI4ujNRaLVEkbI4fDobpx48a7BEGU5XK5XFdX14XDhw8X3KLPC/KkMSIe+dzD3wtrZ0BMJgcJMO4TJuxLSFtFobhpNBpcSNBoNLrgrn66VSynS6dA5tO41zvdfvzrciKt9nrAce+F/ePhxe7gxR2bbp4piwEg9F3QPdIvjhfckkbatgXw+a3/z3MCRwRJlyOEXwx6R36bHc6iDyzSbH8NAG5bJByYWNQHVrmpDAAkQPwuzak5n5zUkqoVfJ5rScSiucV4cpZq9TjEUK9/7J+3zLw7IhpYLDUGDrJv5dncyng8kviPj/BSDJe5MJD+2e12R+Y6Xc/0t4TJVGkHOLYNclx1OpvJzve3hEqpVsjlCjmP0CPA5i8GAqMj8x3vZwIRRQiC0OJ46YsAhw2AAwaEkAYgqJ6e5/gpjuPiAMAw4Lh+lk3ciUQisfkAxPm/AXTFFqAk+Ud3AAAAAElFTkSuQmCC\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainView.vue?vue&type=style&index=0&id=0b711b95&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAAb5JREFUWEftliFIJVEUhr8fDQaDwWARtBkNC6ugqChoNQiGDQZhLYKbLArbZRHDwsIaDQbFVwQFQUFBZYvRYFB0u8FgWDjLkXnwGN68e2f0wQtzYMIw95zz3f+ec8+IFjG1CAclSPokSkVKRULdWbhGzKwDmAa+AH3ADrAn6W8oab3vuUDMrB0YA+aTp7NO0BNgF9iX9BwLFQViZp9rkvdEBn8FjoBtSYchnyCImXUBj0C93Yfi+/cnSb2hhTEgrsYDsAosAV4bMXYD/PC6ASaBY0n/shwbgpjZJ+AP4EG/A9cRQBVgK/H5CqwAfpyjki6KgowDpzXOWUAvXgvAT6AtSb6QUm9C0tlHgVTj1ALNAK6CH6Hv3t/rWVNAqokqkmbN7BIYChROU0HuJfWbmUVUbwmSFqllFBmWdFW0a/w2PQCmMgLE1IjPmzVJ3tqZFrxZ3dPMfMJuAt2pSI1A/Bb9BazHDL8okATGZ84GsFgDkwXiw+6bpNuIbnpbEg1SDWhmI8BvYABIg9wBy5IcJJflBknU8f8SH4KDkubM7Dy5XbcaDbZ310iurRVcXEiRgrkaupUgaXlKRUpFQp32H7N4qiPhR6kgAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"img/bg-left.af7da41a.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAAr5JREFUWEftlT1oE2EYx//P3dXWLHZTsUOgQdM2ttepTRxsNt0cHLN0slBBCwUDOkQstAXBOggKDgodHAR1c2tBTBM7+LamafEDA0KtWwT7QXJ9H3nbnKRH0msvVYrkloN733ue3/N/vgiH5KFDwoE6iDMTdUXqirh1p+caCYV6jm/q+lUiGlBOCJgkyxrLZNI/3JxWOt83iAJgw4gzY4AITQx+SYwNEF1mhkWEh16A9gwSCEVaGwzEiSmmAADkpbQuLs6nUyrC1o5woLGBbhIo5gXIFeR0V/iUQTRiOwDxMzAMIoopGGYeWfu5/CCXy21UA1rF6u2cEPndUuYK0t4V+UBEIWa8RrHQn83OriiD7WbEJNA9AH0MzknIxJJIPbWdlRQaJaiUcSY7l+wGYFWD2RUkaPb6dehf7Z9VPVhkJT6+fzdnfzvTGb6ga6QcmgwWkjm+QetpH3zXCHQdQLO6W0Ch+5OYFTWBSMghAh2zDVcAMoJmb0xn7Q6IWkqRG+qeZE7rpI1uYjO6JFLTNYEwuD8rkk/8ptlcHqkNJIvGryMGbqk62nLE/JwJ41mRFEGzt0+HPnWgIHY0TiClgOoUJp4sFHn8y8LMZ/vuXwXZAcS+NwQYXCxG7UIul/+fgCiHHea5KfVeEG+jlfL/f4EEOntaGjXjm4ScWBQzQ5UidlOkrStyQyMak5LPLs4nM566pjS4XhDokpoRABJZkXxVbqwaSLA7fF5nLaEGHoDpaqmzbblOVgBGmxke1FiLg3DCCeQEcQDkGTyxll8et1eAZ0X+dIjf33S0+eQVjWlYDS0bqDTkIMF3NdBwSYFtAKzdd9sx+1HEGcTWFNWgqU0b2HHIWJEkx9bz3x+5KeA0upfUVFNze6xDH2TmJiZ+7AWgFkV22+aez2pRxLPTSj/WQQ6yWOupOVAFDm1qfgOySYkyIveaXgAAAABJRU5ErkJggg==\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('main-view'),_c('div',{staticClass:\"z\"},[_c('Box'),_c('HandShake',{attrs:{\"touch\":_vm.flag}}),(_vm.infoFlag)?_c('img',{staticClass:\"info\",attrs:{\"src\":require(\"./assets/newImg/info.png\")},on:{\"click\":function($event){_vm.infoFlag = false}}}):_vm._e(),_c('o2vr',{attrs:{\"obj\":_vm.obj}}),_c('Play',{attrs:{\"floor\":_vm.obj.floor_name,\"wall\":_vm.obj.wall_name,\"speed\":6000}}),_c('Function',{attrs:{\"obj\":_vm.obj,\"vip\":_vm.vip}}),_c('Login',{attrs:{\"flag1\":_vm.obj.multi,\"room_id\":_vm.id}}),_c('client')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"mainview\"}},[_c('div',{attrs:{\"id\":\"container\"}})])}]\n\nexport { render, staticRenderFns }","import axios from \"axios\";\r\nimport QS from \"qs\";\r\nimport { Message } from 'element-ui'\r\n\r\naxios.defaults.baseURL = \"https://vryun.wh12345.net/api/\";\r\n\r\naxios.defaults.headers.post[\"Content-Type\"] =\r\n \"application/x-www-form-urlencoded; charset=UTF-8\";\r\nexport function get(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(url, {\r\n params: params\r\n })\r\n .then((res) => {\r\n\r\n resolve(res.data);\r\n\r\n })\r\n .catch((err) => {\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\nexport function post(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(url, QS.stringify(params), {\r\n headers: {\r\n \"Authorization\": localStorage.getItem(\"token\") ? localStorage.getItem(\"token\") : '',\r\n },\r\n })\r\n .then((res) => {\r\n\r\n\r\n resolve(res.data);\r\n\r\n })\r\n .catch((err) => {\r\n\r\n\r\n\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\nexport function getuser(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n url,\r\n {\r\n params: params,\r\n },\r\n {\r\n headers: {\r\n \"XX-Token\": localStorage.getItem(\"token\"),\r\n \"XX-Device-Type\": \"pc\",\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n resolve(res.data)\r\n })\r\n .catch((err) => {\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\n\r\nexport function update(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(url, {\r\n params: params,\r\n })\r\n .then((res) => {\r\n resolve(res.data);\r\n })\r\n .catch((err) => {\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\nexport default axios.create({\r\n baseURL: \"\",\r\n timeout: 10000,\r\n});\r\n","import { get, post, getuser } from \"./request\";\r\n\r\n\r\nexport const add_popular = (params) => get('/scene/popular', params)//访问统计\r\nexport const get_scene_user = (params) => get('/scene/scene_user', params) //\r\nexport const getScene = (params) => get(\"/scene/get_solo\", params); //获取单个用户场景信息\r\nexport const get_scene_interacts = (params) => get(\"/scene/interacts\", params); //获取用户点赞评论信息\r\nexport const set_scene_thumbs = (params) => post('/scene/thumbs', params) //点赞\r\nexport const set_scene_comment = (params) => post('/scene/comment', params) //评论\r\nexport const rtc_timer = (params) => post('/scene/rtc_timer', params)\r\nexport const search_time = (params) => get('/scene/search_time', params)\r\nexport const update_time = (params) =>\r\n get(\"https://api.mvpmeta.com/api/vryun/public/update_time\", params)\r\nexport const qrcode = (params) =>\r\n get(\"https://api.mvpmeta.com/api/vryun/public/qrcode\", params) //小程序二维码\r\nexport const statistics = (params) => get(\"https://api.mvpmeta.com/api/vryun/public/statistics\", params)//记录\r\nexport const config = (params) => get(\"https://api.mvpmeta.com/api/vryun/public/wechat_config\", params)//记录\r\nexport const get_solo_media = (params) => get(\"/media/get_solo\", params)\r\n\r\n\r\n\r\n\r\n","import Vue from 'vue';\r\nexport default new Vue();","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MainView.vue?vue&type=template&id=0b711b95&scoped=true&\"\nimport script from \"./MainView.vue?vue&type=script&lang=js&\"\nexport * from \"./MainView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MainView.vue?vue&type=style&index=0&id=0b711b95&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b711b95\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"enter-active-class\":\"animated fadeInRight\",\"leave-active-class\":\"animated fadeOutRight\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.localFlag || _vm.list.length > 0),expression:\"localFlag || list.length > 0\"}],staticClass:\"shadow\",class:_vm.suo ? 'tran' : '',attrs:{\"id\":\"shadow\"}},[_c('img',{staticClass:\"arrow\",class:_vm.suo ? 'arrow-ani' : '',attrs:{\"src\":require(\"../../wdf/assets/右箭头.png\")},on:{\"click\":function($event){_vm.suo = !_vm.suo}}}),_c('div',{attrs:{\"id\":\"restream\"}}),_c('transition',{attrs:{\"enter-active-class\":\"animated fadeIn\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.shareFlag)?_c('div',{class:_vm.playValue == -2 ? 'videoBox1 pos' : 'videoBox1',attrs:{\"id\":\"shareScreen\"},on:{\"click\":function($event){_vm.playValue = -2}}},[(_vm.playValue == -2)?_c('img',{staticClass:\"close\",attrs:{\"src\":require(\"../../wdf/assets/newImg/function/close.png\")},on:{\"click\":function($event){$event.stopPropagation();_vm.playValue = 999}}}):_vm._e(),_c('div',{staticClass:\"msg\"},[_c('p',[_vm._v(_vm._s(_vm.sharename)+\"正在分享屏幕\")])])]):_vm._e()]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.localFlag),expression:\"localFlag\"}],class:_vm.playValue == -1 ? 'videoBox pos' : 'videoBox',on:{\"click\":function($event){_vm.playValue = -1}}},[(_vm.playValue == -1)?_c('img',{staticClass:\"close\",attrs:{\"src\":require(\"../../wdf/assets/newImg/function/close.png\")},on:{\"click\":function($event){$event.stopPropagation();_vm.playValue = 999}}}):_vm._e(),_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\",\"position\":\"absolute\",\"top\":\"0\",\"z-index\":\"99\"},attrs:{\"id\":\"local_stream\",\"autoplay\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.shipinFlag),expression:\"!shipinFlag\"}],staticClass:\"shipin\"},[_vm._v(\" \"+_vm._s(_vm.$chat.role.name)+\" \")])]),_c('div',{staticClass:\"msg\"},[_c('p',[_vm._v(_vm._s(_vm.$chat.role.name))]),_c('div',{staticClass:\"iconList\"},[_c('img',{attrs:{\"src\":_vm.yuyinFlag\n ? require('../../wdf/assets/newImg/function/yuyinOpen.png')\n : require('../../wdf/assets/newImg/function/yuyinClose.png')}}),_c('img',{attrs:{\"src\":_vm.shipinFlag\n ? require('../../wdf/assets/newImg/function/xiangjiOpen.png')\n : require('../../wdf/assets/newImg/function/xiangjiClose.png')}})])])]),_c('div',{staticClass:\"msgList\",staticStyle:{\"position\":\"absolute\"}},_vm._l((_vm.list),function(item,index){return _c('div',{key:index,staticClass:\"videoBox\",on:{\"click\":function($event){_vm.playValue = index}}},[(_vm.playValue == index)?_c('img',{staticClass:\"close\",attrs:{\"src\":require(\"../../wdf/assets/newImg/function/close.png\")},on:{\"click\":function($event){$event.stopPropagation();_vm.playValue = 999}}}):_vm._e(),_c('div',{staticClass:\"msg\"},[_c('p',[_vm._v(\" \"+_vm._s(item.userId)+\" \")]),_c('div',{staticClass:\"iconList\"},[(!item.hasAudio)?_c('img',{attrs:{\"src\":require(\"../../wdf/assets/newImg/function/yuyinClose.png\")}}):_c('img',{attrs:{\"src\":!item.audioMuted\n ? require('../../wdf/assets/newImg/function/yuyinOpen.png')\n : require('../../wdf/assets/newImg/function/yuyinClose.png')}}),(!item.hasVideo)?_c('img',{attrs:{\"src\":require(\"../../wdf/assets/newImg/function/xiangjiClose.png\")}}):_c('img',{attrs:{\"src\":!item.videoMuted\n ? require('../../wdf/assets/newImg/function/xiangjiOpen.png')\n : require('../../wdf/assets/newImg/function/xiangjiClose.png')}})])])])}),0)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./client.vue?vue&type=template&id=fcbbd8b8&scoped=true&\"\nimport script from \"./client.vue?vue&type=script&lang=js&\"\nexport * from \"./client.vue?vue&type=script&lang=js&\"\nimport style0 from \"./client.vue?vue&type=style&index=0&id=fcbbd8b8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fcbbd8b8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"enter-active-class\":\"animated fadeIn\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.flag)?_c('div',{staticClass:\"box\",attrs:{\"id\":\"box\"}},[_c('div',[(_vm.list.length > 0 && _vm.checkFlag(_vm.list[_vm.value]) && _vm.imgFlag)?_c('img',{staticClass:\"img1\",style:('transform:' +\n 'scale(' +\n _vm.scale +\n ');left:' +\n _vm.position.left +\n 'px;' +\n 'right:' +\n _vm.position.right +\n 'px;' +\n 'top:' +\n _vm.position.top +\n 'px;' +\n 'bottom:' +\n _vm.position.bottom +\n 'px;'),attrs:{\"src\":_vm.list[_vm.value].url ? _vm.list[_vm.value].url : '',\"id\":\"img\"},on:{\"click\":function($event){$event.stopPropagation();},\"load\":_vm.checkWidth}}):_vm._e(),(_vm.list.length > 0 && _vm.checkFlag(_vm.list[_vm.value]) && _vm.imgFlag)?_c('div',{staticClass:\"img1\",style:('transform:' +\n 'scale(' +\n _vm.scale +\n ');left:' +\n _vm.position.left +\n 'px;' +\n 'right:' +\n _vm.position.right +\n 'px;' +\n 'top:' +\n _vm.position.top +\n 'px;' +\n 'bottom:' +\n _vm.position.bottom +\n 'px;'),on:{\"mousedown\":function($event){$event.stopPropagation();return _vm.start.apply(null, arguments)},\"touchstart\":function($event){$event.stopPropagation();return _vm.start.apply(null, arguments)}}},[_c('audio',{attrs:{\"autoplay\":\"\",\"src\":_vm.audio}})]):_vm._e(),(_vm.list.length > 0 && !_vm.checkFlag(_vm.list[_vm.value]) && !_vm.iframeFlag)?_c('video-player',{ref:\"videoPlayer\",staticClass:\"video-player vjs-custom-skin video\",attrs:{\"playsinline\":true,\"options\":_vm.playerOptions}}):_vm._e()],1),(_vm.list.length > 0 && _vm.checkFlag(_vm.list[_vm.value]) && _vm.imgFlag)?_c('div',{staticClass:\"function\"},_vm._l((_vm.functionBox),function(item,index){return _c('div',{key:index,on:{\"click\":function($event){$event.stopPropagation();return _vm.f(index)}}},[_c('img',{attrs:{\"src\":item.img}}),_c('p',[_vm._v(_vm._s(item.font))])])}),0):_vm._e(),_c('div',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require(\"../assets/img/close.png\")},on:{\"click\":_vm.close}})]),(_vm.title)?_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))]):_vm._e(),(_vm.list.length > 0)?_c('div',{staticClass:\"title title1\"},[_c('p',[_vm._v(_vm._s(_vm.value + 1)+\"/\"+_vm._s(_vm.list.length))])]):_vm._e(),(_vm.text)?_c('div',{staticClass:\"text\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('p',[_vm._v(_vm._s(_vm.text))])]):_vm._e(),(_vm.value > 0 && _vm.list.length > 0)?_c('img',{staticClass:\"left\",attrs:{\"src\":require(\"../assets/img/bg-left.png\")},on:{\"click\":function($event){_vm.value--}}}):_vm._e(),(_vm.value < _vm.list.length - 1 && _vm.list.length > 0)?_c('img',{staticClass:\"right\",attrs:{\"src\":require(\"../assets/img/bg-right.png\")},on:{\"click\":function($event){_vm.value++}}}):_vm._e(),(_vm.iframeFlag)?_c('iframe',{staticStyle:{\"width\":\"80%\",\"height\":\"80%\",\"margin\":\"5% 10%\"},attrs:{\"src\":_vm.link,\"frameborder\":\"0\"}}):_vm._e()]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./box.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./box.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./box.vue?vue&type=template&id=6c94c6dc&scoped=true&\"\nimport script from \"./box.vue?vue&type=script&lang=js&\"\nexport * from \"./box.vue?vue&type=script&lang=js&\"\nimport style0 from \"./box.vue?vue&type=style&index=0&id=6c94c6dc&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c94c6dc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.touch)?_c('div',{staticClass:\"circle\",attrs:{\"id\":\"circle\"}},[_c('img',{style:('left:' + _vm.left + 'px;top:' + _vm.top + 'px'),attrs:{\"src\":require(\"../assets/img/btn.png\")},on:{\"touchstart\":_vm.start}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./handShake.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./handShake.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./handShake.vue?vue&type=template&id=e4579124&scoped=true&\"\nimport script from \"./handShake.vue?vue&type=script&lang=js&\"\nexport * from \"./handShake.vue?vue&type=script&lang=js&\"\nimport style0 from \"./handShake.vue?vue&type=style&index=0&id=e4579124&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e4579124\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"test\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mobileTest.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mobileTest.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mobileTest.vue?vue&type=template&id=5b783e87&scoped=true&\"\nimport script from \"./mobileTest.vue?vue&type=script&lang=js&\"\nexport * from \"./mobileTest.vue?vue&type=script&lang=js&\"\nimport style0 from \"./mobileTest.vue?vue&type=style&index=0&id=5b783e87&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b783e87\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.obj)?_c('div',{ref:\"load\",staticClass:\"loading\"},[(_vm.obj.banner)?_c('div',{staticClass:\"loading1\"},[_c('img',{staticClass:\"banner\",attrs:{\"src\":_vm.obj.banner}}),_c('div',{staticClass:\"shadow\"})]):_c('div',{staticClass:\"loading1\"}),_c('div',[(_vm.vflag)?_c('div',{staticClass:\"line\"},[_c('div',{staticClass:\"full\",style:('width:' + _vm.width + '%')}),_c('div',{staticClass:\"loadmsg\"},[_vm._v(_vm._s(_vm.loading_msg))])]):_c('div',{staticClass:\"btn\",on:{\"click\":_vm.close}},[_vm._v(\"点击进入场景\")])]),(_vm.obj.logo && _vm.obj.logo.preview)?_c('img',{staticClass:\"logo o2\",attrs:{\"src\":_vm.obj.logo.preview}}):_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"../assets/img/logo.png\")}}),_c('div',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.sceneTitle.length > 2 ? _vm.sceneTitle : \"您还未编辑展厅名称\")+\" \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./banner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./banner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./banner.vue?vue&type=template&id=4a88f9ec&scoped=true&\"\nimport script from \"./banner.vue?vue&type=script&lang=js&\"\nexport * from \"./banner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./banner.vue?vue&type=style&index=0&id=4a88f9ec&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a88f9ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(\"div\")}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import * as THREE from 'three/build/three.module';\r\nclass player {\r\n constructor() {\r\n console.log(\"new player\");\r\n this.target = new THREE.Vector3();\r\n this.id = 0;\r\n this.name = \"\";\r\n this.sex = 0;\r\n this.auth = 1;\r\n this.obj;\r\n this.accInfo = [0,0,0,1];\r\n this.dicBone = {};\r\n this.arrBone = [];\r\n this.mixer;\r\n this.modelIdx = 0;\r\n this.isNPC = false;\r\n this.bodyMat;\r\n this.bodyColor= \"#F66C47\";\r\n this.hairMat;\r\n this.hairColor= \"#191919\";\r\n this.arrAccObj = [];\r\n this.boneInverses = [];\r\n this.onStateChg = [];\r\n this.o2 = document.o2;\r\n }\r\n static arrPrebAcc = [];\r\n static onModelLoad = [];\r\n static arrAccName = [\r\n \"Accessory\",\r\n \"Hair\",\r\n \"Hat\",\r\n \"Suit\"\r\n ];\r\n static accNum = player.arrAccName.length;\r\n static modelPreb = {};\r\n static modelUrl = [\r\n [\r\n \"\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_NPC_01.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447128&Signature=bQRwSRgmXm7ydH6SV1gusorCalo%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_NPC_02.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447144&Signature=DjgM3pT8c2WkGJo15QXZ%2B%2BqIvDw%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_NPC_03.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447162&Signature=V0vy%2FD%2By3dCnEHhqJ8AmMOTyi8Q%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_NPC_04.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447183&Signature=I45bWl4ZCHjGgea49lYsHQWyQ7o%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_NPC_05.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447198&Signature=hNmmLaT%2BA%2FZvYn0QZPjeAL5lMVA%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_NPC_01.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447222&Signature=ApUvcHoevXUMHfz2vH5sQIYIZRs%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_NPC_02.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447241&Signature=ofU0YFC%2FwbkWC1P0PlnbvFrUzvA%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_NPC_03.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447260&Signature=oDD625778uMMkTed%2BHjE2SxOgBk%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_NPC_04.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447276&Signature=BNT8HbzR63MV4AnjTMnZqK8H4hw%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_NPC_05.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447294&Signature=TMUavF%2FNFAj93Neu0LbUMKl262Q%3D\"\r\n ],\r\n [\r\n \"\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_01.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=3601648446852&Signature=x2ebSHeELVAZhLOsZSzqgMrmfZc%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_02.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648446876&Signature=52hyy6YtmxKmzMYydbOkE8ln4%2F8%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_03.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648446902&Signature=2u4pUleL8H4DQ7IAxh3w%2BZq1Plc%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_04.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648446919&Signature=EbJKt1%2Fjzm%2BW4qcMF%2FHRMMSUBtw%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_05.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648446940&Signature=ZuSwlP7Zy12k67k5ipSfS6WQufc%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Male_06.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648446958&Signature=72hrOKqdmgoomj6tIpTTuHZOCOM%3D\"\r\n ], \r\n [\r\n \"\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_01.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447015&Signature=8VwlpuIhtb%2BBcferKltnzbI6g5A%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_02.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447032&Signature=aDtLptPcmAGi4t9%2BHh3dUHvB6wE%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_03.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447050&Signature=uVUd5orHcTJPz3gUCA9msUgsrjw%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_04.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447071&Signature=99%2FV4fPLk6OoY94VeEKO0FisEp8%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_05.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=3601648447088&Signature=%2FnlmhWiLdSvzXGWYmMYlU%2BIbkhI%3D\",\r\n \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/Female_06.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447106&Signature=RkR%2BmkjdaX4dFCl53yjqCuu%2B%2FPA%3D\"\r\n ],\r\n ];\r\n static tempUrl = \"https://o2res.oss-cn-beijing.aliyuncs.com/istation/models/%E5%9D%90%E5%A7%BF.zip?OSSAccessKeyId=LTAI4G4zQbTdurvEbr1rR9zS&Expires=36001648447811&Signature=1TWSBzH4KQBZxPGi8GaesxF3Qho%3D\";\r\n static handTexPath = require(\"./assets/newImg/举手.png\");\r\n static handMat;\r\n static suitMaxNum = 5;\r\n\r\n initPlayer(info, action) {\r\n this.setPlayerInfo(info);\r\n this.setModel(this.modelIdx,()=>{\r\n //this.combineMesh();\r\n //this.boneInverses = this.accMesh.skeleton.boneInverses;\r\n //console.log(this.boneInverses);\r\n if(!this.isNPC){\r\n this.initAcc();\r\n this.setHairColor();\r\n this.setBodyColor();\r\n }\r\n this.obj.name = this.name;\r\n this.namePanel = player.add_lable_to_char(this.obj,this.name,this.auth);\r\n this.handPanel = player.add_hand_to_char(this.obj);\r\n this.handPanel.visible = false;\r\n console.log(this);\r\n action(this);\r\n });\r\n }\r\n resetPlayer(info){\r\n this.isTemp = false;\r\n if(this.setPlayerInfo(info)){\r\n if(this.arrAccObj && this.arrAccObj.length > 0){\r\n this.arrAccObj = [];\r\n }\r\n this.setModel(this.modelIdx,()=>{\r\n if(!this.isNPC)this.initAcc();\r\n this.o2.scene.add(this.obj);\r\n let clipName = \"\";\r\n if(this.state == \"sit\"){\r\n clipName = \"标准坐\";\r\n }\r\n else{\r\n clipName = this.state;\r\n }\r\n this.playClip(clipName,true);\r\n //this.o2.play_skeleton_clip(this.obj,\"idle\",true);\r\n console.log(this);\r\n });\r\n }\r\n else if(!this.isNPC){\r\n this.initAcc();\r\n }\r\n }\r\n setPlayerInfo(info){\r\n let isChgModel= false;\r\n if(info){\r\n if(info.auth){\r\n this.auth = parseInt(info.auth);\r\n }\r\n if(this.auth > 3){\r\n this.isNPC = true;\r\n }\r\n if(info.name){\r\n this.name = info.name;\r\n }\r\n if(info.id != undefined){\r\n this.id = parseInt(info.id);\r\n }\r\n if(info.sex != undefined){\r\n this.sex = info.sex;\r\n }\r\n if(info.accInfo){\r\n let arrStr = info.accInfo.split(\"-\");\r\n if(arrStr && arrStr.length == player.arrAccName.length){\r\n for (let i = 0; i < arrStr.length; i++) {\r\n if(i < this.accInfo.length){\r\n this.accInfo[i] = parseInt(arrStr[i]);\r\n }\r\n }\r\n }\r\n }\r\n if(info.hairColor){\r\n this.setHairColor(info.hairColor);\r\n // this.hairColor = info.hairColor;\r\n // if(this.hairMat){\r\n // this.hairMat.color.set(this.hairColor);\r\n // }\r\n }\r\n if(info.bodyColor){\r\n this.setBodyColor(info.bodyColor);\r\n // this.bodyColor = info.bodyColor;\r\n // if(this.bodyMat){\r\n // this.bodyMat.color.set(this.bodyColor);\r\n // }\r\n }\r\n }\r\n let type = player.arrAccName.indexOf(\"Suit\");\r\n let modelIdx = this.accInfo[type];\r\n if(!this.isNPC){\r\n for (let i = 0; i < this.sex; i++) {\r\n if(i < player.modelUrl.length){\r\n modelIdx += player.modelUrl[i].length;\r\n }\r\n }\r\n }\r\n isChgModel = (this.modelIdx != modelIdx);\r\n this.modelIdx = modelIdx;\r\n return isChgModel;\r\n }\r\n initAcc() {\r\n if (player.arrPrebAcc[this.modelIdx]) {\r\n let prebAcc = player.arrPrebAcc[this.modelIdx];\r\n if (prebAcc && player.arrAccName) {\r\n for (let i = 0; i < player.arrAccName.length; i++) {\r\n let name = player.arrAccName[i];\r\n if(name == \"Suit\")break;\r\n if (prebAcc[name] && prebAcc[name].length) {\r\n let idx = this.accInfo[i];\r\n //let len = prebAcc[name].length;\r\n //this.accInfo[i] = 0;\r\n this.setAcc(i, idx);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n initPrebAcc(modelIdx, obj) {\r\n if (player.arrPrebAcc[modelIdx]) return;\r\n player.arrPrebAcc[modelIdx] = {};\r\n let arrAccObj = player.arrPrebAcc[modelIdx];\r\n if (obj) {\r\n //console.log(this.obj);\r\n obj.children.forEach(e => {\r\n let arrStr = e.name.split(\"_\");\r\n if (arrStr && arrStr.length >= 2) {\r\n for (let i = 0; i < player.arrAccName.length; i++) {\r\n const name = player.arrAccName[i];\r\n if(name == \"Suit\")break;\r\n if (arrStr[0] == name) {\r\n if (arrAccObj[name] == undefined) {\r\n arrAccObj[name] = [];\r\n }\r\n let idx = Number.parseInt(arrStr[1]);\r\n // if(i < this.accInfo.length){\r\n // e.visible = (idx == this.accInfo[i]);\r\n // }\r\n if (arrAccObj[name][idx] == undefined) {\r\n arrAccObj[name][idx] = {};\r\n arrAccObj[name][idx].idx = idx;\r\n arrAccObj[name][idx].arrObj = [];\r\n }\r\n arrAccObj[name][idx].arrObj.push(e);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n clonePreb() {\r\n if (player.modelPreb[this.modelIdx]) {\r\n let pos;\r\n let rot;\r\n if(this.obj){\r\n pos = this.obj.position;\r\n rot = this.obj.rotation;\r\n if(this.name){\r\n this.obj.remove(this.namePanel);\r\n }\r\n this.o2.scene.remove(this.obj);\r\n this.obj = null;\r\n }\r\n this.obj = this.cloneObj(player.modelPreb[this.modelIdx].obj);\r\n this.mixer = new THREE.AnimationMixer(this.obj);\r\n this.mixer.addEventListener(\"finished\", e => {\r\n if(this.curAction && this.lastAction && this.curAction != this.lastAction){\r\n this.curAction.time = 0;\r\n this.curAction.enabled = true;\r\n this.curAction.play();\r\n this.lastAction.enabled = true;\r\n this.curAction.crossFadeTo(this.lastAction,0.2);\r\n this.lastAction.play();\r\n this.curAction = this.lastAction;\r\n }\r\n });\r\n this.clips = player.modelPreb[this.modelIdx].clips;\r\n this.o2.skeletons.push({ name: this.name, obj: this.obj, clips: this.clips, mixer: this.mixer });\r\n this.obj.traverse(child => {\r\n if (child.name.indexOf(\"Body\") != -1) {\r\n if(this.bodyMat == undefined){\r\n //this.bodyMat = new THREE.MeshBasicMaterial({map:child.material.map});\r\n this.bodyMat = child.material.clone();\r\n }\r\n child.material = this.bodyMat;\r\n }\r\n else if (child.name.indexOf(\"Shadow\") != -1) {\r\n child.visible = true;\r\n child.material.transparent = true;\r\n }\r\n });\r\n if(pos && rot && this.namePanel){\r\n this.obj.add(this.namePanel);\r\n this.obj.position.set(pos.x,pos.y,pos.z);\r\n this.obj.rotation.set(rot.x,rot.y,rot.z);\r\n }\r\n // this.initAcc(accInfo);\r\n // console.log(this.obj);\r\n // if (action) action(this);\r\n }\r\n }\r\n \r\n setModel(modelIdx, action){\r\n if (player.modelPreb[modelIdx]) {\r\n //this.destroyObj();\r\n let preb = player.modelPreb[modelIdx];\r\n if (!preb.obj) {\r\n player.onModelLoad.push((idx) => {\r\n if (modelIdx == idx) {\r\n this.clonePreb();\r\n if(action)action();\r\n }\r\n });\r\n }\r\n else{\r\n this.clonePreb();\r\n if(action)action();\r\n }\r\n }\r\n else {\r\n player.modelPreb[modelIdx] = {};\r\n let url;\r\n let idx = 0;\r\n if(this.sex < player.modelUrl.length){\r\n idx = modelIdx;\r\n let type = this.isNPC?0:this.sex;\r\n\r\n for (let i = 0; i < type; i++) {\r\n idx -= player.modelUrl[i].length;\r\n }\r\n url = player.modelUrl[type][idx];\r\n }\r\n if(!url)return;\r\n let promise = this.o2.import_object_url(url);\r\n promise.then((obj3) => {\r\n obj3.children.forEach(e => {\r\n if(e.material){\r\n e.material.vertexColors = THREE.NoColors;\r\n //e.material.color.multiplyScalar(0.6);\r\n }\r\n if(e.name.indexOf(\"Cloth\") != -1){\r\n e.material.color.multiplyScalar(0.8);\r\n }\r\n });\r\n player.modelPreb[modelIdx].obj = obj3;\r\n if(!this.isNPC)this.initPrebAcc(modelIdx, obj3);\r\n //console.log(player.arrPrebAcc);\r\n //console.log(obj3);\r\n let arr = this.o2.skeletons;\r\n //player.modelPreb[sex].clips = arr[0].clips;\r\n if (arr) {\r\n for (let i = 0; i < arr.length; i++) {\r\n let e = arr[i];\r\n if (e.obj == obj3) {\r\n player.modelPreb[modelIdx].clips = e.clips;\r\n break;\r\n }\r\n }\r\n }\r\n this.clonePreb();\r\n if(action)action();\r\n player.onModelLoad.forEach(e => {\r\n e(modelIdx);\r\n });\r\n });\r\n }\r\n }\r\n setState(clipName){\r\n let state;\r\n if(clipName == \"标准坐\"){\r\n state = \"sit\";\r\n //this.state = \"sit\";\r\n }\r\n else if(clipName == \"idle\" || clipName == \"walk\"){\r\n state = clipName;\r\n //this.state = clipName;\r\n }\r\n if(state && state != this.state){\r\n this.state = state;\r\n if(this.onStateChg && this.onStateChg.length > 0){\r\n this.onStateChg.forEach(e=>{e(state)});\r\n }\r\n }\r\n if(this.state != \"sit\" && this.handPanel){\r\n this.handPanel.visible = false;\r\n }\r\n }\r\n setSex(sex){\r\n if(sex != this.sex){\r\n this.sex = sex;\r\n //let type = player.arrAccName.indexOf(\"Suit\");\r\n this.resetPlayer();\r\n }\r\n \r\n }\r\n setBodyColor(rgb) {\r\n if(this.isNPC)return;\r\n if(rgb != undefined)this.bodyColor = rgb;\r\n if (this.bodyMat) {\r\n this.bodyMat.color.set(this.bodyColor);\r\n this.bodyMat.color.multiplyScalar(0.8);\r\n }\r\n }\r\n setHairColor(rgb){\r\n if(this.isNPC)return;\r\n if(rgb != undefined)this.hairColor = rgb;\r\n if(this.hairMat){\r\n this.hairMat.color.set(this.hairColor);\r\n this.hairMat.color.multiplyScalar(0.8);\r\n }\r\n }\r\n setAcc(type, idx) {\r\n if (type >= 0 && type < player.arrAccName.length) {\r\n let name = player.arrAccName[type];\r\n let prebAcc = player.arrPrebAcc[this.modelIdx];\r\n //let curIdx = this.accInfo[type];\r\n if (prebAcc && prebAcc[name]) {\r\n if (prebAcc[name].length > idx) {\r\n let accs = prebAcc[name];\r\n if (accs) {\r\n if(player.arrAccName[type] == \"Hat\"){\r\n let hairType = player.arrAccName.indexOf(\"Hair\");\r\n if(this.accInfo[hairType] > 0&& idx > 0){\r\n this.hairIdx = this.accInfo[hairType];\r\n this.setAcc(hairType,0);\r\n }\r\n else if(this.hairIdx > 0 && idx == 0){\r\n this.accInfo[type] = idx;\r\n this.setAcc(hairType,this.hairIdx);\r\n }\r\n }\r\n else if(player.arrAccName[type] == \"Hair\"){\r\n let hatType = player.arrAccName.indexOf(\"Hat\");\r\n if(this.accInfo[hatType] > 0 && idx > 0){\r\n this.hairIdx = idx;\r\n return;\r\n }\r\n }\r\n let acc = this.arrAccObj[type];\r\n if((acc && (acc.idx != idx || acc.modelIdx != this.modelIdx)) || !acc){\r\n if (type < this.accInfo.length && acc) {\r\n let arr = acc.arrObj;\r\n if (arr && arr.length > 0) {\r\n arr.forEach(e => {\r\n this.obj.remove(e);\r\n });\r\n }\r\n }\r\n if (accs.length > idx && idx >= 0) {\r\n let newAcc = this.cloneAcc(type, idx);\r\n this.arrAccObj[type] = newAcc;\r\n this.accInfo[type] = idx;\r\n }\r\n } \r\n }\r\n }\r\n }\r\n else if(name == \"Suit\"){\r\n let curIdx = this.accInfo[type];\r\n if(curIdx != idx){\r\n this.accInfo[type] = idx;\r\n this.resetPlayer();\r\n }\r\n }\r\n }\r\n }\r\n cloneAcc(type, idx) {\r\n if (player.arrPrebAcc[this.modelIdx]) {\r\n let prebAcc = player.arrPrebAcc[this.modelIdx];\r\n if (type < player.arrAccName.length && type >= 0) {\r\n let newAcc;\r\n if(!this.arrAccObj[type]){\r\n newAcc = {};\r\n }\r\n else{\r\n newAcc = this.arrAccObj[type];\r\n }\r\n newAcc.type = type;\r\n newAcc.idx = idx;\r\n newAcc.modelIdx = this.modelIdx;\r\n newAcc.arrObj = [];\r\n let name = player.arrAccName[type];\r\n if (prebAcc[name] && prebAcc[name].length > idx && idx >= 0) {\r\n let acc = prebAcc[name][idx];\r\n if (acc && acc.arrObj.length) {\r\n acc.arrObj.forEach(e => {\r\n let obj = e.clone();\r\n if(obj.name.indexOf(\"Hair\") != -1){\r\n if(this.hairMat == undefined){\r\n //this.hairMat = new THREE.MeshBasicMaterial({map:obj.material.map});\r\n this.hairMat = obj.material.clone();\r\n }\r\n obj.material = this.hairMat;\r\n this.setHairColor();\r\n }\r\n if (e.type == \"SkinnedMesh\") {\r\n let newArr = [];\r\n e.skeleton.bones.forEach(item => {\r\n newArr.push(this.dicBone[item.name]);\r\n });\r\n let arr = e.skeleton.boneInverses;\r\n obj.bind(new THREE.Skeleton(newArr, arr), e.bindMatrix);\r\n }\r\n this.obj.add(obj);\r\n newAcc.arrObj.push(obj);\r\n });\r\n return newAcc;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n getPlayerInfo() {\r\n if (!this.playerInfo) {\r\n this.playerInfo = {};\r\n }\r\n this.playerInfo.id = this.id;\r\n this.playerInfo.name = this.name;\r\n this.playerInfo.sex = this.sex;\r\n this.playerInfo.accInfo = \"\";\r\n this.playerInfo.auth = this.auth;\r\n for (let i = 0; i < this.accInfo.length; i++) {\r\n if(i {\r\n newArr.push(this.dicBone[item.name]);\r\n });\r\n let arr = preb.children[j].skeleton.boneInverses;\r\n skinmesh.bind(new THREE.Skeleton(newArr, arr),\r\n preb.children[j].bindMatrix);\r\n obj.add(skinmesh);\r\n }\r\n else if (preb.children[j].type != \"Bone\") {\r\n let c = preb.children[j].clone();\r\n obj.add(c);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n combineMesh(){\r\n if(this.obj){\r\n if(this.accMesh){\r\n this.accMesh.geometry.dispose();\r\n this.obj.remove(this.accMesh);\r\n this.accMesh = null;\r\n }\r\n let vertices = [];\r\n let normals = [];\r\n let skinIndices = [];\r\n let skinWeights = [];\r\n // if(!this.boneInverses)\r\n // this.boneInverses = [];\r\n let arrUV = [];\r\n let arrUV2 = [];\r\n let matrices = [];\r\n //console.log(this.arrBone);\r\n //let mat;\r\n // let temp = this.obj.matrix.clone();\r\n // this.obj.matrix = this.obj.matrix.identity ();\r\n console.log(this.obj.matrix);\r\n let pos = new THREE.Vector3();\r\n this.obj.children.forEach(c => {\r\n if(c.type == \"SkinnedMesh\" \r\n && c.name.indexOf(\"Body\") == -1\r\n && c.name.indexOf(\"Eye\") == -1\r\n && c.name.indexOf(\"Hair\") == -1){\r\n if(!this.combineMat){\r\n this.combineMat = new THREE.MeshBasicMaterial({map:c.material.map});\r\n }\r\n let poses = c.geometry.attributes.position.array;\r\n for (let i = 0; i < poses.length; i+=3) {\r\n pos.set(poses[i],poses[i+1],poses[i+2]);\r\n pos.applyMatrix4(c.matrix);\r\n vertices.push(pos.x);\r\n vertices.push(pos.y);\r\n vertices.push(pos.z);\r\n }\r\n let arrNormal = c.geometry.attributes.normal.array;\r\n arrNormal.forEach(e => {normals.push(e)});\r\n let uv = c.geometry.attributes.uv.array;\r\n uv.forEach(e => {\r\n arrUV.push(e);\r\n arrUV2.push(0);\r\n });\r\n // let uv2 = c.geometry.attributes.uv2.array;\r\n // uv2.forEach(e => {arrUV2.push(e)});\r\n //poses.forEach(e=>{vertices.push(e)});\r\n let bs = c.skeleton.bones;\r\n let idxs = c.geometry.attributes.skinIndex.array;\r\n idxs.forEach(e=>{\r\n if(e < bs.length){\r\n let bone = bs[e];\r\n let idx = this.arrBone.indexOf(bone);\r\n skinIndices.push(idx);\r\n }\r\n });\r\n let wgts = c.geometry.attributes.skinWeight.array;\r\n wgts.forEach(e=>{skinWeights.push(e)});\r\n let arrMatrix = c.skeleton.boneMatrices;\r\n arrMatrix.forEach(e => {\r\n matrices.push(e);\r\n });\r\n // let bms = c.bindMatrix;\r\n // bms.forEach(e=>{bindMatrix.push(e)});\r\n c.visible = false;\r\n c.material = this.combineMat;\r\n \r\n }\r\n });\r\n let geometry = new THREE.BufferGeometry();\r\n geometry.setAttribute(\"position\",new THREE.Float32BufferAttribute(vertices,3));\r\n geometry.setAttribute(\"normal\",new THREE.Float32BufferAttribute(normals,3));\r\n geometry.setAttribute( 'skinIndex', new THREE.Uint16BufferAttribute(skinIndices, 4 ) );\r\n geometry.setAttribute( 'skinWeight', new THREE.Float32BufferAttribute(skinWeights, 4 ) );\r\n geometry.setAttribute( 'uv', new THREE.Float32BufferAttribute(arrUV, 2 ) );\r\n geometry.setAttribute( 'uv2', new THREE.Float32BufferAttribute(arrUV2, 2 ) );\r\n let mesh = new THREE.SkinnedMesh(geometry,this.combineMat);\r\n mesh.bind(new THREE.Skeleton(this.arrBone));\r\n if(this.boneInverses && this.boneInverses.length == this.arrBone.length){\r\n mesh.skeleton.boneInverses = this.boneInverses;\r\n }\r\n this.accMesh = mesh;\r\n mesh.name = \"combineMesh\";\r\n this.obj.add(mesh);\r\n console.log(mesh);\r\n //this.obj.matrix = temp;\r\n //this.o2.play_skeleton_clip(this.obj,\"ide\",true);\r\n }\r\n }\r\n static add_lable_to_char(object, name,auth) {\r\n let canvas = document.createElement(\"canvas\");\r\n canvas.width = 160;\r\n canvas.height = 32;\r\n const drawingContext = canvas.getContext(\"2d\");\r\n drawingContext.fillStyle = \"#000000\";\r\n drawingContext.globalAlpha = 0.1;\r\n drawingContext.fillRect(0, 0, 160, 32);\r\n drawingContext.globalAlpha = 1;\r\n if(auth == 4){\r\n drawingContext.fillStyle = \"#00FF00\";\r\n }\r\n else if(auth == 5){\r\n drawingContext.fillStyle = \"#FF9300\";\r\n }\r\n else{\r\n drawingContext.fillStyle = \"#ffffff\";\r\n }\r\n drawingContext.font = \"24px Georgia\";\r\n drawingContext.textAlign = \"center\";\r\n drawingContext.fillText(name, 80, 24);\r\n\r\n let map = new THREE.CanvasTexture(canvas);\r\n let sprite = new THREE.Sprite(\r\n new THREE.SpriteMaterial({ map: map, color: \"#ffffff\" })\r\n );\r\n sprite.position.set(0, 2000, 0);\r\n sprite.scale.set(600, 120, 1);\r\n sprite.material.depthWrite = false;\r\n object.add(sprite);\r\n return sprite;\r\n }\r\n static add_hand_to_char(obj){\r\n let sprite = new THREE.Sprite();\r\n sprite.scale.set(600,600,1);\r\n obj.add(sprite);\r\n sprite.position.set(0,2500,0);\r\n if(player.handMat == undefined){\r\n player.handMat = new THREE.SpriteMaterial();\r\n player.handMat.depthWrite = false;\r\n player.handMat.depthTest = false;\r\n let texLoader = new THREE.TextureLoader();\r\n texLoader.load(player.handTexPath,tex=>{\r\n player.handMat.map = tex;\r\n sprite.material = player.handMat;\r\n });\r\n }\r\n else{\r\n sprite.material = player.handMat;\r\n }\r\n return sprite;\r\n }\r\n static createTempPlayer(id,name,action){\r\n player.loadTempModel(obj=>{\r\n let p = new player();\r\n p.state = \"sit\";\r\n p.id = id;\r\n p.name = name;\r\n p.isTemp = true;\r\n p.obj = obj.clone();\r\n p.handPanel = player.add_hand_to_char(p.obj);\r\n p.handPanel.visible = false\r\n p.namePanel = player.add_lable_to_char(p.obj,name);\r\n if(action)action(p);\r\n });\r\n }\r\n static loadTempModel(action){\r\n if(!player.tempModel){\r\n let promise = document.o2.import_object_url(player.tempUrl);\r\n promise.then(obj=>{\r\n player.tempModel = obj;\r\n if(action)action(obj);\r\n });\r\n }\r\n else{\r\n if(action)action(player.tempModel);\r\n }\r\n }\r\n playClip(name,loop,clamp){\r\n let clip = this.clips[name];\r\n if (this.mixer && clip) {\r\n this.setState(name);\r\n let action = this.mixer.clipAction(clip, this.obj);\r\n if (this.curAction) {\r\n //this.curAction.enabled = true;\r\n //this.curAction.weight = 0;\r\n this.curAction.crossFadeTo(action, 0.2);\r\n if(this.curAction.loop == THREE.LoopRepeat){\r\n this.lastAction = this.curAction;\r\n }\r\n }\r\n action.enabled = true;\r\n this.curAction = action;\r\n // AnimationAction.timeScale = 1; //默认1,可以调节播放速度\r\n if (loop) {\r\n action.loop = THREE.LoopRepeat; //不循环播放\r\n }\r\n else {\r\n action.time = 0;\r\n action.loop = THREE.LoopOnce;\r\n action.clampWhenFinished=clamp;\r\n }\r\n action.play();//播放动画\r\n }\r\n }\r\n destroyObj(){\r\n if(this.obj){\r\n this.obj.children.forEach(c => {\r\n if(c.name.indexOf(\"Body\") != -1){\r\n c.material.dispose();\r\n }\r\n else if(c.name.indexOf(\"Hair\") != -1){\r\n c.material.dispose();\r\n }\r\n else if(c.name.indexOf(\"combineMesh\") != -1){\r\n c.geometry.dispose();\r\n }\r\n });\r\n this.o2.scene.remove(this.obj);\r\n this.obj = null;\r\n }\r\n }\r\n destroy(){\r\n // if(this.bodyMat){\r\n // this.bodyMat.dispose();\r\n // }\r\n // if(this.hairMat){\r\n // this.hairMat.dispose();\r\n // }\r\n if(this.namePanel){\r\n this.namePanel.material.dispose();\r\n }\r\n this.o2.scene.remove(this.obj);\r\n this.obj = null;\r\n //this.destroyObj();\r\n }\r\n}\r\nexport { player }\r\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./playNew_repair.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./playNew_repair.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./playNew_repair.vue?vue&type=template&id=0156a9ef&scoped=true&\"\nimport script from \"./playNew_repair.vue?vue&type=script&lang=js&\"\nexport * from \"./playNew_repair.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0156a9ef\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fun\"},[(_vm.obj.popularFlag)?_c('div',{staticClass:\"popular\"},[_vm._v(\"当前人气值: \"+_vm._s(_vm.popular))]):_vm._e(),_c('transition',{attrs:{\"name\":\"custom-classes-transition\",\"enter-active-class\":\"animated fadeIn\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.flag && _vm.mobile)?_c('div',{staticClass:\"scroll\",style:(_vm.viewList.length > 8 ? 'justify-content: flex-start' : ''),on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"viewList\",staticStyle:{\"min-width\":\"auto\"}},_vm._l((_vm.viewList),function(item,index){return _c('div',{key:index,class:['list', _vm.value == index ? 'color' : ''],on:{\"click\":function($event){$event.stopPropagation();return _vm.toView(item, index)}}},[_c('img',{attrs:{\"src\":item.banner}}),_c('div',{staticClass:\"font\"},[_vm._v(_vm._s(item.name))])])}),0)]):_vm._e(),(_vm.flag && !_vm.mobile)?_c('div',{staticClass:\"scroll\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('img',{staticClass:\"log\",attrs:{\"src\":require(\"../assets/img/add.png\")},on:{\"click\":_vm.left}}),_c('div',{staticClass:\"pcscroll\"},[_c('div',{staticClass:\"viewList\",style:('transform:' + 'translateX(' + _vm.scrollX + 'px)')},_vm._l((_vm.viewList),function(item,index){return _c('div',{key:index,class:['list', _vm.value == index ? 'color' : ''],on:{\"click\":function($event){$event.stopPropagation();return _vm.toView(item, index)}}},[_c('img',{attrs:{\"src\":item.banner}}),_c('div',{staticClass:\"font\"},[_vm._v(_vm._s(item.name))])])}),0)]),_c('img',{staticClass:\"log\",attrs:{\"src\":require(\"../assets/img/reduce.png\")},on:{\"click\":_vm.right}})]):_vm._e()]),_c('div',{staticClass:\"functionB\",style:(_vm.uitype == 1 || _vm.uitype == 3\n ? 'background-color:rgba(45, 45, 45, 0.5);color:white'\n : '')},[_c('div',{staticClass:\"item\",on:{\"click\":function($event){$event.stopPropagation();_vm.flag = !_vm.flag}}},[_c('img',{staticStyle:{\"width\":\"30px\"},attrs:{\"src\":_vm.uiList[_vm.uitype][8]}}),_c('p',{style:(_vm.uitype == 1 || _vm.uitype == 3 ? 'color:white' : '')},[_vm._v(\"场景选择\")])]),(this.obj.airFlag && this.obj.airFlag == true && _vm.vip > 0)?_c('div',{staticClass:\"item\",on:{\"click\":_vm.roam}},[_c('img',{staticStyle:{\"width\":\"30px\"},attrs:{\"src\":_vm.uiList[_vm.uitype][9]}}),_c('p',{style:(_vm.uitype == 1 || _vm.uitype == 3 ? 'color:white' : '')},[_vm._v(\"三维鸟瞰\")])]):_vm._e()]),_c('div',{staticClass:\"functionBottom\"},[(_vm.commentFlag)?_c('img',{attrs:{\"src\":_vm.uiList[_vm.uitype][5]},on:{\"click\":_vm.openComment}}):_vm._e(),_c('div',{staticStyle:{\"position\":\"relative\"}},[(_vm.likeFlag && !_vm.addFlag)?_c('img',{attrs:{\"src\":_vm.uiList[_vm.uitype][6]},on:{\"click\":_vm.addNum}}):_vm._e(),(_vm.likeFlag && _vm.addFlag)?_c('img',{attrs:{\"src\":_vm.uiList[_vm.uitype][11]}}):_vm._e(),(_vm.likeFlag)?_c('p',[_vm._v(_vm._s(_vm.thumbs ? _vm.thumbs : 0))]):_vm._e()]),(_vm.share)?_c('img',{attrs:{\"src\":_vm.uiList[_vm.uitype][7]},on:{\"click\":function($event){_vm.shareFlag = true}}}):_vm._e()]),_vm._v(\" --> \"),_c('div',{staticClass:\"functionTop\"},[(_vm.id != 1975)?_c('img',{attrs:{\"src\":_vm.uiList[_vm.uitype][0]},on:{\"click\":_vm.full}}):_vm._e(),_c('img',{attrs:{\"src\":_vm.voiceFlag ? _vm.uiList[_vm.uitype][1] : _vm.uiList[_vm.uitype][10]},on:{\"click\":function($event){_vm.voiceFlag = !_vm.voiceFlag}}}),(_vm.modelFlag && _vm.vip > 0)?_c('img',{attrs:{\"src\":_vm.viewFlag ? _vm.uiList[_vm.uitype][3] : _vm.uiList[_vm.uitype][4]},on:{\"click\":function($event){_vm.viewFlag = !_vm.viewFlag}}}):_vm._e(),(_vm.vip > 0 && _vm.myFlag)?_c('img',{attrs:{\"src\":_vm.uiList[_vm.uitype][2]},on:{\"click\":_vm.roam1}}):_vm._e(),(_vm.id == 1975)?_c('img',{attrs:{\"src\":require(\"../assets/img/addicon2.png\")},on:{\"click\":function($event){_vm.shareFlag1 = true}}}):_vm._e()]),_c('a',{attrs:{\"href\":\"https://mvpmeta.com/?zp\",\"target\":\"_blank\"}},[(_vm.vip == 0)?_c('div',{staticClass:\"bottom\"},[_c('img',{attrs:{\"src\":require(\"../assets/img/logo.png\")}}),_c('p',[_vm._v(\"元居科技提供技术支持\")])]):_vm._e()]),_c('audio',{attrs:{\"src\":_vm.voice,\"id\":\"music\",\"loop\":\"\"}}),_vm._v(\"11 \"),_c('transition',{attrs:{\"enter-active-class\":\"animated fadeIn\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.shareFlag)?_c('div',{staticClass:\"shadow\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.id != 1975),expression:\"id != 1975\"}],staticClass:\"qrCode\"},[_c('i',{staticClass:\"el-icon-close\",on:{\"click\":function($event){_vm.shareFlag = false}}}),_c('h1',[_vm._v(\"微信小程序二维码\")]),_c('img',{attrs:{\"src\":_vm.pic}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.id != 1975),expression:\"id != 1975\"}],ref:\"qrCode\",attrs:{\"id\":\"qrCode\"}},[_c('i',{staticClass:\"el-icon-close\",on:{\"click\":function($event){_vm.shareFlag = false}}}),_c('h1',[_vm._v(\"扫描二维码分享作品\")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.id == 1975),expression:\"id == 1975\"}],staticStyle:{\"text-align\":\"center\"}},[_c('img',{staticClass:\"shareImg\",attrs:{\"src\":require(\"../assets/img/share.png\")},on:{\"click\":function($event){_vm.shareFlag = false}}}),(_vm.flag1975)?_c('h3',{staticClass:\"h3\"},[_vm._v(\"点击保存到手机相册\")]):_vm._e(),(_vm.flag1975)?_c('img',{staticClass:\"shareIcon\",attrs:{\"src\":require(\"../assets/img/download.png\")},on:{\"click\":function($event){return _vm.downLoad()}}}):_vm._e()])]):_vm._e()]),_c('transition',{attrs:{\"enter-active-class\":\"animated fadeIn\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.shareFlag1)?_c('div',{staticClass:\"shadow\"},[_c('img',{staticClass:\"shareImg\",attrs:{\"src\":require(\"../assets/img/rule.png\")},on:{\"click\":function($event){_vm.shareFlag1 = false}}})]):_vm._e()]),_c('transition',{attrs:{\"enter-active-class\":\"animated fadeIn\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.comment1Flag)?_c('div',{staticClass:\"commentBox\"},[_c('div',[_c('h3',[_vm._v(\"评论\")])]),_c('el-input',{attrs:{\"type\":\"textarea\",\"placeholder\":\"请输入内容\",\"maxlength\":\"30\",\"show-word-limit\":\"\"},model:{value:(_vm.textarea),callback:function ($$v) {_vm.textarea=$$v},expression:\"textarea\"}}),_c('div',{staticClass:\"line\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.toComments}},[_vm._v(\"发表\")]),_c('el-button',{on:{\"click\":function($event){_vm.comment1Flag = false}}},[_vm._v(\"取消\")])],1)],1):_vm._e()]),_c('transition',{attrs:{\"enter-active-class\":\"animated fadeIn\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.checked)?_c('div',_vm._l((_vm.comment),function(item,index){return _c('p',{key:index,staticClass:\"list1\",style:('left:' + item.left + '%;top:' + item.right + '%')},[_vm._v(\" \"+_vm._s(item.text)+\" \")])}),0):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n-\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./function.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./function.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./function.vue?vue&type=template&id=0cc390ec&scoped=true&\"\nimport script from \"./function.vue?vue&type=script&lang=js&\"\nexport * from \"./function.vue?vue&type=script&lang=js&\"\nimport style0 from \"./function.vue?vue&type=style&index=0&id=0cc390ec&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0cc390ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.flag1)?_c('div',{staticClass:\"login\"},[(_vm.flag)?_c('div',{on:{\"click\":function($event){_vm.boxFlag = true}}},[_vm._v(\"登录\")]):_c('div',{staticStyle:{\"text-align\":\"right\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"25px\"}},[_vm._v(\" 欢迎\"+_vm._s(_vm.name)+\" 当前在线人数:\"+_vm._s(_vm.list.length)+\"人 \")]),_vm._l((_vm.leftList),function(item,index){return _c('div',{key:index,staticClass:\"func\"},[_c('img',{attrs:{\"src\":item.flag ? item.activeimg : item.img},on:{\"click\":function($event){return _vm.change(index)}}})])}),_c('Chat')],2),(_vm.boxFlag)?_c('div',{staticClass:\"box\"},[_c('div',{staticClass:\"line\"},[_c('p',[_vm._v(\"名称:\")]),_c('el-input',{attrs:{\"placeholder\":\"请输入名称\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c('div',{staticClass:\"line\"},[_c('p',[_vm._v(\"角色:\")]),_c('div',{staticClass:\"roleBox\"},_vm._l((_vm.roleList),function(item,index){return _c('div',{key:index,on:{\"click\":function($event){_vm.roleValue = index}}},[_c('img',{class:['avatar', index == _vm.roleValue ? 'active' : ''],attrs:{\"src\":item}})])}),0)]),_c('div',{staticClass:\"line1\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.loginIn}},[_vm._v(\"确认\")]),_c('el-button',{on:{\"click\":function($event){_vm.boxFlag = false;\n _vm.roleValue = 0;}}},[_vm._v(\"取消\")])],1)]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.chatFlag ? 'chatRoom' : 'chatRoom closeRoom'},[_c('h1',[_c('div',{staticClass:\"roomList\",class:_vm.chatFlag ? 'roomList' : ' roomList roomListClose'},_vm._l((_vm.cheatList),function(item,index){return _c('p',{key:index,class:index == _vm.value ? 'active' : '',on:{\"click\":function($event){return _vm.chooseRoom(index)}}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])}),0),_c('div',{staticClass:\"function\"},[_c('img',{staticClass:\"icon\",attrs:{\"src\":require(\"../../dongsheng/assets/newImg/chatRoom/close.png\")},on:{\"click\":function($event){_vm.chatFlag = !_vm.chatFlag}}}),(_vm.chatFlag)?_c('img',{staticClass:\"icon\",attrs:{\"src\":require(\"../../dongsheng/assets/newImg/chatRoom/group.png\")},on:{\"click\":function($event){_vm.groupFlag = !_vm.groupFlag}}}):_vm._e()])]),_c('div',{staticClass:\"main\"},[_c('div',{staticClass:\"chat\",attrs:{\"id\":\"chat\"}},_vm._l((_vm.msgList[_vm.value]),function(item,index){return _c('div',{key:index,staticClass:\"msgList\"},[_c('div',{staticClass:\"name\",style:(item.name == _vm.$chat.role.name ? 'color: #1dd3b0;' : 'color:orange')},[_vm._v(\" \"+_vm._s(item.name)+\": \")]),_c('div',{staticClass:\"sendMsg\"},[_vm._v(_vm._s(item.msg))])])}),0),(_vm.groupFlag)?_c('div',{staticClass:\"group\"},[_c('h3',[_c('span',{staticStyle:{\"color\":\"#1dd3b0\"}},[_vm._v(_vm._s(_vm.playerList.length))]),_vm._v(\" 在线 \")]),_vm._l((_vm.playerList),function(item,index){return _c('div',{key:index,staticClass:\"msg\"},[_c('div',{staticClass:\"circle\"}),_c('p',[_vm._v(_vm._s(item.name))]),_c('div',{staticStyle:{\"flex\":\"1\"}}),(item.name != _vm.$chat.role.name)?_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"../../dongsheng/assets/newImg/chatRoom/chat.png\")},on:{\"click\":function($event){return _vm.onlyChat(item.name, item.name)}}}):_vm._e()])})],2):_vm._e()]),_c('div',{staticClass:\"send\"},[_c('el-input',{ref:\"input\",attrs:{\"placeholder\":'请输入内容',\"clearable\":\"\"},on:{\"focus\":function($event){return _vm.keyFlag(true)},\"blur\":function($event){return _vm.keyFlag(false)}},model:{value:(_vm.input),callback:function ($$v) {_vm.input=$$v},expression:\"input\"}}),_c('el-button',{attrs:{\"type\":\"success\"},on:{\"click\":_vm.send}},[_vm._v(\"发送\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./chat.vue?vue&type=template&id=d5124b3a&scoped=true&\"\nimport script from \"./chat.vue?vue&type=script&lang=js&\"\nexport * from \"./chat.vue?vue&type=script&lang=js&\"\nimport style0 from \"./chat.vue?vue&type=style&index=0&id=d5124b3a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d5124b3a\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=70444eb3&scoped=true&\"\nimport script from \"./login.vue?vue&type=script&lang=js&\"\nexport * from \"./login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=70444eb3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70444eb3\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login\"},[(_vm.flag)?_c('div',{on:{\"click\":function($event){_vm.boxFlag = true}}},[_vm._v(\"登录\")]):_c('div',{staticStyle:{\"text-align\":\"right\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"25px\"}},[_vm._v(\" 欢迎\"+_vm._s(_vm.name)+\" 当前在线人数:\"+_vm._s(_vm.list.length)+\"人 \")]),_vm._l((_vm.leftList),function(item,index){return _c('div',{key:index,staticClass:\"func\"},[_c('img',{attrs:{\"src\":item.flag ? item.activeimg : item.img},on:{\"click\":function($event){return _vm.change(index)}}})])})],2),(_vm.boxFlag)?_c('div',{staticClass:\"box\"},[_c('div',{staticClass:\"line\"},[_c('p',[_vm._v(\"名称:\")]),_c('el-input',{attrs:{\"placeholder\":\"请输入名称\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c('div',{staticClass:\"line\"},[_c('p',[_vm._v(\"角色:\")]),_c('div',{staticClass:\"roleBox\"},_vm._l((_vm.roleList),function(item,index){return _c('div',{key:index,on:{\"click\":function($event){_vm.roleValue = index}}},[_c('img',{class:['avatar', index == _vm.roleValue ? 'active' : ''],attrs:{\"src\":item}})])}),0)]),_c('div',{staticClass:\"line1\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.loginIn}},[_vm._v(\"确认\")]),_c('el-button',{on:{\"click\":function($event){_vm.boxFlag = false;\n _vm.roleValue = 0;}}},[_vm._v(\"取消\")])],1)]):_vm._e(),_c('div',{staticStyle:{\"width\":\"0\"},attrs:{\"id\":\"local_stream\",\"autoplay\":\"\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login1.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login1.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./login1.vue?vue&type=template&id=128f4cfc&scoped=true&\"\nimport script from \"./login1.vue?vue&type=script&lang=js&\"\nexport * from \"./login1.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login1.vue?vue&type=style&index=0&id=128f4cfc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"128f4cfc\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=cb88088c&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Bus from '../../common/js/bus'\nexport default {\n namespaced: true,\n state() {\n return {\n ws: '', //websokset\n msgList: [[]], //消息列表\n cheatList: [{ name: '世界', id: 0 }], //聊天人列表\n value: 0, //当前与哪个人物聊天\n role: {}, //角色信息\n timmer: '', //计时器\n playerList: [], //人物列表\n user_power: 0, //0=游客 1=普通用户 2=认证用户 3=企业用户 4=企业管理员 5=总管理\n pageMsgList: [],\n sharename: '', //主持人名字,\n worldMsgList: [], //世界消息\n privateChatMsgList: {}, //私聊消息库建立 【\"id-id\":[]】\n unreadMsgP: [], //私人未读消息数据\"[sendId,recvId]\"\n unreadMsgW: '' //发送者的id\n // connectInfo: {\n // //请求消息头\n // CMD_VISITOR_LOGIN: 1059,\n // CMD_COMMON_HEARTBEAT: 1000, //心跳 1000,ping\n // CMD_COMMON_POSITION: 3, //实时同步位置信息 3,positions\n // CMD_BUFFER_POSITION: 4, //缓存位置信息 4,positions\n // CMD_COMMON_DEBUG: 1100, //用来调试\n // CMD_USER_LOGIN: 1050, //登录 1050,name,id,info\n // CMD_USER_CHATS: 1051, //公屏聊天 1051,messaged\n // CMD_USER_CHAT: 1052, //私聊 1052,rev_id,message\n // CMD_USER_QUIT: 1053, //退出 1053,null\n // CMD_USER_SIT_DOWN: 1054, //坐下 1054,sitname,id\n // CMD_USER_STAND_UP: 1055, //起立 1055,sitname,id\n // CMD_USER_CUSTOM: 1056, //用户广播自定义消息 1056,custom_msg\n // CMD_USER_CUSTOM_SEND: 1057, //用户向指定id自定义消息 1057,rev_id,custom_msg\n // CMD_USER_LOGIN2: 1058, //游客登录 1058,name\n // CMD_ITEM_DISPLAY: 1070, //隐藏显示物体 1070,itemname\n // //响应消息头\n // MSG_RELOGIN: 198, //重复登录,现有账户退出。198,id\n // MSG_NULL: 200, //无消息头\n // MSG_LOGIN_SUCCESS: 201, //登录成功 201,id\n // MSG_NEWPLAYER: 202, //新用户加入 202,playerinfo\n // MSG_QUIT: 203, //退出 203,id\n // MSG_POS: 204, //位置信息 204,id,positions\n // MSG_BUF_POS: 205, //缓存位置信息 205,positions0,positions1,....\n // MSG_PLAYERS: 206, //用户列表 202,json_encode(players) $player = array(\"fd\" => $this->fd,\"id\" => $pid,\"name\" => $cur_name,\"info\" => $info);\n // MSG_CHATS: 207, //公屏聊天 207,id,msg\n // MSG_CHAT: 208, //私聊 208,send_id,rev_id,msg\n // MSG_SITS: 209, //当前所有座位信息 209,json_encode(sits) $sit[$sitname] = id;\n // MSG_SIT_DOWN: 210, //坐下 210,sitname,id\n // MSG_STAND_UP: 211, //起立 211,sitname,id\n // MSG_CUSTOM: 212, //用户自定义消息 212,id,custom_msg\n // MSG_CLEAR_SITDOWNS: 214, //制清理入座信息 214,\n // MSG_ITEM_DISPLAY: 220, //用来调试 220,itemname,0; //hide 0 /display 1\n // MSG_DEBUG: 300, //用来调试\n // MSG_ALL_CHATS: 221, //历史群聊记录 221,json_string\n // MSG_MY_CHAT: 222 //历史私聊记录 221,json_string\n // }\n }\n },\n\n mutations: {\n //websocket链接\n login(state, data) {\n let that = this\n state.role = data\n var msg\n let ws = document.o2.ws\n let responseCmd = ws.responseCmd\n\n //历史群聊记录 221,json_string\n ws.on(responseCmd.MSG_ALL_CHATS, (str) => {\n let arr = JSON.parse(str)\n if (arr.length > 0) {\n arr.forEach((item) => {\n let msg = item.split(',')\n state.worldMsgList.push({\n name: msg[0],\n msg: msg[2]\n })\n })\n }\n })\n\n //历史私聊记录 222,json_string\n ws.on(responseCmd.MSG_MY_CHAT, (str) => {\n let arr = JSON.parse(str)\n if (arr.length > 0) {\n arr.forEach((item) => {\n let msg = item.split(',')\n that.commit('chat/pcml', { sendname: msg[0], reName: msg[1], msg: msg[4], sendid: msg[2], reid: msg[3] })\n })\n }\n })\n\n // msg = evt.data.split(',')\n // Bus.$emit('playermsg', evt)\n // 登录成功\n ws.on(responseCmd.MSG_LOGIN_SUCCESS, (str) => {\n let arr = str.split(',')\n state.role.id = arr[0]\n document.client.login(arr[0])\n state.role.fd = arr[1]\n Bus.$emit('loginS', '')\n })\n\n // 获取用户列表\n ws.on(responseCmd.MSG_PLAYERS, (str) => {\n let arr = JSON.parse(str)\n arr.forEach((element) => {\n element.audioMuted = true\n element.videoMuted = true\n element.hasAudio = false\n element.hasVideo = false\n element.disable = false\n state.playerList.push(element)\n })\n })\n\n // 增加新用户\n ws.on(responseCmd.MSG_NEWPLAYER, (str) => {\n let arr = str.split(',')\n state.playerList.push({\n id: arr[0],\n name: arr[1],\n vip: arr[2],\n fd: arr[3],\n audioMuted: true,\n videoMuted: true,\n hasAudio: false,\n hasVideo: false,\n disable: false\n })\n })\n\n // 用户退出\n ws.on(responseCmd.MSG_QUIT, (str) => {\n var value = state.playerList.findIndex((el) => el.id == str)\n state.playerList.splice(value, 1)\n })\n\n // 获取公屏聊天列表\n ws.on(responseCmd.MSG_CHATS, (str) => {\n let msg = str.split(',')\n var user = state.playerList.filter((el) => el.id == msg[0])\n var name = ''\n if (user.length) {\n name = user[0].name\n }\n if (msg.length == 4 && msg[3] == 'msgPage') {\n state.pageMsgList.push({ name, msg: msg[1] })\n } else {\n state.unreadMsgW = ''\n setTimeout(() => {\n state.unreadMsgW = msg[0]\n }, 0)\n }\n\n state.msgList[0].push({\n name,\n msg: msg[1]\n })\n\n state.worldMsgList.push({\n name,\n msg: msg[1]\n })\n })\n\n //获取私聊列表\n ws.on(responseCmd.MSG_CHAT, (str) => {\n let arr = str.split(',')\n var name = state.playerList.filter((el) => el.id == arr[0])[0].name\n state.msgList.push([])\n var sendid = state.playerList.filter((el) => el.id == arr[0])[0].name\n var reid = state.playerList.filter((el) => el.id == arr[1])[0].name\n var m = arr[2]\n var value = arr[3] * 1\n //privateChatMsgList: {}, //私聊消息库建立 【\"id-id\":[]】\n that.commit('chat/pcml', { sendname: sendid, reName: reid, msg: m, sendid: arr[0], reid: arr[1] })\n // 私人未读消息数据\"sendId-recvId\"\n state.unreadMsgP.push([arr[0], arr[1]])\n })\n\n //重复登录\n ws.on(responseCmd.MSG_RELOGIN, (str) => {\n let arr = JSON.parse(str)\n if (state.role.fd == arr[0]) {\n localStorage.removeItem('info')\n location.reload()\n done()\n }\n var value1 = state.playerList.findIndex((el) => el.fd == arr[0])\n state.playerList.splice(value1, 1)\n })\n\n //自定义消息\n ws.on(responseCmd.MSG_CUSTOM, (str) => {\n let msg = JSON.parse(str)\n if (msg[1].split('-')[0] == 'editInfo') {\n let name = msg[1].split('-')[1]\n let model = msg[1].split('-')[2]\n that.playerList.forEach((f, i) => {\n if (f.id == msg[0]) {\n that.playerList.splice(i, 1, {\n fd: f.fd,\n id: f.id,\n name: name,\n vip: model,\n roomid: f.roomid,\n role: f.role,\n userId: f.userId,\n audioMuted: f.audioMuted,\n videoMuted: f.videoMuted,\n hasAudio: f.hasAudio,\n hasVideo: f.hasVideo,\n disable: f.disable\n })\n }\n })\n Bus.$emit('updateSharename')\n }\n if (msg[1].includes('setName')) {\n let roleName = msg[2]\n .split(':')[1]\n .replace(/\\\"/g, '')\n .replace('}', '')\n state.role.name = roleName\n }\n if (msg[1].split('-')[0] == 'jinshipin') {\n Bus.$emit('jinshipin', {\n id: msg[0],\n flag: msg[1].split('-')[1] == '1' ? true : false\n })\n }\n if (msg[1].split('-')[0] == 'jinyuyin') {\n Bus.$emit('jinyuyin', {\n id: msg[0],\n flag: msg[1].split('-')[1] == '1' ? true : false\n })\n }\n if (msg[1].split('-')[0] == 'outpersonSingle') {\n Bus.$emit('outpersonSingle', {\n id: msg[1].split('-')[1]\n })\n }\n if (msg[1].split('-')[0] == 'jinyuyinbyone') {\n Bus.$emit('jinyuyinbyone', {\n id: msg[1].split('-')[2],\n flag: msg[1].split('-')[1] == '1' ? true : false\n })\n }\n if (msg[1].split('-')[0] == 'jinshipinbyone') {\n Bus.$emit('jinshipinbyone', {\n id: msg[1].split('-')[2],\n flag: msg[1].split('-')[1] == '1' ? true : false\n })\n }\n })\n },\n\n // 匹配名称\n searchName(state, data) {\n var name = state.playerList.filter((el) => el.id == data)[0].name\n return name\n },\n // 发送消息\n send(state, data) {\n document.o2.ws.send(data)\n },\n //修改value--当前与哪个人物聊天\n setValue(state, data) {\n console.log(data)\n state.value = data.value\n },\n //删去主页消息显示\n setMsgPageValue(state) {\n state.pageMsgList.shift()\n },\n // 主持人名称\n searchNameByZhuChiRen(state, data) {\n if (!data) return (state.sharename = data)\n var name = state.playerList.filter((el) => el.id == data)[0].name\n state.sharename = name\n },\n //修改每个用户是否语音状态\n editVA(state, data) {\n data.forEach((stream) => {\n state.playerList.find(function (value) {\n if (value.userId == stream.userId) {\n value.audioMuted = stream.audioMuted\n value.hasAudio = stream.hasAudio\n value.hasVideo = stream.hasVideo\n value.videoMuted = stream.videoMuted\n }\n })\n })\n },\n //踢掉用户\n kickOut(state, data) {\n let index = state.playerList.findIndex((item) => item.id == data.id)\n state.playerList.splice(index, 1)\n },\n //privateChatMsgList: {}, //私聊消息库建立 【\"id-id\":[]】\n pcml(state, data) {\n let key1 = data.sendid + '-' + data.reid\n let key2 = data.reid + '-' + data.sendid\n if (!state.privateChatMsgList.hasOwnProperty(key1) && !state.privateChatMsgList.hasOwnProperty(key2)) {\n state.privateChatMsgList[key1] = []\n state.privateChatMsgList[key1].push({ name: data.sendname, msg: data.msg })\n } else {\n if (state.privateChatMsgList.hasOwnProperty(key1)) {\n state.privateChatMsgList[key1].push({ name: data.sendname, msg: data.msg })\n } else {\n state.privateChatMsgList[key2].push({ name: data.sendname, msg: data.msg })\n }\n }\n // console.log(state.privateChatMsgList, '++++')\n Bus.$emit('privateChatMsgListChange')\n },\n //移出已读的信息\n shiftOutUnread(state, data) {\n // debugger\n if (state.unreadMsgP.length == 0) return\n let index = state.unreadMsgP.findIndex((item) => (item[0] == data[0] && item[1] == data[1]) || (item[0] == data[1] && item[1] == data[0]))\n if (index != -1) state.unreadMsgP.splice(index, 1)\n },\n //恢复未读记录\n restoreUnread(state, data) {\n // state.unreadMsgP = data.unreadMsgP\n // state.unreadMsgW = data.unreadMsgW\n // Bus.$emit('unreadMsgPChange', data.unreadMsgP)\n // Bus.$emit('unreadMsgWChange', data.unreadMsgW)\n }\n },\n\n getters: {},\n\n actions: {}\n}\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from 'three/build/three.module';\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\n\nclass OrbitControls extends EventDispatcher {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper();\n\n\t\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\t\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\t\t\n\t\tthis.touchCount = 0;\n\n\t\tthis.arrTouch = [];\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.05;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.panSpeed = 1.0;\n\t\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t// Touch fingers\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = domElement;\n\n\t\t};\n\n\t\tthis.saveState = function () {\n\n\t\t\tscope.target0.copy( scope.target );\n\t\t\tscope.position0.copy( scope.object.position );\n\t\t\tscope.zoom0 = scope.object.zoom;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tconst quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\t\tconst quatInverse = quat.clone().invert();\n\n\t\t\tconst lastPosition = new Vector3();\n\t\t\tconst lastQuaternion = new Quaternion();\n\n\t\t\tconst twoPI = 2 * Math.PI;\n\n\t\t\treturn function update() {\n\n\t\t\t\t// if(document.documentElement.clientWidth >= 500){\n\t\t\t\t// \tscope.orientation = \"landscape\";\n\t\t\t\t// }else{\n\t\t\t\t// \tscope.orientation = \"portrait\";\n\t\t\t\t// }\n\n\t\t\t\tconst position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t}\n\n\t\t\t\t// restrict theta to be between desired limits\n\n\t\t\t\tlet min = scope.minAzimuthAngle;\n\t\t\t\tlet max = scope.maxAzimuthAngle;\n\n\t\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\tspherical.radius *= scale;\n\n\t\t\t\t// restrict radius to be between desired limits\n\t\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t\t// move target to panned location\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\t}\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tzoomChanged = false;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function () {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart );\n\t\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd );\n\t\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove );\n\n\t\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\n\t\t\t}\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tconst scope = this;\n\n\t\tconst STATE = {\n\t\t\tNONE: - 1,\n\t\t\tROTATE: 0,\n\t\t\tDOLLY: 1,\n\t\t\tPAN: 2,\n\t\t\tTOUCH_ROTATE: 3,\n\t\t\tTOUCH_PAN: 4,\n\t\t\tTOUCH_DOLLY_PAN: 5,\n\t\t\tTOUCH_DOLLY_ROTATE: 6\n\t\t};\n\n\t\tlet state = STATE.NONE;\n\n\t\tconst EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tconst spherical = new Spherical();\n\t\tconst sphericalDelta = new Spherical();\n\n\t\tlet scale = 1;\n\t\tconst panOffset = new Vector3();\n\t\tlet zoomChanged = false;\n\n\t\tconst rotateStart = new Vector2();\n\t\tconst rotateEnd = new Vector2();\n\t\tconst rotateDelta = new Vector2();\n\n\t\tconst panStart = new Vector2();\n\t\tconst panEnd = new Vector2();\n\t\tconst panDelta = new Vector2();\n\n\t\tconst dollyStart = new Vector2();\n\t\tconst dollyEnd = new Vector2();\n\t\tconst dollyDelta = new Vector2();\n\n\t\tfunction getAutoRotationAngle() {\n\n\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t}\n\n\t\tfunction getZoomScale() {\n\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tconst panLeft = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tconst panUp = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t\t}\n\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tconst pan = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\t\tconst element = scope.domElement;\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tconst position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tlet targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t\t// no-op\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tswitch ( event.code ) {\n\n\t\t\t\tcase scope.keys.UP:\n\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tscope.update();\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate( event ) {\n\n\t\t\tif ( event.touches.length == 1 ) {\n\n\t\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t\t} else {\n\t\t\t\tlet x=0,y=0,count = 0;\n\t\t\t\tevent.touches.forEach(e=>{\n\t\t\t\t\tif(e.target == scope.domElement){\n\t\t\t\t\t\tx += e.pageX;\n\t\t\t\t\t\ty += e.pageY;\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tx /= count;\n\t\t\t\ty /= count;\n\t\t\t\trotateStart.set( x , y );\n\n\t\t\t}\n\n\t\t\tif(scope.orientation == 'landscape'){\n\t\t\t\trotateStart.set(rotateStart.y,-rotateStart.x);\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartPan( event ) {\n\n\t\t\tif ( event.touches.length == 1 ) {\n\n\t\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\t\tpanStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly( event ) {\n\n\t\t\tconst dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tconst dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\tif ( event.touches.length == 1 ) {\n\n\t\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t\t} else {\n\t\t\t\tlet x =0,y = 0,count = 0;\n\t\t\t\tevent.touches.forEach(e=>{\n\t\t\t\t\tif(e.target == scope.domElement){\n\t\t\t\t\t\tx += e.pageX;\n\t\t\t\t\t\ty += e.pageY;\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tx /= count;\n\t\t\t\ty /= count;\n\t\t\t\tconsole.log(x,y);\n\t\t\t\trotateEnd.set( x , y );\n\n\t\t\t}\n\t\t\t\n\t\t\tif(scope.orientation == 'landscape'){\n\t\t\t\trotateEnd.set(rotateEnd.y,-rotateEnd.x);\n\t\t\t}\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\tif ( event.touches.length == 1 ) {\n\n\t\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\t\tpanEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\tconst dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tconst dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyOut( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t\t}\n\n\t\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t\t// no-op\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onPointerDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tswitch ( event.pointerType ) {\n\n\t\t\t\tcase 'mouse':\n\t\t\t\tcase 'pen':\n\t\t\t\t\tonMouseDown( event );\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO touch\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tswitch ( event.pointerType ) {\n\n\t\t\t\tcase 'mouse':\n\t\t\t\tcase 'pen':\n\t\t\t\t\tonMouseMove( event );\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO touch\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerUp( event ) {\n\n\t\t\tswitch ( event.pointerType ) {\n\n\t\t\t\tcase 'mouse':\n\t\t\t\tcase 'pen':\n\t\t\t\t\tonMouseUp( event );\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO touch\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\t// Prevent the browser from scrolling.\n\t\t\tevent.preventDefault();\n\n\t\t\t// Manually set the focus since calling preventDefault above\n\t\t\t// prevents the browser from setting it automatically.\n\n\t\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\t\tlet mouseAction;\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tmouseAction = - 1;\n\n\t\t\t}\n\n\t\t\tswitch ( mouseAction ) {\n\n\t\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.PAN:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseUp( event ) {\n\n\t\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\thandleMouseUp( event );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\thandleMouseWheel( event );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\t\t\t\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault(); // prevent scrolling\n\t\t\tscope.touchCount = 0;\n\t\t\tevent.touches.forEach(e => {\n\t\t\t\tif(e.target == scope.domElement)\n\t\t\t\tscope.touchCount++;\n\t\t\t});\n\t\t\tswitch ( scope.touchCount ) {\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault(); // prevent scrolling\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchEnd( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\thandleTouchEnd( event );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );\n\n\t\tscope.domElement.addEventListener( 'touchstart', onTouchStart, { passive: false } );\n\t\tscope.domElement.addEventListener( 'touchend', onTouchEnd );\n\t\tscope.domElement.addEventListener( 'touchmove', onTouchMove, { passive: false } );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t}\n\n}\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nclass MapControls extends OrbitControls {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper( object, domElement );\n\n\t\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\t\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\t\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\t\tthis.touches.ONE = TOUCH.PAN;\n\t\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n\t}\n\n}\n\nexport { OrbitControls, MapControls };\n","import * as THREE from 'three/build/three.module';\r\n// import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\r\n// import { TransformControls } from 'three/examples/jsm/controls/TransformControls';\r\n// import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial';\r\n// import { LineGeometry } from 'three/examples/jsm/lines/LineGeometry';\r\n// import { Line2 } from 'three/examples/jsm/lines/Line2';\r\n// import { CSS2DRenderer, CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';\r\n// import { OBJLoader2 } from 'three/examples/jsm/loaders/OBJLoader2.js';\r\n// import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\r\n// import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\r\n// import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\r\n// import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass.js';\r\n// import { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\r\nvar idx=0;\r\n\r\nfunction compareFunction(propertyName){\r\n return function (src,tar) {\r\n //获取比较的值\r\n var v1=src[propertyName];\r\n var v2=tar[propertyName];\r\n if(v1>v2){\r\n return 1;\r\n }\r\n if(v1\r\n {\r\n let jsonobj = this.to_json_object();\r\n let newobj = new ani_object();\r\n newobj.from_json(jsonobj);\r\n newobj.object=this.object;\r\n newobj.ani_type=this.ani_type;\r\n return newobj;\r\n }\r\n \r\n move_key=(key,newtime)=>\r\n {\r\n key.time=newtime;\r\n this.keys.sort(compareFunction(\"time\"));\r\n }\r\n\r\n from_json=(objj)=>\r\n {\r\n let aniobj=this;\r\n aniobj.ani_type=objj.ani_type;\r\n if (aniobj.ani_type==0)//旧格式支持\r\n {\r\n aniobj.ani_type=3;\r\n }\r\n aniobj.objid=objj.objid;\r\n aniobj.keys=objj.keys;\r\n for (let j=0;j\r\n {\r\n let key = {};\r\n key.time = time;\r\n key.value = {};\r\n key.ease=0;\r\n if (this.ani_type&1)//位置\r\n {\r\n let position = this.object.position.clone();\r\n let quaternion = this.object.quaternion.clone();\r\n let scale = this.object.scale.clone();\r\n key.value.position = position;\r\n key.value.quaternion = quaternion;\r\n key.value.scale = scale;\r\n }\r\n \r\n if (this.ani_type&(1<<1))//visible\r\n {\r\n key.value.visible = this.object.visible;\r\n }\r\n\r\n if (this.ani_type&(1<<2))//color\r\n {\r\n if (this.object.color)\r\n {\r\n key.value.color = this.object.color.clone();\r\n }\r\n if (this.object.material&&this.object.material.color)\r\n {\r\n key.value.color = this.object.material.color.clone();\r\n }\r\n }\r\n if (this.ani_type&(1<<3))//alpha\r\n {\r\n if (this.object.material)\r\n {\r\n key.value.opacity = this.object.material.opacity;\r\n key.value.transparent = this.object.material.transparent\r\n }\r\n }\r\n\r\n if (this.ani_type&(1<<4))//alpha\r\n {\r\n if (this.object.material&&this.object.material.map)\r\n {\r\n key.value.uv_offset = this.object.material.map.offset.clone();\r\n key.value.uv_repeat = this.object.material.map.repeat.clone();\r\n key.value.uv_rotation = this.object.material.map.rotation;\r\n }else{\r\n key.value.uv_offset=new THREE.Vector2(0,0);\r\n key.value.uv_repeat=new THREE.Vector2(1,1);\r\n key.value.uv_rotation=0;\r\n }\r\n }\r\n if (this.ani_type&(1<<5))//emissive\r\n {\r\n if (this.object.material&&this.object.material.emissive)\r\n {\r\n key.value.ill_color = this.object.material.emissive.clone();\r\n key.value.ill_power = this.object.material.emissiveIntensity;\r\n }\r\n }\r\n if (this.ani_type&(1<<6))//lightmap\r\n {\r\n if (this.object.material&&this.object.material.emissive)\r\n {\r\n key.value.lightMapIntensity = this.object.material.lightMapIntensity;\r\n key.value.aoMapIntensity = this.object.material.aoMapIntensity;\r\n }\r\n }\r\n if (this.ani_type&(1<<7))//lightmap\r\n {\r\n if (this.object&&this.object.bSkeleton)\r\n {\r\n key.value.clip_name = this.object.clip_name;\r\n }\r\n }\r\n\r\n if (this.ani_type&(1<<9))//lightmap\r\n {\r\n if (this.object)\r\n {\r\n key.value.eye = this.object.camera.position.clone();\r\n key.value.target = this.object.cameraControls.target.clone();\r\n }\r\n }\r\n\r\n\r\n ////\r\n let bfound=false;\r\n for (let ii=0;ii\r\n {\r\n if (!this.object) return;\r\n if (this.keys.length==0)\r\n {\r\n return;\r\n }\r\n let key1=null;\r\n let key2=null;\r\n let alpha=0;\r\n if (this.keys.length==1)\r\n {\r\n key1=this.keys[0];\r\n key2=this.keys[0];\r\n }else{\r\n let bFound=false;\r\n for (let i=0;itime)\r\n {\r\n bFound=true;\r\n key1=this.keys[0];\r\n key2=this.keys[0];\r\n break;\r\n }\r\n if (key1.time<=time&&key2.time>time)\r\n {\r\n bFound=true;\r\n alpha = (time-key1.time)/(key2.time-key1.time);\r\n break;\r\n }\r\n }\r\n if (!bFound)\r\n {\r\n alpha=0;\r\n key1=this.keys[this.keys.length-1];\r\n key2=key1;\r\n }\r\n }\r\n ////////////////////////////////////////////////////\r\n //插值运算\r\n let ease = key1.ease;\r\n if (ease!=0)\r\n {\r\n let p = Math.exp(Math.abs(ease/100.0));\r\n if (ease<0)\r\n {\r\n alpha=1-Math.pow((1-alpha),p);\r\n } else\r\n {\r\n alpha=Math.pow(alpha,p);\r\n }\r\n }\r\n if (this.ani_type&1)//位置控制\r\n {\r\n let position = key1.value.position.clone();\r\n position.lerp(key2.value.position,alpha);\r\n \r\n var startQuaternion = key1.value.quaternion.clone();\r\n startQuaternion.slerp(key2.value.quaternion,alpha);\r\n let scale = key1.value.scale.clone();\r\n scale.lerp(key2.value.scale,alpha);\r\n\r\n this.object.position.set(position.x,position.y,position.z);\r\n this.object.quaternion.set(startQuaternion.x,startQuaternion.y,startQuaternion.z,startQuaternion.w);\r\n this.object.scale.set(scale.x,scale.y,scale.z);\r\n }\r\n if (this.ani_type&(1<<1))//visible\r\n {\r\n this.object.visible = key1.value.visible;\r\n }\r\n \r\n if (this.ani_type&(1<<2))//color\r\n {\r\n if (this.object.color)\r\n {\r\n let color1 = key1.value.color.clone();\r\n let color2 = key2.value.color.clone();\r\n color1.lerp(color2,alpha);\r\n this.object.color.setRGB(color1.r,color1.g,color1.b);\r\n }\r\n if (this.object.material&&this.object.material.color)\r\n {\r\n let color1 = key1.value.color.clone();\r\n let color2 = key2.value.color.clone();\r\n color1.lerp(color2,alpha);\r\n this.object.material.color.setRGB(color1.r,color1.g,color1.b);\r\n }\r\n }\r\n if (this.ani_type&(1<<3))//alpha\r\n {\r\n if (this.object.material)\r\n {\r\n this.object.material.opacity=(1-alpha)*key1.value.opacity+alpha*key2.value.opacity;\r\n this.object.material.transparent=key1.value.transparent;\r\n }\r\n }\r\n if (this.ani_type&(1<<4))//uv\r\n {\r\n if (this.object.material&&this.object.material.map)\r\n {\r\n let offset = key1.value.uv_offset.clone();\r\n offset.lerp(key2.value.uv_offset,alpha);\r\n let repeat = key1.value.uv_repeat.clone();\r\n repeat.lerp(key2.value.uv_repeat,alpha);\r\n\r\n this.object.material.map.offset.set(offset.x,offset.y);\r\n this.object.material.map.repeat.set(repeat.x,repeat.y);\r\n this.object.material.map.rotation = (1-alpha)*key1.value.uv_rotation+alpha*key2.value.uv_rotation;\r\n }\r\n }\r\n if (this.ani_type&(1<<5))//emissive\r\n {\r\n if (this.object.material&&this.object.material.emissive)\r\n {\r\n let color1 = key1.value.ill_color.clone();\r\n color1.lerp( key2.value.ill_color,alpha);\r\n this.object.material.emissive.setRGB(color1.r,color1.g,color1.b);\r\n this.object.material.emissiveIntensity = (1-alpha)*key1.value.ill_power+alpha*key2.value.ill_power;\r\n }\r\n }\r\n if (this.ani_type&(1<<6))//lightmap\r\n {\r\n if (this.object.material&&this.object.material.aoMapIntensity!=null)\r\n {\r\n this.object.material.aoMapIntensity = (1-alpha)*key1.value.aoMapIntensity+alpha*key2.value.aoMapIntensity;\r\n this.object.material.lightMapIntensity = (1-alpha)*key1.value.lightMapIntensity+alpha*key2.value.lightMapIntensity;\r\n }\r\n }\r\n if (this.ani_type&(1<<7))//lightmap\r\n {\r\n if (this.object&&this.object.bSkeleton)\r\n {\r\n if (this.object.clip_name!=key1.value.clip_name)\r\n {\r\n document.o2.play_skeleton_clip(this.object,key1.value.clip_name,1);\r\n }\r\n }\r\n }\r\n if (this.ani_type&(1<<9))//camera\r\n {\r\n if (this.object.camera&&this.object.cameraControls)\r\n {\r\n let eye = key1.value.eye.clone();\r\n let target = key1.value.target.clone();\r\n eye.lerp(key2.value.eye,alpha);\r\n target.lerp(key2.value.target,alpha);\r\n this.object.camera.position.set(eye.x,eye.y,eye.z);\r\n this.object.cameraControls.target.set(target.x,target.y,target.z);\r\n }\r\n }\r\n }\r\n to_json_object=()=>\r\n {\r\n let obj={};\r\n if (this.object)\r\n {\r\n obj.objid=this.object.uuid;\r\n obj.objname=this.object.name;\r\n }\r\n obj.ani_type=this.ani_type;\r\n obj.keys=this.keys;\r\n return obj;\r\n }\r\n}\r\nclass timeline\r\n{\r\n constructor()\r\n {\r\n this.name=\"timeline\";\r\n this.current_time = 0;\r\n this.total_time=10;\r\n this.bPlaying=false;\r\n this.LoopType=0;\r\n this.objects=[];\r\n this.scripts=[];\r\n this.uuid=\"\";\r\n this.type=\"timeline\";\r\n this.autoPlay=false;\r\n this.rate=1;\r\n }\r\n excute_script=(key)=>{\r\n if (this.o2&&this.o2.script&&this.o2.script.timeline)\r\n {\r\n this.o2.script.timeline(this,key);\r\n }\r\n }\r\n frame_move=(time)=>{\r\n time=time*this.rate;\r\n if (!this.bPlaying)\r\n {\r\n return;\r\n }\r\n let oldtime = this.current_time;\r\n if (this.LoopType==0)//正向播放一次\r\n {\r\n this.current_time+=time;\r\n if (this.current_time>this.total_time)\r\n {\r\n this.current_time=this.total_time;\r\n this.bPlaying=false;\r\n }\r\n }\r\n if (this.LoopType==1)//正向循环播放\r\n {\r\n this.current_time+=time;\r\n if (this.current_time>this.total_time)\r\n {\r\n this.current_time=0;\r\n }\r\n }\r\n if (this.LoopType==2)//逆向播放一次\r\n {\r\n this.current_time-=time;\r\n if (this.current_time<0)\r\n {\r\n this.current_time=0;\r\n this.bPlaying=false;\r\n }\r\n }\r\n if (this.LoopType==3)//逆向循环播放\r\n {\r\n this.current_time-=time;\r\n if (this.current_time<0)\r\n {\r\n this.current_time=this.total_time;\r\n }\r\n }\r\n let old_loop = this.LoopType;\r\n if (old_loop==4)//钟摆播放的正向\r\n {\r\n this.current_time+=time;\r\n if (this.current_time>this.total_time)\r\n {\r\n this.current_time=this.total_time;\r\n this.LoopType=5;\r\n }\r\n }\r\n if (old_loop==5)//钟摆播放的逆向\r\n {\r\n this.current_time-=time;\r\n if (this.current_time<0)\r\n {\r\n this.current_time=0;\r\n this.LoopType=4;\r\n }\r\n }\r\n //更新对象\r\n if(oldtime!=this.current_time)\r\n {\r\n //脚本\r\n {\r\n for (let i=0;ioldtime&&key.time<=this.current_time)\r\n {\r\n this.excute_script(key);\r\n }\r\n }\r\n if (this.LoopType==1)//正向循环播放\r\n {\r\n if (this.current_time==0)//循环到第一帧了\r\n {\r\n if (key.time>oldtime&&key.time<=this.total_time)\r\n {\r\n this.excute_script(key);\r\n }\r\n }else{\r\n if (key.time>oldtime&&key.time<=this.current_time)\r\n {\r\n this.excute_script(key);\r\n }\r\n }\r\n }\r\n if (this.LoopType==2)//逆向播放一次\r\n {\r\n if (key.time=this.current_time)\r\n {\r\n this.excute_script(key);\r\n }\r\n }\r\n if (this.LoopType==3)//逆向循环播放\r\n {\r\n if (this.current_time==this.total_time)//循环到第一帧了\r\n {\r\n if (key.time=this.current_time)\r\n {\r\n this.excute_script(key);\r\n }\r\n }\r\n }\r\n if (old_loop==4)//钟摆播放的正向\r\n {\r\n if (key.time>oldtime&&key.time<=this.current_time)\r\n {\r\n this.excute_script(key);\r\n }\r\n }\r\n if (old_loop==5)//钟摆播放的逆向\r\n {\r\n if (key.time=this.current_time)\r\n {\r\n this.excute_script(key);\r\n }\r\n }\r\n }\r\n\r\n ///跳转后的脚本\r\n for (let i=0;i\r\n {\r\n this.current_time=time;\r\n this.update(this.current_time);\r\n }\r\n BindItem=(obj,type)=>\r\n { \r\n //判断重复的对象\r\n for (let i=0;i\r\n {\r\n let ao = new ani_object;\r\n ao.object=new THREE.Object3D;\r\n ao.object.name=\"_TLCameraCTRL\";\r\n ao.object.camera=this.o2.camera;\r\n ao.object.cameraControls=this.o2.cameraControls;\r\n ao.ani_type=1<<9;\r\n this.objects.push(ao);\r\n return ao;\r\n }\r\n RecordCamera=(time)=>\r\n {\r\n for (let i=0;i\r\n { \r\n //判断重复的对象\r\n for (let i=0;i\r\n { \r\n //判断重复的对象\r\n for (let i=0;i\r\n {\r\n let obj={};\r\n obj.total_time=this.total_time;\r\n obj.LoopType=this.LoopType;\r\n obj.autoPlay=this.autoPlay;\r\n obj.uuid=this.uuid;\r\n obj.type=this.type;\r\n obj.name=this.name;\r\n if (this.export) obj.export=1;\r\n obj.current_time=this.current_time;\r\n obj.objects=[];\r\n obj.scripts=this.scripts;\r\n for (let i=0;i\r\n {\r\n if (time<0)\r\n {\r\n time=0;\r\n }\r\n if (time>this.total_time) time>this.total_time;\r\n this.current_time=time;\r\n for (let i=0;i\r\n {\r\n for (let i=0;i\r\n {\r\n this.bPlaying=true;\r\n }\r\n stop=()=>\r\n {\r\n this.bPlaying=false;\r\n }\r\n remove_key=(obj)=>\r\n {\r\n let aniobj = this.objects[obj.objidx];\r\n if (aniobj)\r\n {\r\n let newkeys=[];\r\n for (let i=0;i\r\n {\r\n let aniobj = this.objects[obj.objidx];\r\n if (aniobj)\r\n {\r\n for (let i=0;i\r\n {\r\n let aniobj = this.objects[obj.objidx];\r\n if (aniobj)\r\n {\r\n for (let i=0;i\r\n {\r\n for (let j=0;j\r\n {\r\n let animation = {};\r\n animation.timelines=[];\r\n for (let i=0;i\r\n {\r\n let animation = {};\r\n animation.timelines=[];\r\n for (let i=0;i\r\n { \r\n let tl = new timeline;\r\n tl.o2=this.o2;\r\n tl.name=obj.name;\r\n if (!obj.uuid)\r\n {\r\n let obj2=new THREE.Object3D();\r\n obj.uuid=obj2.uuid;\r\n }\r\n tl.uuid=obj.uuid;\r\n this.timelines.push(tl);\r\n console.log(this.timelines);\r\n return tl;\r\n }\r\n get_timeline_by_name=(name)=>\r\n { \r\n for (let i=0;i\r\n { \r\n for (let i=0;i\r\n { \r\n this.timelines=[];\r\n if (!obj) return;\r\n for (let i=0;i\r\n { \r\n let timelines=[];\r\n if (!obj) return timelines;\r\n for (let i=0;i\r\n {\r\n let tl = new timeline;\r\n tl.o2=this.o2;\r\n tl.name=obj.name;\r\n tl.total_time=obj.total_time;\r\n tl.LoopType=obj.LoopType;\r\n tl.current_time=obj.current_time;\r\n tl.autoPlay=obj.autoPlay;\r\n tl.uuid = obj.uuid;\r\n if (obj.scripts) tl.scripts=obj.scripts;\r\n for (let i=0;i\r\n {\r\n for (let i=0;i\r\n {\r\n for (let i=0;i\r\n {\r\n if (object.uuid==uuid) return object;\r\n for (let i=0;i\r\n {\r\n for (let i=0;i\r\n {\r\n let new_tls = [];\r\n for (let i=0;i {\r\n let obj = new THREE.Object3D;\r\n return obj.uuid;\r\n }\r\n translate_camera(x, y, z) {\r\n this.camera_move_dir.set(x, y, z)\r\n //this.cameraControls.enableZoom = false;\r\n this.stop_switch_camera()\r\n }\r\n move_camera = (x, y, z, xx, yy, zz, t) => {\r\n this.camera_target2 = new THREE.Vector3(x, y, z)\r\n this.camera_eye2 = new THREE.Vector3(xx, yy, zz)\r\n this.begin_eye2 = this.camera.position.clone()\r\n let camDir = new THREE.Vector3()\r\n this.camera.getWorldDirection(camDir)\r\n this.begin_target2 = this.camera.position\r\n .clone()\r\n .add(camDir.multiplyScalar(this.cameraControls.minDistance))\r\n this.camera_switch_count2 = Math.floor(t * 100)\r\n this.camera_switch_total2 = this.camera_switch_count2\r\n this.cameraControls.target.set(x, y, z)\r\n //this.cameraControls.enableZoom = false;\r\n //console.log(\"move camera:\", this.camera.position);\r\n }\r\n stop_switch_camera() {\r\n this.camera_switch_count2 = 0\r\n this.camera_switch_total2 = 0\r\n }\r\n switch_camera_ex = (x, y, z, xx, yy, zz, t) => {\r\n if (this.model) {\r\n this.model.visible = false\r\n }\r\n let dir = new THREE.Vector3()\r\n dir = this.camera\r\n .getWorldDirection(dir)\r\n .clone()\r\n .multiplyScalar(1000)\r\n this.cameraControls.target = this.camera.position.clone().add(dir)\r\n let targetPos = new THREE.Vector3(x, y, z)\r\n let cameraPos = new THREE.Vector3(xx, yy, zz)\r\n let dis = targetPos.distanceTo(cameraPos)\r\n if (dis < 1000) {\r\n let lastDir = new THREE.Vector3()\r\n lastDir\r\n .set(x - xx, y - yy, z - zz)\r\n .normalize()\r\n .multiplyScalar(1000)\r\n this.switch_camera2(\r\n xx + lastDir.x,\r\n yy + lastDir.y,\r\n zz + lastDir.z,\r\n xx,\r\n yy,\r\n zz,\r\n t\r\n )\r\n } else {\r\n this.switch_camera2(x, y, z, xx, yy, zz, t)\r\n }\r\n\r\n //this.cameraControls.enableZoom = true;\r\n }\r\n switch_camera = (x, y, z, xx, yy, zz, t) => {\r\n this.bSwitchFinish = false\r\n this.switch_camera2(x, y, z, xx, yy, zz, t)\r\n // this.cameraControls.enableZoom = true;\r\n // this.camera_target = new THREE.Vector3(x,y,z);\r\n // this.camera_eye = new THREE.Vector3(xx,yy,zz);\r\n // this.camera_switch_count=100;\r\n }\r\n switch_camera2 = (x, y, z, xx, yy, zz, t) => {\r\n console.log('move_camera')\r\n //begin\r\n this.begin_target2 = this.cameraControls.target.clone()\r\n this.begin_eye2 = this.camera.position.clone()\r\n let verz = new THREE.Vector3(0, 0, 1)\r\n let dst1 = this.begin_target2.clone()\r\n dst1.sub(this.begin_eye2)\r\n this.begin_length = dst1.length()\r\n dst1.normalize()\r\n this.begin_quaterion = new THREE.Quaternion()\r\n this.begin_quaterion.setFromUnitVectors(verz, dst1)\r\n\r\n //end\r\n this.camera_target2 = new THREE.Vector3(x, y, z)\r\n this.camera_eye2 = new THREE.Vector3(xx, yy, zz)\r\n let dst2 = this.camera_target2.clone()\r\n dst2.sub(this.camera_eye2)\r\n this.end_length = dst2.length()\r\n dst2.normalize()\r\n this.end_quaterion = new THREE.Quaternion()\r\n this.end_quaterion.setFromUnitVectors(verz, dst2)\r\n\r\n if (!t) t = 1\r\n this.camera_switch_count2 = 100 * t\r\n this.camera_switch_total2 = 100 * t\r\n }\r\n\r\n collect_visible_object = (obj, objs) => {\r\n if (!obj.visible) return\r\n if (obj.bLock) return\r\n if (obj.type == 'Mesh' || obj.type == 'Sprite' || obj.type == 'Reflector')\r\n objs.push(obj)\r\n for (let i = 0, l = obj.children.length; i < l; i++) {\r\n this.collect_visible_object(obj.children[i], objs)\r\n }\r\n }\r\n collect_visible_object2 = (obj, objs) => {\r\n if (!obj.visible) return\r\n if (obj.bSkeleton) return;\r\n if (obj.bLock) return\r\n if (obj.type == 'Sprite') return;\r\n if (obj.type == 'Mesh' || obj.type == 'Sprite' || obj.type == 'Reflector')\r\n objs.push(obj)\r\n for (let i = 0, l = obj.children.length; i < l; i++) {\r\n this.collect_visible_object2(obj.children[i], objs)\r\n }\r\n }\r\n ray_test = (event) => {\r\n let mouse = new THREE.Vector2()\r\n mouse.x = (event.offsetX / this.WIDTH) * 2 - 1\r\n mouse.y = -(event.offsetY / this.HEIGHT) * 2 + 1\r\n let raycaster = new THREE.Raycaster()\r\n raycaster.setFromCamera(mouse, this.camera)\r\n let objects = []\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n if (this.scene.children[i] != this.gizmo) {\r\n if (this.scene.children[i].name == 'no_pick') continue\r\n this.collect_visible_object(this.scene.children[i], objects)\r\n }\r\n }\r\n var intersects = raycaster.intersectObjects(objects)\r\n return intersects\r\n }\r\n\r\n ray_test2 = (object, event) => {\r\n let mouse = new THREE.Vector2()\r\n mouse.x = (event.offsetX / this.WIDTH) * 2 - 1\r\n mouse.y = -(event.offsetY / this.HEIGHT) * 2 + 1\r\n let raycaster = new THREE.Raycaster()\r\n raycaster.setFromCamera(mouse, this.camera)\r\n var intersects = raycaster.intersectObjects(object, true)\r\n return intersects\r\n }\r\n\r\n ray_test3 = (raycaster) => {\r\n let objects = []\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n if (this.scene.children[i] != this.gizmo) {\r\n if (this.scene.children[i].name == 'no_pick') continue\r\n this.collect_visible_object(this.scene.children[i], objects)\r\n }\r\n }\r\n var intersects = raycaster.intersectObjects(objects)\r\n return intersects\r\n }\r\n\r\n ray_test4 = (raycaster) => {\r\n let objects = []\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n let obj = this.scene.children[i];\r\n if (obj.bSkeleton) continue;\r\n if (this.scene.children[i] != this.gizmo) {\r\n this.collect_visible_object2(this.scene.children[i], objects)\r\n }\r\n }\r\n var intersects = raycaster.intersectObjects(objects)\r\n return intersects\r\n }\r\n\r\n apply_skeleton_mtl = (obj, depth, mtls, from_zip, zip_info) => {\r\n let o2 = this\r\n let mtl = mtls[depth]\r\n if (mtl) {\r\n let material2 = this.load_phong_mtl(mtl, from_zip, zip_info);\r\n if (!material2.envMap || material2.envMap == this.scene.background) material2.reflectivity = 0;\r\n obj.material = material2;\r\n }\r\n for (let i = 0; i < obj.children.length; i++) {\r\n let depth2 = depth + '_' + i\r\n this.apply_skeleton_mtl(obj.children[i], depth2, mtls, from_zip, zip_info)\r\n }\r\n }\r\n animate = () => {\r\n requestAnimationFrame(this.animate)\r\n let time2 = Date.now()\r\n this.update_frame_rate(time2)\r\n let time_passed = (time2 - this.last_time) / 1000\r\n if (this.is_mobile && time_passed < 0.03) return\r\n //刷新渲染状态\r\n if (this.rendererStats && this.rendererStats.bShow) {\r\n this.rendererStats.update(this.renderer)\r\n }\r\n\r\n // //gif动画\r\n if (this.gif_anis) {\r\n for (let i = 0; i < this.gif_anis.length; i++) {\r\n let gifani = this.gif_anis[i]\r\n let tex = gifani.texture\r\n gifani.count++\r\n if (gifani.count >= gifani.frame) {\r\n //更新uv\r\n gifani.count = 0\r\n gifani.current_frame++\r\n let count = gifani.width * gifani.height\r\n if (gifani.current_frame >= count) gifani.current_frame = 0\r\n tex.repeat.set(1 / gifani.width, 1 / gifani.height)\r\n let x = gifani.current_frame % gifani.width\r\n let y =\r\n gifani.height - Math.ceil((gifani.current_frame + 1) / gifani.width)\r\n //console.log(gifani.current_frame,x,y);\r\n tex.offset.set(x / gifani.width, y / gifani.height)\r\n tex.wrapS = tex.wrapT = THREE.RepeatWrapping\r\n }\r\n }\r\n }\r\n if (this.camera_switch_count > 0) {\r\n this.camera_switch_count -= 1\r\n this.cameraControls.target.lerp(this.camera_target, 0.05)\r\n this.camera.position.lerp(this.camera_eye, 0.05)\r\n if (this.camera_switch_count == 0) {\r\n this.cameraControls.target.set(\r\n this.camera_target.x,\r\n this.camera_target.y,\r\n this.camera_target.z\r\n )\r\n this.camera.position.set(\r\n this.camera_eye.x,\r\n this.camera_eye.y,\r\n this.camera_eye.z\r\n )\r\n }\r\n }\r\n if (this.camera_switch_count2 > 0) {\r\n this.camera_switch_count2 -= 1\r\n let target = this.begin_target2.clone()\r\n let eye = this.begin_eye2.clone()\r\n let alpha = 1 - this.camera_switch_count2 / this.camera_switch_total2\r\n let alpha_old = alpha\r\n let ease = -100\r\n if (ease != 0) {\r\n let p = Math.exp(Math.abs(ease / 100.0))\r\n if (ease < 0) {\r\n alpha = 1 - Math.pow(1 - alpha, p)\r\n } else {\r\n alpha = Math.pow(alpha, p)\r\n }\r\n }\r\n\r\n target.lerp(this.camera_target2, alpha)\r\n let eyelen2 = this.begin_length * (1 - alpha) + this.end_length * alpha\r\n let quat2 = this.begin_quaterion.clone()\r\n quat2.slerp(this.end_quaterion, alpha)\r\n let eyedir = new THREE.Vector3(0, 0, 1)\r\n eyedir.applyQuaternion(quat2)\r\n eyedir.multiplyScalar(-eyelen2)\r\n eye.set(target.x, target.y, target.z)\r\n eye.add(eyedir)\r\n // eye.lerp(this.camera_eye2, alpha);\r\n this.cameraControls.target.set(target.x, target.y, target.z)\r\n this.camera.position.set(eye.x, eye.y, eye.z)\r\n //console.log(this.cameraControls.target);\r\n }\r\n //切换镜头完成回调\r\n else if (!this.bSwitchFinish) {\r\n //console.log(\"switch_camera finish\");\r\n this.bSwitchFinish = true\r\n let arr = this.switch_camera_finish\r\n let len = arr.length\r\n if (len > 0) {\r\n for (let i = 0; i < len; i++) {\r\n arr[i](\r\n this.cameraControls.target.x,\r\n this.cameraControls.target.y,\r\n this.cameraControls.target.z,\r\n this.camera.position.x,\r\n this.camera.position.y,\r\n this.camera.position.z\r\n )\r\n }\r\n }\r\n }\r\n\r\n if (time_passed > 0.1) time_passed = 0.1 //间隔不要超过0.1秒\r\n for (let i = 0; i < this.frame_move_recall.length; i++) {\r\n this.frame_move_recall[i](time_passed)\r\n }\r\n\r\n // if (this.camera_move_dir.length() > 0) {\r\n // this.b_camera_move = true;\r\n // let originPos = this.camera.position.clone();\r\n // let move_dir = this.camera_move_dir.clone().multiplyScalar(time_passed);\r\n // this.fpsControls.moveForward(move_dir.z);\r\n // this.fpsControls.moveRight(move_dir.x);\r\n // this.camera.position.y += move_dir.y;\r\n // // let dir = new THREE.Vector3();\r\n // // this.camera.getWorldDirection(dir);\r\n // // dir.multiplyScalar(this.cameraControls.distance);\r\n // let targetDir = this.camera.position.clone().sub(originPos);\r\n // this.cameraControls.target.add(targetDir);\r\n // //this.cameraControls.target = this.camera.position.clone().add(dir);\r\n // }\r\n // else {\r\n // this.b_camera_move = false;\r\n // }\r\n // if (this.script && this.script[\"frame_move\"]) {\r\n // this.script[\"frame_move\"](time_passed);\r\n // }\r\n this.last_time = time2\r\n this.animation.frame_move(time_passed)\r\n this.cameraControls.update()\r\n\r\n let time4 = Date.now()\r\n if (this.custom_render) {\r\n this.custom_render()\r\n } else {\r\n this.render()\r\n }\r\n let time3 = Date.now();\r\n if (this.div_bind.length > 0) {\r\n let viewMatrix = new THREE.Matrix4()\r\n let viewProjectionMatrix = new THREE.Matrix4()\r\n viewMatrix.copy(this.camera.matrixWorldInverse)\r\n viewProjectionMatrix.multiplyMatrices(\r\n this.camera.projectionMatrix,\r\n viewMatrix\r\n )\r\n\r\n for (let i = 0; i < this.div_bind.length; i++) {\r\n let bind = this.div_bind[i]\r\n let pos = bind.position.clone()\r\n pos.applyMatrix4(viewProjectionMatrix)\r\n pos.x = (pos.x * this.WIDTH) / 2 + this.WIDTH / 2\r\n pos.y = this.HEIGHT / 2 - (pos.y * this.HEIGHT) / 2\r\n bind.div.style.position = 'absolute'\r\n let posx = Math.round(pos.x)\r\n let posy = Math.round(pos.y)\r\n bind.div.style.left = posx.toString() + 'px'\r\n bind.div.style.top = posy.toString() + 'px'\r\n }\r\n }\r\n this.frame_count++;\r\n if (!this.render_cost) this.render_cost = 0;\r\n let passed = time3 - time4;\r\n this.render_cost += passed;\r\n // if (this.frame_count%60==0)\r\n // {\r\n // console.log(\"cost:\",this.render_cost,\" t:\",this.renderer.info.render.triangles,\" c:\",this.renderer.info.render.calls);\r\n // this.render_cost=0;\r\n // }\r\n }\r\n\r\n new_object = (obj) => {\r\n if (obj.guid) {\r\n var obj3 = new THREE.Object3D()\r\n obj3.guid = obj.guid\r\n this.objects[obj.guid] = obj\r\n }\r\n }\r\n select_object = (obj) => {\r\n if (obj.guid) {\r\n var obj3 = this.objects[obj.guid]\r\n if (obj3) {\r\n this.enable_gizmo(obj3)\r\n }\r\n }\r\n }\r\n load_phong_mtl = (saved_object, from_zip, zip_info) => {\r\n let mtl = saved_object\r\n let o2 = this;\r\n let map = o2.map_white\r\n if (saved_object.map) {\r\n map = o2.create_map_with_default(saved_object.map, from_zip, zip_info)\r\n if (map == null) {\r\n map = o2.map_white\r\n }\r\n if (!saved_object.map.o2_default) {\r\n map.offset.set(\r\n saved_object.map.offset.x,\r\n saved_object.map.offset.y\r\n )\r\n map.repeat.set(\r\n saved_object.map.repeat.x,\r\n saved_object.map.repeat.y\r\n )\r\n map.rotation = saved_object.map.rotation\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n }\r\n\r\n\r\n if (saved_object.map.gifani && saved_object.map.gifani.begin == null) {\r\n // let map2 = map.clone();\r\n // if (!map.copyed)\r\n // {\r\n // map.copyed=[];\r\n // }\r\n // map.copyed.push(map2);\r\n // map=map2;\r\n if (!map.gifani) {\r\n let gifani = {}\r\n gifani.count = 0\r\n gifani.frame = saved_object.map.gifani.frame\r\n gifani.begin = saved_object.map.gifani.begin\r\n gifani.current_frame = 0;\r\n gifani.width = saved_object.map.gifani.width\r\n gifani.height = saved_object.map.gifani.height\r\n gifani.texture = map\r\n map.gifani = gifani\r\n o2.gif_anis.push(gifani)\r\n }\r\n\r\n }\r\n\r\n // if (saved_object.map.gifani) {\r\n\r\n // let map2 = map.clone();\r\n // if (!map.copyed)\r\n // {\r\n // map.copyed=[];\r\n // }\r\n // map.copyed.push(map2);\r\n // map=map2;\r\n\r\n // let gifani = {}\r\n // gifani.count = 0\r\n // gifani.frame = saved_object.map.gifani.frame\r\n // gifani.width = saved_object.map.gifani.width\r\n // gifani.height = saved_object.map.gifani.height\r\n // gifani.begin = saved_object.map.gifani.begin\r\n // if (saved_object.map.gifani.begin) gifani.current_frame = saved_object.map.gifani.begin;\r\n // else gifani.current_frame = 0;\r\n\r\n // gifani.texture = map\r\n // map.gifani = gifani;\r\n // o2.gif_anis.push(gifani)\r\n // }\r\n }\r\n\r\n let material = new THREE.MeshPhongMaterial({ map: map })\r\n if (saved_object.lightMap) {\r\n let map2 = o2.create_map_with_default(saved_object.lightMap, from_zip, zip_info)\r\n material.lightMap = map2\r\n }\r\n material.side = mtl.side\r\n material.transparent = mtl.transparent\r\n if (mtl.opacity) material.opacity = mtl.opacity\r\n if (mtl.alphaTest != null) material.alphaTest = mtl.alphaTest\r\n if (mtl.blending) material.blending = mtl.blending\r\n if (mtl.shininess) material.shininess = mtl.shininess\r\n material.o2id = mtl.o2id\r\n\r\n if (mtl.depthTest != null) material.depthTest = mtl.depthTest\r\n if (mtl.depthWrite != null) material.depthWrite = mtl.depthWrite\r\n if (mtl.color != null) material.color.setHex(mtl.color)\r\n\r\n if (mtl.type == 'MeshPhongMaterial') {\r\n if (mtl.combine != null) material.combine = mtl.combine\r\n if (mtl.reflectivity != null) material.reflectivity = mtl.reflectivity\r\n if (mtl.lightMapIntensity != null)\r\n material.lightMapIntensity = mtl.lightMapIntensity\r\n if (mtl.emissiveIntensity != null)\r\n material.emissiveIntensity = mtl.emissiveIntensity\r\n if (mtl.aoMapIntensity != null)\r\n material.aoMapIntensity = mtl.aoMapIntensity\r\n if (mtl.normalScale != null) material.normalScale = mtl.normalScale\r\n if (saved_object.alphaMap != null)\r\n material.alphaMap = o2.create_map_with_default(\r\n saved_object.alphaMap, from_zip, zip_info\r\n )\r\n if (saved_object.emissiveMap != null)\r\n material.emissiveMap = o2.create_map_with_default(\r\n saved_object.emissiveMap, from_zip, zip_info\r\n )\r\n if (saved_object.normalMap != null)\r\n material.normalMap = o2.create_map_with_default(\r\n saved_object.normalMap, from_zip, zip_info\r\n )\r\n if (saved_object.specularMap != null)\r\n material.specularMap = o2.create_map_with_default(\r\n saved_object.specularMap, from_zip, zip_info\r\n )\r\n if (saved_object.aoMap != null)\r\n material.aoMap = o2.create_map_with_default(saved_object.aoMap)\r\n material.specular.setHex(mtl.specular)\r\n material.emissive.setHex(mtl.emissive)\r\n if (mtl.shininess) material.shininess = mtl.shininess\r\n material.needsUpdate = true\r\n }\r\n\r\n o2.materials.push({ id: material.o2id, mtl: material })\r\n material.envMap = o2.create_envMap(mtl.envMap, from_zip, zip_info)\r\n return material;\r\n }\r\n load_mesh_data = (geometry, saved_object, from_zip, zip_info) => {\r\n let o2 = this\r\n geometry.meshid = saved_object.meshid\r\n let material = this.load_phong_mtl(saved_object.material, from_zip, zip_info);\r\n\r\n var mesh = new THREE.Mesh(geometry, material)\r\n\r\n mesh.castShadow = saved_object.castShadow\r\n mesh.receiveShadow = saved_object.receiveShadow\r\n\r\n mesh.matrixWorldNeedsUpdate = true\r\n mesh.name = saved_object.name\r\n mesh.uuid = saved_object.uuid\r\n var mat = saved_object.wts\r\n mesh.applyMatrix4(mat)\r\n mesh.visible = saved_object.visible\r\n if (saved_object.common_mesh) mesh.common_mesh = saved_object.common_mesh;\r\n return mesh;\r\n // let map = o2.map_white\r\n // if (saved_object.material.map) {\r\n // map = o2.create_map_with_default(saved_object.material.map)\r\n // if (map == null) {\r\n // map = o2.map_white\r\n // }\r\n // if (!saved_object.material.map.o2_default) {\r\n // map.offset.set(\r\n // saved_object.material.map.offset.x,\r\n // saved_object.material.map.offset.y\r\n // )\r\n // map.repeat.set(\r\n // saved_object.material.map.repeat.x,\r\n // saved_object.material.map.repeat.y\r\n // )\r\n // map.rotation = saved_object.material.map.rotation\r\n // map.wrapS = THREE.RepeatWrapping\r\n // map.wrapT = THREE.RepeatWrapping\r\n // }\r\n // if (saved_object.material.map.gifani) {\r\n // let gifani = {}\r\n // gifani.count = 0\r\n // gifani.frame = saved_object.material.map.gifani.frame\r\n // gifani.current_frame = 0\r\n // gifani.width = saved_object.material.map.gifani.width\r\n // gifani.height = saved_object.material.map.gifani.height\r\n // gifani.texture = map\r\n // map.gifani = saved_object.material.map.gifani\r\n // let found = false\r\n // for (let i = 0; i < o2.gif_anis.length; i++) {\r\n // let ga = o2.gif_anis[i]\r\n // if (ga.texture === map) {\r\n // found = true\r\n // break\r\n // }\r\n // }\r\n // if (!found) o2.gif_anis.push(gifani)\r\n // }\r\n // }\r\n // let material = new THREE.MeshPhongMaterial({ map: map })\r\n // if (saved_object.material.lightMap) {\r\n // let map2 = o2.create_map_with_default(saved_object.material.lightMap)\r\n // material.lightMap = map2\r\n // }\r\n // let mtl = saved_object.material\r\n // material.side = mtl.side\r\n // material.transparent = mtl.transparent\r\n // if (mtl.opacity) material.opacity = mtl.opacity\r\n // if (mtl.alphaTest) material.alphaTest = mtl.alphaTest\r\n // if (mtl.blending) material.blending = mtl.blending\r\n // if (mtl.shininess) material.shininess = mtl.shininess\r\n // material.o2id = mtl.o2id\r\n\r\n // material.depthTest = mtl.depthTest\r\n // material.depthWrite = mtl.depthWrite\r\n // material.alphaTest = mtl.alphaTest\r\n // // mtl.reflectivity=0;\r\n // if (mtl.type == 'MeshPhongMaterial') {\r\n // material.color.setHex(mtl.color)\r\n // if (mtl.combine != null) material.combine = mtl.combine\r\n // if (mtl.reflectivity != null) material.reflectivity = mtl.reflectivity\r\n // if (mtl.lightMapIntensity != null)\r\n // material.lightMapIntensity = mtl.lightMapIntensity\r\n // if (mtl.emissiveIntensity != null)\r\n // material.emissiveIntensity = mtl.emissiveIntensity\r\n // if (mtl.aoMapIntensity != null)\r\n // material.aoMapIntensity = mtl.aoMapIntensity\r\n // if (mtl.normalScale != null) material.normalScale = mtl.normalScale\r\n // if (saved_object.material.alphaMap != null)\r\n // material.alphaMap = o2.create_map_with_default(\r\n // saved_object.material.alphaMap\r\n // )\r\n // if (saved_object.material.emissiveMap != null)\r\n // material.emissiveMap = o2.create_map_with_default(\r\n // saved_object.material.emissiveMap\r\n // )\r\n // if (saved_object.material.normalMap != null)\r\n // material.normalMap = o2.create_map_with_default(\r\n // saved_object.material.normalMap\r\n // )\r\n // if (saved_object.material.specularMap != null)\r\n // material.specularMap = o2.create_map_with_default(\r\n // saved_object.material.specularMap\r\n // )\r\n // if (saved_object.material.aoMap != null)\r\n // material.aoMap = o2.create_map_with_default(saved_object.material.aoMap)\r\n // material.specular.setHex(mtl.specular)\r\n // material.emissive.setHex(mtl.emissive)\r\n // if (mtl.shininess) material.shininess = mtl.shininess\r\n // material.needsUpdate = true\r\n // }\r\n\r\n // o2.materials.push({ id: material.o2id, mtl: material })\r\n // material.envMap = o2.create_envMap(mtl.envMap, from_zip)\r\n // var mesh = new THREE.Mesh(geometry, material)\r\n\r\n // mesh.castShadow = saved_object.castShadow\r\n // mesh.receiveShadow = saved_object.receiveShadow\r\n\r\n // mesh.matrixWorldNeedsUpdate = true\r\n // mesh.name = saved_object.name\r\n // mesh.uuid = saved_object.uuid\r\n // var mat = saved_object.wts\r\n // mesh.applyMatrix4(mat)\r\n // mesh.visible = saved_object.visible\r\n // if (saved_object.common_mesh) mesh.common_mesh = saved_object.common_mesh;\r\n // return mesh\r\n }\r\n load_saved_object = (saved_object, from_zip, zip_info) => {\r\n let o2 = this\r\n return new Promise((resolve, reject) => {\r\n if (saved_object.type == 'Mesh') {\r\n let geometry;\r\n if (zip_info) {\r\n if (saved_object.common_mesh) {\r\n\r\n if (saved_object.common_mesh == \"MeshBox\") {\r\n geometry = new THREE.BoxGeometry(1000, 1000, 1000, 1, 1, 1)\r\n }\r\n if (saved_object.common_mesh == \"MeshPlane\") {\r\n geometry = new THREE.PlaneGeometry(1000, 1000, 1, 1);\r\n }\r\n if (saved_object.common_mesh == \"MeshSphere\") {\r\n geometry = new THREE.SphereGeometry(1000, 24, 24);\r\n }\r\n } else {\r\n let xxx = zip_info.all_files[saved_object.meshid];\r\n geometry = o2.load_mesh2(xxx);\r\n }\r\n\r\n if (geometry) {\r\n o2.meshes[saved_object.meshid] = geometry\r\n let mesh = o2.load_mesh_data(geometry, saved_object, from_zip, zip_info)\r\n let xy = saved_object.xy\r\n if (xy && geometry.attributes.uv2) {\r\n mesh.xy = mesh\r\n let fStep = o2.scene.bake_step\r\n let buffer = geometry.attributes.uv2.array\r\n for (let i = 0; i < buffer.length / 2; i++) {\r\n buffer[i * 2] = fStep * xy.ix + fStep * buffer[i * 2]\r\n buffer[i * 2 + 1] =\r\n 1 - (fStep * xy.iy + fStep * (1 - buffer[i * 2 + 1]))\r\n }\r\n mesh.xy = xy\r\n geometry.attributes.uv2.needsUpdate = true\r\n }\r\n\r\n resolve(mesh)\r\n } else {\r\n reject('create geometry fail!')\r\n }\r\n } else if (from_zip) {\r\n if (saved_object.common_mesh) {\r\n\r\n if (saved_object.common_mesh == \"MeshBox\") {\r\n geometry = new THREE.BoxGeometry(1000, 1000, 1000, 1, 1, 1)\r\n }\r\n if (saved_object.common_mesh == \"MeshPlane\") {\r\n geometry = new THREE.PlaneGeometry(1000, 1000, 1, 1);\r\n }\r\n if (saved_object.common_mesh == \"MeshSphere\") {\r\n geometry = new THREE.SphereGeometry(1000, 24, 24);\r\n }\r\n } else {\r\n let xxx = this.all_files[saved_object.meshid];\r\n geometry = o2.load_mesh2(xxx);\r\n }\r\n if (geometry) {\r\n o2.meshes[saved_object.meshid] = geometry\r\n let mesh = o2.load_mesh_data(geometry, saved_object, from_zip, zip_info)\r\n\r\n let xy = saved_object.xy\r\n if (xy && geometry.attributes.uv2) {\r\n mesh.xy = mesh\r\n let fStep = o2.scene.bake_step\r\n let buffer = geometry.attributes.uv2.array\r\n for (let i = 0; i < buffer.length / 2; i++) {\r\n buffer[i * 2] = fStep * xy.ix + fStep * buffer[i * 2]\r\n buffer[i * 2 + 1] =\r\n 1 - (fStep * xy.iy + fStep * (1 - buffer[i * 2 + 1]))\r\n }\r\n mesh.xy = xy\r\n geometry.attributes.uv2.needsUpdate = true\r\n }\r\n\r\n resolve(mesh)\r\n } else {\r\n reject('create geometry fail!')\r\n }\r\n } else {\r\n\r\n if (saved_object.common_mesh) {\r\n let geometry;\r\n if (saved_object.common_mesh == \"MeshBox\") {\r\n geometry = new THREE.BoxGeometry(1000, 1000, 1000, 1, 1, 1)\r\n }\r\n if (saved_object.common_mesh == \"MeshPlane\") {\r\n geometry = new THREE.PlaneGeometry(1000, 1000, 1, 1);\r\n }\r\n if (saved_object.common_mesh == \"MeshSphere\") {\r\n geometry = new THREE.SphereGeometry(1000, 24, 24);\r\n }\r\n\r\n if (geometry) {\r\n let mesh = o2.load_mesh_data(geometry, saved_object, from_zip, zip_info)\r\n let xy = saved_object.xy\r\n if (xy && geometry.attributes.uv2) {\r\n mesh.xy = xy\r\n let fStep = o2.scene.bake_step\r\n let buffer = geometry.attributes.uv2.array\r\n for (let i = 0; i < buffer.length / 2; i++) {\r\n buffer[i * 2] = fStep * xy.ix + fStep * buffer[i * 2]\r\n buffer[i * 2 + 1] =\r\n 1 - (fStep * xy.iy + fStep * (1 - buffer[i * 2 + 1]))\r\n }\r\n mesh.xy = xy\r\n geometry.attributes.uv2.needsUpdate = true\r\n }\r\n resolve(mesh);\r\n } else {\r\n reject('create geo fail!');\r\n }\r\n } else {\r\n let mdl_url = o2.project_url + saved_object.meshid\r\n let xhr = new XMLHttpRequest()\r\n xhr.open('get', mdl_url, true)\r\n xhr.responseType = 'arraybuffer'\r\n xhr.send()\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n var xxx = xhr.response\r\n let geometry = o2.load_mesh2(xxx)\r\n if (geometry) {\r\n let mesh = o2.load_mesh_data(geometry, saved_object, from_zip, zip_info)\r\n let xy = saved_object.xy\r\n if (xy && geometry.attributes.uv2) {\r\n mesh.xy = xy\r\n let fStep = o2.scene.bake_step\r\n let buffer = geometry.attributes.uv2.array\r\n for (let i = 0; i < buffer.length / 2; i++) {\r\n buffer[i * 2] = fStep * xy.ix + fStep * buffer[i * 2]\r\n buffer[i * 2 + 1] =\r\n 1 - (fStep * xy.iy + fStep * (1 - buffer[i * 2 + 1]))\r\n }\r\n mesh.xy = xy\r\n geometry.attributes.uv2.needsUpdate = true\r\n }\r\n resolve(mesh)\r\n } else {\r\n reject('create geo fail!')\r\n }\r\n } else {\r\n reject(xhr.status)\r\n }\r\n }\r\n if (xhr.status === 404) {\r\n reject(xhr.status)\r\n }\r\n }\r\n }\r\n }\r\n } else if (saved_object.type == 'LineSegments') {\r\n if (zip_info) {\r\n let xxx = zip_info.all_files[saved_object.file]\r\n if (xxx) {\r\n let line = o2.load_mesh_line(xxx)\r\n if (line) {\r\n line.name = saved_object.name\r\n line.file = saved_object.file\r\n let mat = saved_object.wts\r\n line.applyMatrix4(mat)\r\n line.material.color.setHex(saved_object.material.color)\r\n resolve(line)\r\n } else {\r\n reject('create geo fail!')\r\n }\r\n } else {\r\n reject('create geometry fail!')\r\n }\r\n } else\r\n if (from_zip) {\r\n let xxx = this.all_files[saved_object.file]\r\n if (xxx) {\r\n let line = o2.load_mesh_line(xxx)\r\n if (line) {\r\n line.name = saved_object.name\r\n line.file = saved_object.file\r\n let mat = saved_object.wts\r\n line.applyMatrix4(mat)\r\n line.material.color.setHex(saved_object.material.color)\r\n resolve(line)\r\n } else {\r\n reject('create geo fail!')\r\n }\r\n } else {\r\n reject('create geometry fail!')\r\n }\r\n } else {\r\n //console.log(\"Lineseg load\",saved_object);\r\n let mdl_url = o2.project_url + saved_object.file\r\n let xhr = new XMLHttpRequest()\r\n xhr.open('get', mdl_url, true)\r\n xhr.responseType = 'arraybuffer'\r\n xhr.send()\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n var xxx = xhr.response\r\n let line = o2.load_mesh_line(xxx)\r\n if (line) {\r\n line.name = saved_object.name\r\n line.file = saved_object.file\r\n let mat = saved_object.wts\r\n line.applyMatrix4(mat)\r\n line.material.color.setHex(saved_object.material.color)\r\n resolve(line)\r\n } else {\r\n reject('create geo fail!')\r\n }\r\n } else {\r\n reject(xhr.status)\r\n }\r\n }\r\n if (xhr.status === 404) {\r\n console.log('not found:' + saved_object)\r\n reject(xhr.status)\r\n }\r\n }\r\n }\r\n } else if (saved_object.type == 'Object3D') {\r\n let obj = new THREE.Object3D()\r\n obj.matrixWorldNeedsUpdate = true\r\n obj.name = saved_object.name\r\n obj.uuid = saved_object.uuid\r\n let mat = saved_object.wts\r\n obj.applyMatrix4(mat)\r\n obj.visible = saved_object.visible\r\n if (saved_object.children && saved_object.children.length > 0) {\r\n const allRequest = []\r\n if (1) {\r\n var mdls = saved_object.children\r\n for (let index = 0; index < mdls.length; index++) {\r\n const model_obj = mdls[index]\r\n var promise = o2.load_saved_object(model_obj, from_zip, zip_info)\r\n promise.then((obj3) => {\r\n\r\n if (model_obj.lib_uuid) obj3.lib_uuid = model_obj.lib_uuid;\r\n if (obj3) {\r\n obj.add(obj3)\r\n }\r\n })\r\n allRequest.push(promise)\r\n }\r\n Promise.all(allRequest).then(\r\n () => {\r\n resolve(obj)\r\n },\r\n () => {\r\n reject()\r\n }\r\n )\r\n }\r\n } else {\r\n resolve(obj)\r\n }\r\n } else if (saved_object.type == 'Sprite') {\r\n let mtl = saved_object.material\r\n let map = null\r\n if (mtl.map) {\r\n map = o2.create_map_with_default(mtl.map, from_zip, zip_info)\r\n if (map) {\r\n map.offset.set(\r\n saved_object.material.map.offset.x,\r\n saved_object.material.map.offset.y\r\n )\r\n map.repeat.set(\r\n saved_object.material.map.repeat.x,\r\n saved_object.material.map.repeat.y\r\n )\r\n map.rotation = saved_object.material.map.rotation\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n if (saved_object.material.map.gifani) {\r\n // let map2 = map.clone();\r\n // if (!map.copyed)\r\n // {\r\n // map.copyed=[];\r\n // }\r\n // map.copyed.push(map2);\r\n // map=map2;\r\n if (!map.gifani) {\r\n let gifani = {}\r\n gifani.count = 0\r\n gifani.frame = saved_object.material.map.gifani.frame\r\n gifani.begin = saved_object.material.map.gifani.begin\r\n gifani.current_frame = 0;\r\n gifani.width = saved_object.material.map.gifani.width\r\n gifani.height = saved_object.material.map.gifani.height\r\n gifani.texture = map\r\n map.gifani = gifani\r\n o2.gif_anis.push(gifani)\r\n }\r\n\r\n }\r\n }\r\n }\r\n if (map == null) {\r\n map = o2.map_white\r\n }\r\n\r\n let sprite = new THREE.Sprite(\r\n new THREE.SpriteMaterial({ map: map, color: '#69f' })\r\n )\r\n sprite.material.color.setHex(mtl.color)\r\n if (mtl.opacity) sprite.material.opacity = mtl.opacity\r\n sprite.material.uuid = mtl.uuid\r\n sprite.material.uuid = mtl.uuid\r\n sprite.material.uuid = mtl.uuid\r\n sprite.material.side = mtl.side\r\n sprite.material.o2id = mtl.o2id\r\n if (mtl.alphaTest) sprite.material.alphaTest = mtl.alphaTest\r\n sprite.material.transparent = mtl.transparent\r\n sprite.material.depthWrite = mtl.depthWrite\r\n sprite.material.blending = mtl.blending\r\n sprite.material.depthTest = mtl.depthTest\r\n\r\n sprite.position.set(\r\n saved_object.position.x,\r\n saved_object.position.y,\r\n saved_object.position.z\r\n )\r\n sprite.scale.set(\r\n saved_object.scale.x,\r\n saved_object.scale.y,\r\n saved_object.scale.z\r\n )\r\n sprite.uuid = saved_object.uuid\r\n sprite.name = saved_object.name\r\n sprite.visible = saved_object.visible\r\n resolve(sprite)\r\n } else if (saved_object.type == 'AmbientLight') {\r\n let obj1 = new THREE.AmbientLight(saved_object.color)\r\n obj1.intensity = saved_object.intensity\r\n obj1.matrixWorldNeedsUpdate = true\r\n obj1.name = saved_object.name\r\n obj1.uuid = saved_object.uuid\r\n let mat = saved_object.wts\r\n obj1.applyMatrix4(mat)\r\n obj1.visible = saved_object.visible\r\n resolve(obj1)\r\n } else if (saved_object.type == 'Group' && saved_object.bSkeleton) {\r\n let o2 = this\r\n //console.log(\"load skeleton\", saved_object);\r\n let url = this.project_url + saved_object.url\r\n if (zip_info) {\r\n let f1 = zip_info.all_files[saved_object.url]\r\n let blob = new Blob([f1])\r\n url = URL.createObjectURL(blob)\r\n } else\r\n if (from_zip) {\r\n let f1 = o2.all_files[saved_object.url]\r\n let blob = new Blob([f1])\r\n url = URL.createObjectURL(blob)\r\n }\r\n this.load_skeleton_animate(url, saved_object.name, (skeleton) => {\r\n skeleton.obj.clips = saved_object.clips\r\n skeleton.obj.bSkeleton = true\r\n skeleton.obj.url = saved_object.url\r\n skeleton.obj.clip_name = saved_object.clip_name\r\n let obj = skeleton.obj\r\n obj.matrixWorldNeedsUpdate = true\r\n obj.name = saved_object.name\r\n obj.uuid = saved_object.uuid\r\n let mat = saved_object.wts\r\n obj.applyMatrix4(mat)\r\n obj.visible = saved_object.visible\r\n obj.traverse(function (child) {\r\n if (child.material && child.material.type == 'MeshPhongMaterial') {\r\n child.material.color.setRGB(1, 1, 1)\r\n child.material.lightMap = o2.map_white\r\n }\r\n })\r\n //加载材质\r\n if (saved_object.mtls) {\r\n o2.apply_skeleton_mtl(obj, '0', saved_object.mtls, from_zip, zip_info)\r\n }\r\n //加载动作\r\n let count = 0\r\n if (skeleton.obj.clips.length > 0) {\r\n for (let i = 0; i < skeleton.obj.clips.length; i++) {\r\n let clip = skeleton.obj.clips[i]\r\n let url = o2.project_url + clip.url\r\n if (zip_info) {\r\n let f2 = zip_info.all_files[clip.url]\r\n let blob2 = new Blob([f2])\r\n url = URL.createObjectURL(blob2)\r\n }\r\n o2.load_skeleton_clip(url, skeleton.obj, clip.name, () => {\r\n count++\r\n if (count == skeleton.obj.clips.length) {\r\n o2.play_skeleton_clip(\r\n skeleton.obj,\r\n skeleton.obj.clip_name,\r\n true\r\n )\r\n resolve(obj)\r\n }\r\n })\r\n }\r\n } else {\r\n resolve(obj)\r\n }\r\n })\r\n } else if (saved_object.type == 'DirectionalLight') {\r\n let obj1 = new THREE.DirectionalLight(saved_object.color, 0.5)\r\n obj1.intensity = saved_object.intensity\r\n obj1.matrixWorldNeedsUpdate = true\r\n obj1.name = saved_object.name\r\n obj1.uuid = saved_object.uuid\r\n let mat = saved_object.wts\r\n obj1.applyMatrix4(mat)\r\n obj1.visible = saved_object.visible\r\n if (true) {\r\n obj1.castShadow = true\r\n obj1.shadow.camera.near = 100\r\n obj1.shadow.camera.far = 1000000\r\n obj1.shadow.camera.right = 200000\r\n obj1.shadow.camera.left = -200000\r\n obj1.shadow.camera.top = 200000\r\n obj1.shadow.camera.bottom = -200000\r\n obj1.shadow.mapSize.width = 1024\r\n obj1.shadow.mapSize.height = 1024\r\n }\r\n resolve(obj1)\r\n } else if (saved_object.type == 'PointLight') {\r\n //console.log(\"PointLight\");\r\n let obj1 = new THREE.PointLight(saved_object.color, 1, 1000)\r\n obj1.intensity = saved_object.intensity\r\n obj1.matrixWorldNeedsUpdate = true\r\n obj1.name = saved_object.name\r\n obj1.uuid = saved_object.uuid\r\n let mat = saved_object.wts\r\n obj1.applyMatrix4(mat)\r\n obj1.decay = saved_object.decay\r\n obj1.distance = saved_object.distance\r\n obj1.visible = saved_object.visible\r\n obj1.castShadow = true\r\n if (obj1.castShadow) {\r\n obj1.shadow.camera.near = 100\r\n obj1.shadow.camera.far = 60000\r\n obj1.shadow.bias = 0.0001\r\n obj1.shadow.mapSize.width = 1024\r\n obj1.shadow.mapSize.height = 1024\r\n }\r\n resolve(obj1)\r\n } else if (saved_object.type == 'SpotLight') {\r\n let obj1 = new THREE.SpotLight(saved_object.color)\r\n obj1.intensity = saved_object.intensity\r\n obj1.matrixWorldNeedsUpdate = true\r\n obj1.name = saved_object.name\r\n obj1.uuid = saved_object.uuid\r\n let mat = saved_object.wts\r\n obj1.applyMatrix4(mat)\r\n obj1.decay = saved_object.decay\r\n obj1.penumbra = saved_object.penumbra\r\n obj1.distance = saved_object.distance\r\n obj1.angle = saved_object.angle\r\n obj1.visible = saved_object.visible\r\n obj1.castShadow = saved_object.castShadow\r\n if (obj1.castShadow) {\r\n obj1.shadow.camera.near = 100\r\n obj1.shadow.camera.far = 60000\r\n obj1.shadow.bias = 0.0001\r\n obj1.shadow.mapSize.width = 1024\r\n obj1.shadow.mapSize.height = 1024\r\n }\r\n obj1.target_uuid = saved_object.target_uuid\r\n resolve(obj1)\r\n } else if (saved_object.type == 'Reflector') {\r\n if (saved_object.material == null) {\r\n resolve(null)\r\n } else {\r\n let uv = new UVTransformNode()\r\n let masktex = this.create_map_with_default(\r\n saved_object.material.alphaMap, from_zip, zip_info\r\n )\r\n const mask = new SwitchNode(new TextureNode(masktex), 'w')\r\n const planeGeo = new THREE.PlaneGeometry(10000, 10000)\r\n let geometry\r\n geometry = new THREE.PlaneGeometry(10000, 10000)\r\n let groundMirror = new ReflectorRTT(geometry, {\r\n clipBias: 0.003,\r\n textureWidth: this.WIDTH,\r\n textureHeight: this.HEIGHT\r\n })\r\n const mirror = new ReflectorNode(groundMirror)\r\n\r\n let map_normal = this.create_map_with_default(\r\n saved_object.material.normalMap, from_zip, zip_info\r\n )\r\n const normalMap = new TextureNode(map_normal)\r\n normalMap.uv = uv\r\n const normalXY = new SwitchNode(normalMap, 'xy')\r\n const normalXYFlip = new MathNode(normalXY, MathNode.INVERT)\r\n const offsetNormal = new OperatorNode(\r\n normalXYFlip,\r\n new FloatNode(0.5),\r\n OperatorNode.SUB\r\n )\r\n mirror.offset = new OperatorNode(\r\n offsetNormal, // normal\r\n new FloatNode(saved_object.material.XnormalScale), // scale\r\n OperatorNode.MUL\r\n )\r\n let diffusemap = this.create_map_with_default(\r\n saved_object.material.map, from_zip, zip_info\r\n )\r\n let light_map = this.create_map_with_default(\r\n saved_object.material.lightMap, from_zip, zip_info\r\n )\r\n const map = new TextureNode(diffusemap)\r\n let color_node = new ColorNode(saved_object.material.color)\r\n const diffuseNode = new OperatorNode(\r\n map,\r\n color_node,\r\n OperatorNode.MUL\r\n )\r\n\r\n const lightmap = new TextureNode(light_map)\r\n //console.log(saved_object);\r\n map.uv = uv\r\n map.uv.setUvTransform(\r\n saved_object.material.map.offset.x,\r\n saved_object.material.map.offset.y,\r\n saved_object.material.map.repeat.x,\r\n saved_object.material.map.repeat.y,\r\n saved_object.material.map.rotation\r\n )\r\n map.uv._u = saved_object.material.map.offset.x\r\n map.uv._v = saved_object.material.map.offset.y\r\n map.uv._sx = saved_object.material.map.repeat.x\r\n map.uv._sy = saved_object.material.map.repeat.y\r\n map.uv._rotation = saved_object.material.map.rotation\r\n\r\n let groundMirrorMaterial = new PhongNodeMaterial()\r\n groundMirrorMaterial.environment = mirror\r\n groundMirrorMaterial.environmentAlpha = mask\r\n groundMirrorMaterial.color = diffuseNode\r\n groundMirrorMaterial.light = lightmap\r\n\r\n let mtl = saved_object.material\r\n let material = groundMirrorMaterial\r\n material.uuid = mtl.uuid\r\n material.side = mtl.side\r\n material.transparent = mtl.transparent\r\n if (mtl.opacity) material.opacity = mtl.opacity\r\n if (mtl.alphaTest) material.alphaTest = mtl.alphaTest\r\n if (mtl.blending) material.blending = mtl.blending\r\n if (mtl.shininess) material.shininess = mtl.shininess\r\n material.o2id = mtl.o2id\r\n\r\n material.depthTest = mtl.depthTest\r\n material.depthWrite = mtl.depthWrite\r\n material.alphaTest = mtl.alphaTest\r\n\r\n let mirrorMesh = new THREE.Mesh(planeGeo, groundMirrorMaterial)\r\n groundMirror.add(mirrorMesh)\r\n let obj = groundMirror\r\n obj.matrixWorldNeedsUpdate = true\r\n obj.name = saved_object.name\r\n obj.uuid = saved_object.uuid\r\n let mat = saved_object.wts\r\n obj.applyMatrix4(mat)\r\n obj.visible = saved_object.visible\r\n const ua = navigator.userAgent.toLowerCase()\r\n let isIos = !!ua.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/i)\r\n //console.log(\"是不是IOS\" + isIos);\r\n if (isIos) {\r\n var ver = ua.match(/cpu iphone os (.*?) like mac os/)\r\n //console.log(\"ios版本:\" + ver[1]);\r\n if (!ver) {\r\n console.log('获取不到IOS版本')\r\n } else {\r\n var arrStr = ver[1].split('_')\r\n if (parseInt(arrStr[0]) >= 15) {\r\n console.log('ios版本:' + ver[1])\r\n let panelMat = new THREE.MeshPhongMaterial()\r\n panelMat.lightMap = light_map\r\n panelMat.map = diffusemap\r\n panelMat.alphaMap = masktex\r\n panelMat.normalMap = map_normal\r\n let panelMesh = new THREE.Mesh(planeGeo, panelMat)\r\n panelMesh.applyMatrix4(mat)\r\n resolve(panelMesh)\r\n return\r\n }\r\n }\r\n }\r\n resolve(obj)\r\n }\r\n } else {\r\n resolve(null)\r\n }\r\n })\r\n }\r\n load_mesh_line_url = (mdl_url, model_obj) => {\r\n return new Promise((resolve, reject) => {\r\n let xhr = new XMLHttpRequest()\r\n xhr.open('get', mdl_url, true)\r\n xhr.responseType = 'arraybuffer'\r\n let o2 = this\r\n xhr.send()\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n var xxx = xhr.response\r\n let p = o2.load_mesh_line(xxx)\r\n if (p) {\r\n var mat = new THREE.Matrix4()\r\n mat.elements = model_obj.wts\r\n p.applyMatrix4(mat)\r\n p.name = model_obj.name\r\n p.file = model_obj.mesh\r\n resolve(p)\r\n } else {\r\n reject()\r\n }\r\n } else {\r\n reject(xhr.status)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n load_mesh_url = (mdl_url, model_obj) => {\r\n return new Promise((resolve, reject) => {\r\n let xhr = new XMLHttpRequest()\r\n xhr.open('get', mdl_url, true)\r\n xhr.responseType = 'arraybuffer'\r\n let o2 = this\r\n xhr.send()\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n var xxx = xhr.response\r\n let p = o2.load_mesh(xxx, model_obj)\r\n p.then((val) => {\r\n resolve(xhr.response)\r\n })\r\n } else {\r\n reject(xhr.status)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n _process_after_load = (object) => {\r\n if (object.type == 'SpotLight') {\r\n if (object.target_uuid) {\r\n let obj = this.search_obj_by_guid2(object.target_uuid)\r\n if (obj) {\r\n object.target = obj\r\n }\r\n }\r\n }\r\n //////////////\r\n for (let i = 0; i < object.children.length; i++) {\r\n this._process_after_load(object.children[i])\r\n }\r\n }\r\n\r\n process_after_load = () => {\r\n\r\n this.collect_syn_materials();\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n this._process_after_load(this.scene.children[i])\r\n }\r\n ///exhibition绑定\r\n if (this.exhibition && this.exhibition.objects_ids) {\r\n this.exhibition.objects = []\r\n for (let i = 0; i < this.exhibition.objects_ids.length; i++) {\r\n let obj = this.search_obj_by_guid2(this.exhibition.objects_ids[i].uuid)\r\n if (obj) this.exhibition.objects.push(obj)\r\n }\r\n }\r\n }\r\n\r\n load_model = (mdl_url) => {\r\n var xhr = new XMLHttpRequest()\r\n xhr.open('get', mdl_url, true)\r\n xhr.responseType = 'json'\r\n var o2 = this\r\n xhr.onload = function () {\r\n if (this.status == 200) {\r\n var model_obj = this.response\r\n o2.load_mesh_url(model_obj['mesh'], model_obj)\r\n }\r\n }\r\n xhr.send()\r\n }\r\n\r\n renew_all_uuid = (obj) => {\r\n let obj2 = new THREE.Object3D()\r\n obj.uuid = obj2.uuid\r\n for (let i = 0; i < obj.children.length; i++) {\r\n this.renew_all_uuid(obj.children[i])\r\n }\r\n }\r\n _dispose_object(object) {\r\n if (object) {\r\n if (object.material) {\r\n if (object.material.map) object.material.map.dispose();\r\n if (object.material.lightMap) object.material.lightMap.dispose();\r\n if (object.material.alphaMap) object.material.alphaMap.dispose();\r\n if (object.material.aoMap) object.material.aoMap.dispose();\r\n if (object.material.envMap) object.material.envMap.dispose();\r\n object.material.dispose();\r\n }\r\n if (object.geometry) object.geometry.dispose();\r\n for (let i = 0; i < object.children.length; i++) {\r\n this._dispose_object(object.children[i]);\r\n }\r\n }\r\n }\r\n dispose_all = () => {\r\n if (this.scene) {\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n this._dispose_object(this.scene.children[i]);\r\n }\r\n }\r\n }\r\n reset_scene() {\r\n // scene\r\n //var JSZip = require(\"jszip\");\r\n this.dispose_all();\r\n this.cube_maps = [];\r\n this.gif_anis = [] //序列帧动画\r\n this.same_texture_count = 0\r\n this.same_mesh_count = 0\r\n this.div_bind = []\r\n this.cameras = []\r\n var scene = this.scene\r\n this.scene.children = []\r\n this.objects = []\r\n this.materials = []\r\n this.material_buffer = null //材质刷\r\n this.maps = {}\r\n this.envmaps = {}\r\n this.selection = null\r\n this.import_root = null\r\n this.skeletons = [] //声明骨骼动画\r\n this.renderer.toneMapping = 0;\r\n this.renderer.toneMappingExposure = 1;\r\n //light\r\n // var ambientLight = new THREE.PointLight( 0xffffff, 1,1000 );\r\n // ambientLight.name=\"AmbientLight\";\r\n // scene.add( ambientLight );\r\n\r\n\r\n const grid = new THREE.GridHelper(10000, 40, 0x000000, 0x000000);\r\n grid.name = \"grid\";\r\n grid.material.opacity = 0.3;\r\n grid.material.transparent = true;\r\n this.grid = grid;\r\n this.scene.add(grid);\r\n // this.grid = grid;\r\n //env\r\n // var urls = [\r\n // './static/textures/cube/Park2/posx.jpg', './static/textures/cube/Park2/negx.jpg',\r\n // './static/textures/cube/Park2/posy.jpg', './static/textures/cube/Park2/negy.jpg',\r\n // './static/textures/cube/Park2/posz.jpg', './static/textures/cube/Park2/negz.jpg'\r\n // ];\r\n // var reflectionCube = new THREE.CubeTextureLoader().load( urls );\r\n // reflectionCube.format = THREE.RGBFormat;\r\n scene.background = new THREE.Color(0.98, 0.98, 0.98)\r\n this.cubemap = null\r\n\r\n // //lights\r\n // const width = 500;\r\n // const height = 500;\r\n // const intensity = 10;\r\n // const blueRectLight = new THREE.RectAreaLight( 0xf3aaaa, intensity, width, height );\r\n // blueRectLight.position.set( 0, 500, 0 );\r\n // blueRectLight.lookAt( 0, 5, 0 );\r\n // this.scene.add( blueRectLight );\r\n\r\n // const blueRectLightHelper = new RectAreaLightHelper( blueRectLight );\r\n // blueRectLight.add( blueRectLightHelper );\r\n }\r\n\r\n import_object_url = (url) =>\r\n new Promise((resolve, reject) => {\r\n\r\n let zip_info = {};\r\n zip_info.zip = new JSZip;\r\n zip_info.from_zip = true\r\n zip_info.all_files = {}\r\n let o2 = this\r\n let obj\r\n let item_file\r\n var on_unzipped = function () {\r\n if (item_file != undefined) {\r\n o2.from_zip = true\r\n var rt = item_file\r\n var xxx = JSON.parse(rt)\r\n // console.log(xxx);\r\n /////////////////\r\n const allRequest = []\r\n let model_obj = xxx\r\n model_obj.from_zip = true\r\n var promise = o2.load_saved_object(model_obj, true, zip_info)\r\n let timelines = []\r\n if (model_obj.timelines) {\r\n timelines = o2.animation.from_json_export(model_obj.timelines)\r\n }\r\n allRequest.push(promise)\r\n promise.then((obj3) => {\r\n if (obj3) {\r\n\r\n if (model_obj.lib_uuid) obj3.lib_uuid = model_obj.lib_uuid;\r\n\r\n obj3.timelines = timelines\r\n //绑定元素\r\n o2.animation.bind_objects_export(timelines, obj3)\r\n o2.renew_all_uuid(obj3)\r\n obj = obj3\r\n }\r\n })\r\n Promise.all(allRequest).then(\r\n () => {\r\n o2.from_zip = false\r\n resolve(obj)\r\n },\r\n () => {\r\n o2.from_zip = false\r\n reject()\r\n }\r\n )\r\n }\r\n }\r\n\r\n var xhr = new XMLHttpRequest()\r\n xhr.open('get', url, true)\r\n xhr.responseType = 'blob'\r\n xhr.onload = function () {\r\n if (this.status == 200) {\r\n var xxx = this.response\r\n zip_info.zip.loadAsync(xxx).then(function (zip) {\r\n var counts = 0\r\n zip.forEach(function (v) {\r\n counts++\r\n var type_read = 'arraybuffer'\r\n if (v.substr(v.length - 4, v.length) != 'json') {\r\n type_read = 'arraybuffer'\r\n }\r\n if (v == 'item.json') {\r\n type_read = 'string'\r\n }\r\n if (zip_info.zip.file(v)) {\r\n zip_info.zip\r\n .file(v)\r\n .async(type_read)\r\n .then(function (content) {\r\n if (v == 'item.json') {\r\n item_file = content\r\n }\r\n zip_info.all_files[v] = content\r\n counts--\r\n if (counts == 0) {\r\n on_unzipped()\r\n }\r\n })\r\n } else {\r\n counts--\r\n }\r\n })\r\n })\r\n }\r\n }\r\n xhr.send()\r\n })\r\n\r\n load_common_scene = (xxx, from_zip, zip_info) => {\r\n //全屏特效\r\n let o2 = this\r\n if (xxx.scene.postEffect) {\r\n o2.postEffect = xxx.scene.postEffect\r\n o2.postEffect.from_zip = from_zip;\r\n if (zip_info && o2.postEffect.lutFile && o2.postEffect.lutFile != \"\") {\r\n o2.postEffect.lutBlobFile = zip_info.all_files[o2.postEffect.lutFile]\r\n if (!o2.postEffect.lutBlobFil) {\r\n let arr = Object.keys(zip_info.all_files)\r\n var name = arr.filter(item => item.includes('CUBE'))[0]\r\n if (!name) o2.postEffect.lut = false\r\n else o2.postEffect.lutBlobFile = zip_info.all_files[name]\r\n }\r\n o2.postEffect.lutBlob = new Blob([o2.postEffect.lutBlobFile])\r\n o2.postEffect.lutFile = URL.createObjectURL(o2.postEffect.lutBlob)\r\n }\r\n o2.create_render_pass()\r\n }\r\n if (xxx.scene.camera) {\r\n let scene = xxx.scene;\r\n o2.camera.near = scene.camera.near;\r\n o2.camera.far = scene.camera.far;\r\n o2.camera.fov = scene.camera.fov;\r\n o2.camera.position.set(scene.camera.position.x, scene.camera.position.y, scene.camera.position.z);\r\n o2.cameraControls.target.set(scene.camera.target.x, scene.camera.target.y, scene.camera.target.z);\r\n }\r\n if (xxx.scene.toneMappingExposure != null) {\r\n o2.renderer.toneMappingExposure = xxx.scene.toneMappingExposure;\r\n }\r\n //scene_id\r\n o2.scene.scene_id = xxx.scene.scene_id\r\n if (o2.scene.scene_id == null) {\r\n let abc = new THREE.Object3D()\r\n o2.scene.scene_id = abc.uuid\r\n }\r\n if (xxx.scene.bake_step) {\r\n o2.scene.bake_step = xxx.scene.bake_step\r\n } else {\r\n o2.scene.bake_step = 1\r\n }\r\n //场景背景\r\n let obj = xxx.scene.background\r\n if (obj.type == 0) {\r\n if (o2.scene.background.constructor == THREE.Color) {\r\n o2.scene.background.setHex(obj.color)\r\n } else {\r\n o2.scene.background = new THREE.Color()\r\n o2.scene.background.setHex(obj.color)\r\n }\r\n }\r\n if (obj.type == 1) {\r\n let map = o2.create_map(obj.map, zip_info)\r\n if (map != null) {\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n o2.scene.background = map\r\n }\r\n }\r\n if (obj.type == 2) {\r\n o2.scene.background = o2.create_envMap(obj.envMap, from_zip, zip_info)\r\n o2.cubemap = o2.scene.background\r\n }\r\n //动画模块\r\n o2.animation.from_json(xxx.scene.animation)\r\n //展馆模块\r\n if (xxx.scene.exhibition) {\r\n o2.exhibition = {}\r\n o2.exhibition.objects_ids = xxx.scene.exhibition.objects\r\n }\r\n }\r\n // load_zip_scene_old = (url) =>\r\n // new Promise((resolve, reject) => {\r\n // this.reset_scene();\r\n // this.grid.visible = false;\r\n // this.project_url = url.substring(0, url.lastIndexOf('/') + 1)\r\n // if (!this.zip) {\r\n // this.zip = new JSZip()\r\n // }\r\n // this.from_zip = true\r\n // this.all_files = {}\r\n // let o2 = this\r\n // var on_unzipped = function () {\r\n // //console.log(\"解压完成,加载模型...\");\r\n // //console.log(o2.all_files);\r\n // if (o2.all_files['scene.json'] != undefined) {\r\n // var rt = o2.all_files['scene.json']\r\n // var xxx = JSON.parse(rt)\r\n // o2.load_common_scene(xxx, true)\r\n // /////////////////\r\n // const allRequest = []\r\n // var mdls = xxx['children']\r\n // for (let index = 0; index < mdls.length; index++) {\r\n // const model_obj = mdls[index]\r\n // model_obj.from_zip = true\r\n // var promise = o2.load_saved_object(model_obj, true)\r\n // promise.then((obj3) => {\r\n // if (obj3) o2.scene.add(obj3)\r\n // })\r\n // allRequest.push(promise)\r\n // }\r\n // if (o2.on_loading_msg) {\r\n // o2.on_loading_msg('加载完成', 100)\r\n // }\r\n // if (o2.onload) {\r\n // o2.onload()\r\n // }\r\n\r\n // Promise.all(allRequest).then(\r\n // () => {\r\n // resolve()\r\n // o2.animation.bind_objects()\r\n // o2.process_after_load()\r\n // if (o2.script['init']) {\r\n // o2.script['init']()\r\n // o2.cameraControls.minDistance = Math.max(\r\n // o2.cameraControls.minDistance,\r\n // 10\r\n // )\r\n // }\r\n // },\r\n // () => {\r\n // reject()\r\n // }\r\n // )\r\n // }\r\n // }\r\n // // let script_url = this.project_url+\"/script.js\";\r\n // // loadJs(script_url,function(){console.log('script load done');});\r\n // var xhr = new XMLHttpRequest()\r\n // xhr.open('get', url, true)\r\n // xhr.responseType = 'blob'\r\n // xhr.addEventListener(\r\n // 'progress',\r\n // function (event) {\r\n // // 响应头要有Content-Length\r\n // if (event.lengthComputable) {\r\n // let percentComplete = event.loaded / event.total\r\n // //console.log(percentComplete); // 最后输出1\r\n // if (o2.on_loading_msg) {\r\n // o2.on_loading_msg(\r\n // '正在下载:',\r\n // String(Math.ceil(percentComplete * 99)),\r\n // '%'\r\n // )\r\n // }\r\n // }\r\n // },\r\n // false\r\n // )\r\n // xhr.onload = function () {\r\n // if (this.status == 200) {\r\n // var xxx = this.response\r\n // o2.zip.loadAsync(xxx).then(function (zip) {\r\n // //console.log(zip);\r\n // var counts = 0\r\n // zip.forEach(function (v) {\r\n // //console.log(v);\r\n // counts++\r\n // var type_read = 'arraybuffer'\r\n // if (v.substr(v.length - 4, v.length) != 'json') {\r\n // //console.log(v);\r\n // type_read = 'arraybuffer'\r\n // }\r\n // if (v == 'scene.json') {\r\n // type_read = 'string'\r\n // }\r\n // if (o2.zip.file(v)) {\r\n // o2.zip\r\n // .file(v)\r\n // .async(type_read)\r\n // .then(function (content) {\r\n // //console.log(v,content);\r\n // o2.all_files[v] = content\r\n // counts--\r\n\r\n // if (counts == 0) {\r\n // on_unzipped()\r\n // }\r\n // })\r\n // } else {\r\n // counts--\r\n // //console.log(v)\r\n // }\r\n // })\r\n // })\r\n // }\r\n // }\r\n // xhr.send()\r\n // })\r\n\r\n copy_saved_param(obj, param) {\r\n if (param.bColliTest) obj.bColliTest = true;\r\n if (param.bLock) obj.bLock = true;\r\n if (param.bPickable != null) obj.bPickable = param.bPickable;\r\n }\r\n load_zip_scene = (url) =>\r\n new Promise((resolve, reject) => {\r\n this.reset_scene();\r\n this.grid.visible = false;\r\n this.project_url = url.substring(0, url.lastIndexOf('/') + 1)\r\n let zip_info = {};\r\n zip_info.zip = new JSZip;\r\n zip_info.from_zip = true\r\n zip_info.all_files = {}\r\n let o2 = this\r\n var on_unzipped = function () {\r\n if (zip_info.all_files['scene.json'] != undefined) {\r\n var rt = zip_info.all_files['scene.json']\r\n var xxx = JSON.parse(rt)\r\n o2.load_common_scene(xxx, true, zip_info)\r\n /////////////////\r\n const allRequest = []\r\n var mdls = xxx['children']\r\n for (let index = 0; index < mdls.length; index++) {\r\n const model_obj = mdls[index]\r\n model_obj.from_zip = true\r\n var promise = o2.load_saved_object(model_obj, true, zip_info)\r\n promise.then((obj3) => {\r\n o2.copy_saved_param(obj3, model_obj);\r\n if (obj3) o2.scene.add(obj3)\r\n })\r\n allRequest.push(promise)\r\n }\r\n if (o2.on_loading_msg) {\r\n o2.on_loading_msg('加载完成', 100)\r\n }\r\n if (o2.onload) {\r\n o2.onload()\r\n }\r\n\r\n Promise.all(allRequest).then(\r\n () => {\r\n resolve()\r\n o2.animation.bind_objects()\r\n o2.process_after_load()\r\n if (o2.script['init']) {\r\n o2.script['init']()\r\n o2.cameraControls.minDistance = Math.max(\r\n o2.cameraControls.minDistance,\r\n 10\r\n )\r\n }\r\n },\r\n () => {\r\n reject()\r\n }\r\n )\r\n }\r\n }\r\n\r\n var xhr = new XMLHttpRequest()\r\n xhr.open('get', url, true)\r\n xhr.responseType = 'blob'\r\n xhr.addEventListener(\r\n 'progress',\r\n function (event) {\r\n // 响应头要有Content-Length\r\n if (event.lengthComputable) {\r\n let percentComplete = event.loaded / event.total\r\n //console.log(percentComplete); // 最后输出1\r\n if (o2.on_loading_msg) {\r\n o2.on_loading_msg(\r\n '正在下载:',\r\n String(Math.ceil(percentComplete * 99)),\r\n '%'\r\n )\r\n }\r\n }\r\n },\r\n false\r\n )\r\n xhr.onload = function () {\r\n if (this.status == 200) {\r\n var xxx = this.response\r\n zip_info.zip.loadAsync(xxx).then(function (zip) {\r\n var counts = 0\r\n zip.forEach(function (v) {\r\n counts++\r\n var type_read = 'arraybuffer'\r\n if (v.substr(v.length - 4, v.length) != 'json') {\r\n type_read = 'arraybuffer'\r\n }\r\n if (v == 'scene.json') {\r\n type_read = 'string'\r\n }\r\n if (zip_info.zip.file(v)) {\r\n zip_info.zip\r\n .file(v)\r\n .async(type_read)\r\n .then(function (content) {\r\n //console.log(v,content);\r\n zip_info.all_files[v] = content\r\n counts--\r\n if (counts == 0) {\r\n on_unzipped()\r\n }\r\n })\r\n } else {\r\n counts--\r\n }\r\n })\r\n })\r\n }\r\n }\r\n xhr.send()\r\n })\r\n\r\n load_o2_scene = (url) =>\r\n new Promise((resolve, reject) => {\r\n this.reset_scene();\r\n this.grid.visible = false;\r\n this.from_zip = false\r\n this.project_url = url.substring(0, url.lastIndexOf('/') + 1)\r\n //console.log(this.project_url);\r\n var xhr = new XMLHttpRequest()\r\n let o2 = this\r\n xhr.open('get', url, true)\r\n xhr.responseType = 'text'\r\n xhr.send()\r\n\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n\r\n let aaa = xhr.response\r\n //console.log(aaa);\r\n var xxx = JSON.parse(aaa)\r\n if (xxx.type == 'save_project') {\r\n /////////////////\r\n o2.load_common_scene(xxx, false)\r\n // if (xxx.scene.postEffect) {\r\n // o2.postEffect = xxx.scene.postEffect;\r\n // o2.create_render_pass();\r\n // }\r\n // o2.scene.scene_id = xxx.scene.scene_id;\r\n // if (o2.scene.scene_id == null) {\r\n // let abc = new THREE.Object3D;\r\n // o2.scene.scene_id = abc.uuid;\r\n // }\r\n // if (xxx.scene.bake_step) {\r\n // o2.scene.bake_step = xxx.scene.bake_step;\r\n // } else {\r\n // o2.scene.bake_step = 1;\r\n // }\r\n // /////\r\n // this.animation.from_json(xxx.scene.animation);\r\n // let obj = xxx.scene.background;\r\n // if (obj.type == 0) {\r\n // if (this.scene.background.constructor == THREE.Color) {\r\n // this.scene.background.setHex(obj.color);\r\n // } else {\r\n // this.scene.background = new THREE.Color();\r\n // this.scene.background.setHex(obj.color);\r\n // }\r\n // }\r\n // if (obj.type == 1) {\r\n // let map = this.create_map(obj.map);\r\n // if (map != null) {\r\n // map.wrapS = THREE.RepeatWrapping;\r\n // map.wrapT = THREE.RepeatWrapping;\r\n // this.scene.background = map;\r\n // }\r\n // }\r\n // if (obj.type == 2) {\r\n // this.scene.background = this.create_envMap(obj.envMap);\r\n // this.cubemap = this.scene.background;\r\n // }\r\n /////\r\n const allRequest = []\r\n var mdls = xxx['children']\r\n for (let index = 0; index < mdls.length; index++) {\r\n const model_obj = mdls[index]\r\n var promise = o2.load_saved_object(model_obj, false)\r\n promise.then((obj3) => {\r\n o2.copy_saved_param(obj3, model_obj);\r\n if (obj3) o2.scene.add(obj3)\r\n })\r\n allRequest.push(promise)\r\n }\r\n Promise.all(allRequest).then(\r\n () => {\r\n o2.animation.bind_objects()\r\n o2.process_after_load()\r\n if (o2.script['init']) {\r\n o2.script['init']()\r\n }\r\n resolve()\r\n },\r\n () => {\r\n reject()\r\n }\r\n )\r\n } else {\r\n //刚刚导出的scene.json\r\n o2.scene.background = o2.create_envMap(xxx['evn'].cube, false)\r\n o2.cubemap = o2.scene.background\r\n\r\n const allRequest = []\r\n var mdls = xxx['models']\r\n for (let index = 0; index < mdls.length; index++) {\r\n const model_obj = mdls[index]\r\n allRequest.push(\r\n o2.load_mesh_url(\r\n o2.project_url + model_obj['mesh'],\r\n model_obj\r\n )\r\n )\r\n }\r\n o2.tree = xxx['tree']\r\n Promise.all(allRequest).then(\r\n () => {\r\n o2.animation.bind_objects()\r\n o2.process_after_load()\r\n if (o2.script['init']) {\r\n o2.script['init']()\r\n }\r\n resolve()\r\n },\r\n () => {\r\n reject()\r\n }\r\n )\r\n }\r\n } else {\r\n reject(xhr.status)\r\n }\r\n }\r\n }\r\n })\r\n\r\n import_url = (url) =>\r\n new Promise((resolve, reject) => {\r\n this.project_url = url.substring(0, url.lastIndexOf('/') + 1)\r\n //console.log(this.project_url);\r\n var xhr = new XMLHttpRequest()\r\n let o2 = this\r\n xhr.open('get', url, true)\r\n xhr.responseType = 'text'\r\n xhr.send()\r\n let import_root = new THREE.Object3D()\r\n import_root.name = 'import'\r\n this.scene.add(import_root)\r\n this.import_root = import_root\r\n\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n let aaa = xhr.response\r\n //console.log(aaa);\r\n var xxx = JSON.parse(aaa)\r\n if (xxx.type == 'save_project') {\r\n /////\r\n this.animation.from_json(xxx.scene.animation)\r\n let obj = xxx.scene.background\r\n if (obj.type == 0) {\r\n if (this.scene.background.constructor == THREE.Color) {\r\n this.scene.background.setHex(obj.color)\r\n } else {\r\n this.scene.background = new THREE.Color()\r\n this.scene.background.setHex(obj.color)\r\n }\r\n }\r\n if (obj.type == 1) {\r\n let map = this.create_map(obj.map)\r\n if (map != null) {\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n this.scene.background = map\r\n }\r\n }\r\n if (obj.type == 2) {\r\n this.scene.background = this.create_envMap(obj.envMap, false)\r\n this.cubemap = this.scene.background\r\n }\r\n /////\r\n const allRequest = []\r\n var mdls = xxx['children']\r\n for (let index = 0; index < mdls.length; index++) {\r\n const model_obj = mdls[index]\r\n var promise = o2.load_saved_object(model_obj, false)\r\n promise.then((obj3) => {\r\n o2.copy_saved_param(obj3, model_obj);\r\n if (obj3) import_root.add(obj3)\r\n })\r\n allRequest.push(promise)\r\n }\r\n Promise.all(allRequest).then(\r\n () => {\r\n o2.animation.bind_objects()\r\n if (o2.script['init']) {\r\n o2.script['init']()\r\n }\r\n resolve()\r\n },\r\n () => {\r\n reject()\r\n }\r\n )\r\n } else {\r\n const allRequest = []\r\n var mdls = xxx['models']\r\n for (let index = 0; index < mdls.length; index++) {\r\n const model_obj = mdls[index]\r\n allRequest.push(\r\n o2.load_mesh_url(\r\n o2.project_url + model_obj['mesh'],\r\n model_obj\r\n )\r\n )\r\n }\r\n o2.tree = xxx['tree']\r\n Promise.all(allRequest).then(\r\n () => {\r\n o2.animation.bind_objects()\r\n if (o2.script['init']) {\r\n o2.script['init']()\r\n }\r\n resolve()\r\n },\r\n () => {\r\n reject()\r\n }\r\n )\r\n }\r\n } else {\r\n reject(xhr.status)\r\n }\r\n }\r\n }\r\n })\r\n\r\n create_envMap = (evn, from_zip, zip_info,onload) => {\r\n if (undefined == evn || evn == 'use_scene') {\r\n return this.cubemap\r\n }\r\n let map = this.envmaps[evn]\r\n if (map == null) {\r\n if (zip_info) {\r\n var urls2 = []\r\n var urls = [\r\n 'image/' + evn + '/posx.jpg',\r\n 'image/' + evn + '/negx.jpg',\r\n 'image/' + evn + '/posy.jpg',\r\n 'image/' + evn + '/negy.jpg',\r\n 'image/' + evn + '/posz.jpg',\r\n 'image/' + evn + '/negz.jpg'\r\n ]\r\n for (let i = 0; i < 6; i++) {\r\n let fnn = urls[i]\r\n let f1 = zip_info.all_files[fnn]\r\n let blob = new Blob([f1], { type: 'image/jpg' })\r\n let url = URL.createObjectURL(blob)\r\n urls2.push(url)\r\n }\r\n map = new THREE.CubeTextureLoader().load(urls2,onload)\r\n } else if (from_zip) {\r\n let o2 = this\r\n var urls2 = []\r\n var urls = [\r\n 'image/' + evn + '/posx.jpg',\r\n 'image/' + evn + '/negx.jpg',\r\n 'image/' + evn + '/posy.jpg',\r\n 'image/' + evn + '/negy.jpg',\r\n 'image/' + evn + '/posz.jpg',\r\n 'image/' + evn + '/negz.jpg'\r\n ]\r\n for (let i = 0; i < 6; i++) {\r\n let fnn = urls[i]\r\n let f1 = this.all_files[fnn]\r\n let blob = new Blob([f1], { type: 'image/jpg' })\r\n let url = URL.createObjectURL(blob)\r\n urls2.push(url)\r\n }\r\n map = new THREE.CubeTextureLoader().load(urls2,onload)\r\n } else {\r\n let o2 = this\r\n var urls = [\r\n o2.project_url + 'image/' + evn + '/posx.jpg',\r\n o2.project_url + 'image/' + evn + '/negx.jpg',\r\n o2.project_url + 'image/' + evn + '/posy.jpg',\r\n o2.project_url + 'image/' + evn + '/negy.jpg',\r\n o2.project_url + 'image/' + evn + '/posz.jpg',\r\n o2.project_url + 'image/' + evn + '/negz.jpg'\r\n ]\r\n map = new THREE.CubeTextureLoader().load(urls,onload)\r\n }\r\n map.cubename = evn\r\n map.format = THREE.RGBFormat\r\n this.envmaps[evn] = map\r\n }\r\n if (map == null) {\r\n map = this.cubemap\r\n }\r\n return map\r\n }\r\n\r\n load_image_to_texture = (map_url, url) => {\r\n const RGBFormat = 1022\r\n const RGBAFormat = 1023\r\n let texture = new THREE.Texture()\r\n if (this.unload_textures[map_url]) {\r\n //console.log(\"same image:\" + (this.same_texture_count++) + \"(\" + map_url + \")\");\r\n texture = this.unload_textures[map_url]\r\n return texture\r\n }\r\n this.unload_textures[map_url] = texture\r\n let o2 = this\r\n\r\n\r\n this.image_loader.load(url, function (image) {\r\n const isJPEG =\r\n url.search(/\\.jpe?g($|\\?)/i) > 0 ||\r\n url.search(/^data\\:image\\/jpeg/) === 0\r\n if (0) {\r\n //11.24 1/2贴图尺寸加载\r\n let canvas = document.createElement(\"canvas\");\r\n canvas.width = Math.ceil(image.width / 8);\r\n canvas.height = Math.ceil(image.height / 8);\r\n const drawingContext = canvas.getContext(\"2d\");\r\n drawingContext.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n let url2 = canvas.toDataURL(\"image/png\");\r\n o2.image_loader.load(url2, function (img) {\r\n texture.raw_url = url\r\n texture.image = img\r\n texture.format = isJPEG ? RGBFormat : RGBAFormat\r\n texture.needsUpdate = true\r\n texture.name = map_url\r\n texture.wrapS = THREE.RepeatWrapping\r\n texture.wrapT = THREE.RepeatWrapping\r\n if (texture.copyed) {\r\n for (let i = 0; i < texture.copyed.length; i++) {\r\n let tex2 = texture.copyed[i];\r\n tex2.raw_url = url\r\n tex2.image = img\r\n tex2.format = isJPEG ? RGBFormat : RGBAFormat\r\n tex2.needsUpdate = true\r\n tex2.name = map_url\r\n tex2.wrapS = THREE.RepeatWrapping\r\n tex2.wrapT = THREE.RepeatWrapping\r\n }\r\n }\r\n });\r\n } else {\r\n texture.raw_url = url\r\n texture.image = image\r\n texture.format = isJPEG ? RGBFormat : RGBAFormat\r\n texture.needsUpdate = true\r\n texture.name = map_url\r\n texture.wrapS = THREE.RepeatWrapping\r\n texture.wrapT = THREE.RepeatWrapping\r\n if (texture.copyed) {\r\n for (let i = 0; i < texture.copyed.length; i++) {\r\n let tex2 = texture.copyed[i];\r\n tex2.raw_url = url\r\n tex2.image = image\r\n tex2.format = isJPEG ? RGBFormat : RGBAFormat\r\n tex2.needsUpdate = true\r\n tex2.name = map_url\r\n tex2.wrapS = THREE.RepeatWrapping\r\n tex2.wrapT = THREE.RepeatWrapping\r\n }\r\n }\r\n }\r\n\r\n\r\n })\r\n return texture\r\n }\r\n\r\n create_map_with_default = (map_obj, from_zip, zip_info) => {\r\n //新命名normal_map 旧命名map_normal\r\n if (map_obj && map_obj.o2_default) {\r\n return this.default_textures[map_obj.o2_default];\r\n // if (map_obj.o2_default == 'white') return this.map_white\r\n // if (map_obj.o2_default == 'alpha') return this.map_alpha\r\n // if (map_obj.o2_default == 'half_alpha') return this.half_alpha\r\n // if (map_obj.o2_default == 'red') return this.map_red\r\n // if (map_obj.o2_default == 'normal_map') return this.map_normal\r\n }\r\n let map\r\n if (map_obj) map = this.create_map(map_obj.name, zip_info)\r\n if (map == null) map = this.map_white\r\n return map\r\n }\r\n create_map = (map_url, zip_info) => {\r\n if (map_url == null || map_url == '') return null\r\n let absurl = false\r\n let url = this.project_url + map_url\r\n let mapurl = map_url\r\n mapurl.toLowerCase()\r\n if (mapurl.indexOf('http') == 0) {\r\n url = map_url\r\n absurl = true\r\n }\r\n let fnn = map_url\r\n let f1 = this.all_files[fnn]\r\n if (zip_info) {\r\n f1 = zip_info.all_files[fnn];\r\n }\r\n if (f1 && !absurl) {\r\n let blob = new Blob([f1], { type: 'image/jpg' })\r\n let url = URL.createObjectURL(blob)\r\n let map = this.load_image_to_texture(map_url, url)\r\n return map\r\n }\r\n let map = this.load_image_to_texture(mapurl, url)\r\n this.maps.map_url = map\r\n return map\r\n }\r\n\r\n create_render_pass() {\r\n if (this.renderer.customed_lut)//修改过了threejs文件\r\n {\r\n if (this.postEffect.lut) {\r\n this.renderer.toneMapping = 5;\r\n if (this.postEffect.lutFile && this.postEffect.lutFile != \"\") {\r\n let url = this.postEffect.lutFile\r\n if (url.substr(0, 4) != 'http' && url.substr(0, 4) != 'blob') {\r\n url = this.project_url + url\r\n }\r\n let o2 = this;\r\n new LUTCubeLoader().load(url, function (result) {\r\n o2.renderer.map_lut = result.texture\r\n })\r\n }\r\n this.update_all_mtl();\r\n } else {\r\n this.renderer.toneMapping = 0;\r\n this.update_all_mtl();\r\n }\r\n }\r\n\r\n if (this.postEffect == null || this.postEffect.bDefaultRender) return\r\n\r\n //基础场景渲染\r\n const finalComposer = new EffectComposer(this.renderer)\r\n\r\n // const ssaaRenderPassP = new SSAARenderPass( this.scene, this.camera );\r\n // finalComposer.addPass( ssaaRenderPassP );\r\n // ssaaRenderPassP.sampleLevel=2;\r\n // this.ssaaRenderPass=ssaaRenderPassP;\r\n\r\n\r\n const renderScene = new RenderPass(this.scene, this.camera)\r\n finalComposer.addPass(renderScene)\r\n\r\n let postEffect = this.postEffect\r\n if (postEffect.glow) {\r\n const bloomPass = new UnrealBloomPass(\r\n new THREE.Vector2(this.WIDTH, this.HEIGHT),\r\n 1.5,\r\n 0.4,\r\n 0.85\r\n )\r\n bloomPass.threshold = postEffect.glow_threshold\r\n bloomPass.strength = postEffect.glow_strength\r\n bloomPass.radius = postEffect.glow_radius\r\n this.bloomPass = bloomPass\r\n finalComposer.addPass(bloomPass)\r\n }\r\n\r\n //Sobel\r\n if (this.postEffect.sobel) {\r\n // const effectGrayScale = new ShaderPass(LuminosityShader);\r\n // finalComposer.addPass(effectGrayScale);\r\n this.effectSobel = new ShaderPass(SobelOperatorShader2)\r\n this.effectSobel.uniforms['resolution'].value.x =\r\n this.WIDTH * window.devicePixelRatio\r\n this.effectSobel.uniforms['resolution'].value.y =\r\n this.HEIGHT * window.devicePixelRatio\r\n finalComposer.addPass(this.effectSobel)\r\n }\r\n\r\n //film\r\n if (this.postEffect.film) {\r\n finalComposer.addPass(new FilmPass(0.35, 0.025, 648, false))\r\n }\r\n\r\n //FXAA\r\n if (this.postEffect.fxaa) {\r\n\r\n // const pass = new SMAAPass( this.WIDTH * this.renderer.getPixelRatio(), this.HEIGHT * this.renderer.getPixelRatio() );\r\n // finalComposer.addPass( pass );\r\n\r\n this.fxaaPass = new ShaderPass(FXAAShader)\r\n const pixelRatio = this.renderer.getPixelRatio()\r\n this.fxaaPass.material.uniforms['resolution'].value.x =\r\n 1 / (this.WIDTH * pixelRatio)\r\n this.fxaaPass.material.uniforms['resolution'].value.y =\r\n 1 / (this.HEIGHT * pixelRatio)\r\n finalComposer.addPass(this.fxaaPass)\r\n }\r\n\r\n var u = navigator.userAgent\r\n var isiOS = !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/) //ios终端\r\n\r\n if (!this.renderer.customed_lut) {\r\n if (this.postEffect.lut) {\r\n this.lutPass = new LUTPass()\r\n this.lutPass.enabled = false\r\n if (!this.postEffect.lutPower) {\r\n this.postEffect.lutPower = 1\r\n }\r\n this.lutPass.intensity = this.postEffect.lutPower\r\n finalComposer.addPass(this.lutPass)\r\n let o2 = this\r\n if (!this.postEffect.lutFile)\r\n this.postEffect.lutFile = 'luts/Bourbon.CUBE'\r\n let url = this.postEffect.lutFile\r\n if (url.substr(0, 4) != 'http') {\r\n url = this.project_url + url\r\n if (postEffect.from_zip) {\r\n let f1 = this.all_files[this.postEffect.lutFile]\r\n let blob = new Blob([f1])\r\n url = URL.createObjectURL(blob)\r\n }\r\n }\r\n new LUTCubeLoader().load(url, function (result) {\r\n if (!isiOS) o2.lutPass.lut = result.texture\r\n //暂时全部用2D的,很多设备不支持\r\n // o2.lutPass.lut = result.texture3D;\r\n else o2.lutPass.lut = result.texture\r\n o2.lutPass.enabled = true\r\n })\r\n }\r\n }\r\n\r\n //outline\r\n if (this.postEffect.outline) {\r\n this.OutlinePass = new OutlinePass(\r\n new THREE.Vector2(this.WIDTH, this.HEIGHT),\r\n this.scene,\r\n this.camera\r\n )\r\n this.OutlinePass.visibleEdgeColor.set('#ffffff')\r\n this.OutlinePass.hiddenEdgeColor.set('#190a05')\r\n this.OutlinePass.edgeStrength = Number(5) //0.01-10\r\n this.OutlinePass.edgeGlow = Number(0.5) //0-1\r\n this.OutlinePass.edgeThickness = Number(2) //1-4\r\n finalComposer.addPass(this.OutlinePass)\r\n }\r\n //SSAO\r\n if (this.postEffect.ao) {\r\n let saoPass = new SAOPass(this.scene, this.camera, false, true)\r\n\r\n saoPass.params.saoIntensity = 0.002\r\n saoPass.params.saoKernelRadius = 20\r\n saoPass.params.saoScale = 1000\r\n\r\n if (this.postEffect.aoIntensity)\r\n saoPass.params.saoIntensity = this.postEffect.aoIntensity\r\n if (this.postEffect.aoRadius)\r\n saoPass.params.saoKernelRadius = this.postEffect.aoRadius\r\n if (this.postEffect.aoScale)\r\n saoPass.params.saoScale = this.postEffect.aoScale\r\n this.postEffect.aoIntensity = saoPass.params.saoIntensity\r\n this.postEffect.aoRadius = saoPass.params.saoKernelRadius\r\n this.postEffect.aoScale = saoPass.params.saoScale\r\n this.ao = saoPass\r\n finalComposer.addPass(this.ao)\r\n }\r\n\r\n this.finalComposer = finalComposer\r\n }\r\n init(container) {\r\n this.frame_count = 0;\r\n this.image_loader = new THREE.ImageLoader()\r\n this.loaded_images = {}\r\n this.unload_textures = {}\r\n this.meshes = {}\r\n this.multi_selection = [];\r\n this.last_time = Date.now()\r\n this.container = container //document.getElementById( 'container' );\r\n var WIDTH = this.container.clientWidth\r\n var HEIGHT = this.container.clientHeight\r\n this.WIDTH = WIDTH\r\n this.HEIGHT = HEIGHT\r\n this.maps = {}\r\n this.copy_maps = []\r\n //\r\n // let map = new THREE.TextureLoader().load( './static/textures/white.png' );\r\n this.default_textures={};\r\n {\r\n const width = 1\r\n const height = 1\r\n const size = 1\r\n const data = new Uint8Array(3 * size)\r\n for (let i = 0; i < size; i++) {\r\n const stride = i * 3\r\n data[stride] = 255 //r;\r\n data[stride + 1] = 0 //g;\r\n data[stride + 2] = 0 //b;\r\n }\r\n let map = new THREE.DataTexture(data, width, height, THREE.RGBFormat)\r\n map.o2_default = 'red'\r\n this.map_red = map\r\n this.default_textures.red=map;\r\n }\r\n {\r\n const width = 1\r\n const height = 1\r\n const size = 1\r\n const data = new Uint8Array(3 * size)\r\n for (let i = 0; i < size; i++) {\r\n const stride = i * 3\r\n data[stride] = 0 //r;\r\n data[stride + 1] = 255 //g;\r\n data[stride + 2] = 0 //b;\r\n }\r\n let map = new THREE.DataTexture(data, width, height, THREE.RGBFormat)\r\n map.o2_default = 'green'\r\n this.map_green = map\r\n this.default_textures.green=map;\r\n }\r\n {\r\n const width = 1\r\n const height = 1\r\n const size = 1\r\n const data = new Uint8Array(3 * size)\r\n for (let i = 0; i < size; i++) {\r\n const stride = i * 3\r\n data[stride] = 0 //r;\r\n data[stride + 1] = 0 //g;\r\n data[stride + 2] = 255 //b;\r\n }\r\n let map = new THREE.DataTexture(data, width, height, THREE.RGBFormat)\r\n map.o2_default = 'blue'\r\n this.map_blue = map\r\n this.default_textures.blue=map;\r\n }\r\n {\r\n const width = 1\r\n const height = 1\r\n const size = 1\r\n const data = new Uint8Array(3 * size)\r\n for (let i = 0; i < size; i++) {\r\n const stride = i * 3\r\n data[stride] = 0 //r;\r\n data[stride + 1] = 0 //g;\r\n data[stride + 2] = 0 //b;\r\n }\r\n let map = new THREE.DataTexture(data, width, height, THREE.RGBFormat)\r\n map.o2_default = 'black'\r\n this.map_black = map\r\n this.default_textures.black=map;\r\n }\r\n {\r\n let map = new THREE.TextureLoader().load(require('../images/white.png'))\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n map.filpX = false\r\n map.filpY = false\r\n map.needsUpdate = true\r\n map.o2_default = 'white'\r\n this.map_white = map\r\n this.default_textures.white=map;\r\n }\r\n {\r\n let map = new THREE.TextureLoader().load(require('../images/alpha.png'))\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n map.filpX = false\r\n map.filpY = false\r\n map.needsUpdate = true\r\n map.o2_default = 'alpha'\r\n this.map_alpha = map\r\n this.default_textures.alpha=map;\r\n }\r\n {\r\n let map = new THREE.TextureLoader().load(\r\n require('../images/half_alpha.png')\r\n )\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n map.filpX = false\r\n map.filpY = false\r\n map.needsUpdate = true\r\n map.o2_default = 'half_alpha'\r\n this.half_alpha = map\r\n this.default_textures.half_alpha=map;\r\n }\r\n {\r\n let map = new THREE.TextureLoader().load(\r\n require('../images/normalmap.jpg')\r\n )\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n map.filpX = false\r\n map.filpY = false\r\n map.needsUpdate = true\r\n map.o2_default = 'normal_map'\r\n this.map_normal = map\r\n this.default_textures.map_normal=map;\r\n this.default_textures.normal_map=map;\r\n }\r\n // renderer\r\n if (this.is_mobile) {\r\n this.renderer = new THREE.WebGLRenderer({\r\n antialias: true,\r\n alpha: true,\r\n powerPreference: 'low-power'\r\n })\r\n } else {\r\n this.renderer = new THREE.WebGLRenderer({\r\n antialias: true,\r\n alpha: true\r\n })\r\n }\r\n\r\n this.renderer.setPixelRatio(window.devicePixelRatio)\r\n this.renderer.shadowMap.enabled = true\r\n this.renderer.shadowMap.type = THREE.PCFSoftShadowMap\r\n //this.renderer.toneMapping = THREE.CustomToneMapping;\r\n this.renderer.toneMapping = 0;\r\n this.renderer.toneMappingExposure = 1;\r\n this.renderer.map_lut = this.map_white;\r\n\r\n THREE.ShaderChunk.tonemapping_pars_fragment = THREE.ShaderChunk.tonemapping_pars_fragment.replace(\r\n 'vec3 CustomToneMapping( vec3 color ) { return color; }',\r\n\r\n `\r\n uniform sampler2D lut_map;\r\n vec3 lutLookup2( sampler2D tex, float size, vec3 rgb ) {\r\n float sliceHeight = 1.0 / size;\r\n float yPixelHeight = 1.0 / ( size * size );\r\n // Get the slices on either side of the sample\r\n float slice = rgb.b * size;\r\n float interp = fract( slice );\r\n float slice0 = slice - interp;\r\n float centeredInterp = interp - 0.5;\r\n \r\n float slice1 = slice0 + sign( centeredInterp );\r\n \r\n // Pull y sample in by half a pixel in each direction to avoid color\r\n // bleeding from adjacent slices.\r\n float greenOffset = clamp( rgb.g * sliceHeight, yPixelHeight * 0.5, sliceHeight - yPixelHeight * 0.5 );\r\n \r\n vec2 uv0 = vec2(\r\n rgb.r,\r\n slice0 * sliceHeight + greenOffset\r\n );\r\n vec2 uv1 = vec2(\r\n rgb.r,\r\n slice1 * sliceHeight + greenOffset\r\n );\r\n vec3 sample0 = texture2D( tex, uv0 ).rgb;\r\n vec3 sample1 = texture2D( tex, uv1 ).rgb;\r\n return mix( sample0, sample1, abs( centeredInterp ) );\r\n }\r\n\r\n vec3 CustomToneMapping( vec3 color ) {\r\n \r\n vec4 val = vec4( color.rgb, 1 );\r\n vec4 lutVal;\r\n float pixelWidth = 1.0 / 32.0;\r\n float halfPixelWidth = 0.5 / 32.0;\r\n vec3 uvw = vec3( halfPixelWidth ) + val.rgb * ( 1.0 - pixelWidth );\r\n lutVal = vec4( lutLookup2( lut_map, 32.0, uvw ), val.a );\r\n return vec3( mix( val, lutVal, toneMappingExposure ).rgb );\r\n }`\r\n );\r\n\r\n // this.renderer.toneMapping = 4;\r\n // this.renderer.toneMappingExposure = 1;\r\n\r\n // this.renderer.outputEncoding = THREE.sRGBEncoding;\r\n // THREE.ShaderChunk.tonemapping_pars_fragment = THREE.ShaderChunk.tonemapping_pars_fragment.replace(\r\n // 'vec3 CustomToneMapping( vec3 color ) { return color; }',\r\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 ) )\r\n // float toneMappingWhitePoint = 1.0;\r\n // vec3 CustomToneMapping( vec3 color ) {\r\n // color *= toneMappingExposure;\r\n // return saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\r\n // }`\r\n // );\r\n\r\n this.renderer.setSize(WIDTH, HEIGHT)\r\n\r\n //css2drender\r\n // this.css3dRenderer = new CSS3DRenderer();\r\n // this.css3dRenderer.setSize(WIDTH,HEIGHT);\r\n // this.css3dRenderer.domElement.style.position = 'absolute';\r\n // this.css3dRenderer.domElement.style.top = 0;\r\n\r\n //scene\r\n var scene = new THREE.Scene()\r\n this.scene = scene\r\n // camera\r\n var VIEW_ANGLE = 60\r\n var ASPECT = this.WIDTH / this.HEIGHT\r\n var NEAR = 100\r\n var FAR = 500000\r\n this.camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, NEAR, FAR)\r\n this.camera.position.set(0, 3000, -5000)\r\n // camera control\r\n this.cameraControls = new OrbitControls(\r\n this.camera,\r\n this.renderer.domElement\r\n )\r\n this.cameraControls.target.set(0, 0, 0)\r\n this.cameraControls.enableZoom = true\r\n this.cameraControls.enableDamping = true\r\n this.cameraControls.rotateSpeed = 1\r\n this.cameraControls.minDistance = 100\r\n this.cameraControls.maxDistance = 500000\r\n //this.cameraControls.maxPolarAngle = Math.PI / 2 - Math.PI / 15;\r\n this.cameraControls.update()\r\n //camera fpscontrols\r\n this.fpsControls = new PointerLockControls(\r\n this.camera,\r\n this.renderer.domElement\r\n )\r\n //light\r\n\r\n //clock\r\n var clock = new THREE.Clock()\r\n this.clock = clock\r\n // reset scene\r\n this.reset_scene()\r\n this.create_render_pass()\r\n //FINAL\r\n if (0) {\r\n this.renderer2 = new THREE.WebGLRenderer({\r\n alpha: true\r\n })\r\n this.renderer2.setSize(WIDTH, HEIGHT / 2)\r\n this.container.appendChild(this.renderer2.domElement)\r\n }\r\n this.container.appendChild(this.renderer.domElement)\r\n\r\n //this.container.appendChild(this.css3dRenderer.domElement);\r\n window.addEventListener('resize', this.onWindowResize, false)\r\n this.animate()\r\n this.animate_skeleton()\r\n }\r\n\r\n render = () => {\r\n if (this.postEffect == null || this.postEffect.bDefaultRender) {\r\n this.renderer.render(this.scene, this.camera)\r\n //this.css3dRenderer.render(this.scene,this.camera);\r\n return\r\n }\r\n if (this.postEffect.glow && this.bloomComposer) {\r\n this.camera.layers.set(1)\r\n this.bloomComposer.render()\r\n this.camera.layers.set(0)\r\n }\r\n\r\n this.finalComposer.render()\r\n }\r\n init_cover = (canvas) => {\r\n let WIDTH = canvas.clientWidth\r\n let HEIGHT = canvas.clientHeight\r\n this.renderer2 = new THREE.WebGLRenderer({\r\n canvas: canvas,\r\n alpha: true\r\n })\r\n this.renderer2.setSize(WIDTH, HEIGHT)\r\n }\r\n onWindowResize = (size) => {\r\n\r\n var height = 0\r\n if (typeof (size) == 'number') height = size\r\n var WIDTH = this.container.clientWidth\r\n var HEIGHT = this.container.clientHeight - height\r\n\r\n\r\n this.WIDTH = WIDTH\r\n this.HEIGHT = HEIGHT\r\n this.camera.aspect = WIDTH / HEIGHT\r\n this.camera.updateProjectionMatrix()\r\n this.renderer.setSize(WIDTH, HEIGHT)\r\n if (this.renderer2) this.renderer2.setSize(WIDTH, HEIGHT)\r\n if (this.finalComposer) this.finalComposer.setSize(WIDTH, HEIGHT)\r\n //this.css3dRenderer.setSize(WIDTH,HEIGHT);\r\n\r\n if (this.effectSobel) {\r\n this.effectSobel.uniforms['resolution'].value.x =\r\n WIDTH * window.devicePixelRatio\r\n this.effectSobel.uniforms['resolution'].value.y =\r\n HEIGHT * window.devicePixelRatio\r\n }\r\n\r\n if (this.fxaaPass) {\r\n const pixelRatio = this.renderer.getPixelRatio()\r\n this.fxaaPass.material.uniforms['resolution'].value.x =\r\n 1 / (WIDTH * pixelRatio)\r\n this.fxaaPass.material.uniforms['resolution'].value.y =\r\n 1 / (HEIGHT * pixelRatio)\r\n }\r\n if (this.bloomComposer) this.bloomComposer.setSize(WIDTH, HEIGHT)\r\n if (this.finalComposer) this.finalComposer.setSize(WIDTH, HEIGHT)\r\n }\r\n add_empty_object = () => {\r\n var obj = new THREE.Object3D()\r\n obj.name = 'Object'\r\n this.scene.add(obj)\r\n }\r\n load_mesh2 = (xxx) => {\r\n var intarray = new Uint32Array(xxx, 0, 5)\r\n var num_faces = intarray[0]\r\n var num_pos = intarray[1]\r\n var num_nor = intarray[2]\r\n var num_uv = intarray[3]\r\n var num_uv2 = intarray[4]\r\n var limits1 = new Float32Array(xxx, 20, 20)\r\n var posmin = []\r\n var posmax = []\r\n var posstep = []\r\n posmin[0] = limits1[0]\r\n posmin[1] = limits1[1]\r\n posmin[2] = limits1[2]\r\n posmax[0] = limits1[3]\r\n posmax[1] = limits1[4]\r\n posmax[2] = limits1[5]\r\n posstep[0] = (posmax[0] - posmin[0]) / 65535\r\n posstep[1] = (posmax[1] - posmin[1]) / 65535\r\n posstep[2] = (posmax[2] - posmin[2]) / 65535\r\n\r\n var normin = []\r\n var normax = []\r\n var norstep = []\r\n normin[0] = limits1[6]\r\n normin[1] = limits1[7]\r\n normin[2] = limits1[8]\r\n normax[0] = limits1[9]\r\n normax[1] = limits1[10]\r\n normax[2] = limits1[11]\r\n norstep[0] = (normax[0] - normin[0]) / 65535\r\n norstep[1] = (normax[1] - normin[1]) / 65535\r\n norstep[2] = (normax[2] - normin[2]) / 65535\r\n\r\n var uvmin = []\r\n var uvmax = []\r\n var uvstep = []\r\n uvmin[0] = limits1[12]\r\n uvmin[1] = limits1[13]\r\n uvmax[0] = limits1[14]\r\n uvmax[1] = limits1[15]\r\n uvstep[0] = (uvmax[0] - uvmin[0]) / 65535\r\n uvstep[1] = (uvmax[1] - uvmin[1]) / 65535\r\n\r\n var uv2min = []\r\n var uv2max = []\r\n var uv2step = []\r\n uv2min[0] = limits1[16]\r\n uv2min[1] = limits1[17]\r\n uv2max[0] = limits1[18]\r\n uv2max[1] = limits1[19]\r\n uv2step[0] = (uv2max[0] - uv2min[0]) / 65535\r\n uv2step[1] = (uv2max[1] - uv2min[1]) / 65535\r\n var ppos = new Float32Array(num_pos * 3)\r\n var pnor = new Float32Array(num_pos * 3)\r\n var puv = new Float32Array(num_pos * 2)\r\n var puv2 = new Float32Array(num_pos * 2)\r\n //console.log(model_json);\r\n var a1 = new Uint16Array(xxx, 100, num_pos * 3)\r\n var a2 = new Uint16Array(xxx, 100 + num_pos * 6, num_nor * 3)\r\n var a3 = new Uint16Array(xxx, 100 + num_pos * 6 + num_nor * 6, num_uv * 2)\r\n var a4 = new Uint16Array(\r\n xxx,\r\n 100 + num_pos * 6 + num_nor * 6 + num_uv * 4,\r\n num_uv2 * 2\r\n )\r\n var pfaces;\r\n if (num_pos > 65535 && 0) {\r\n\r\n\r\n pfaces = new Uint32Array(\r\n xxx,\r\n 100 + num_pos * 6 + num_nor * 6 + num_uv * 4 + num_uv2 * 4,\r\n num_faces * 3\r\n )\r\n\r\n } else {\r\n pfaces = new Uint16Array(\r\n xxx,\r\n 100 + num_pos * 6 + num_nor * 6 + num_uv * 4 + num_uv2 * 4,\r\n num_faces * 3\r\n )\r\n\r\n }\r\n for (var i = 0; i < a1.length; i++) {\r\n var idx = i % 3\r\n ppos[i] = posmin[idx] + a1[i] * posstep[idx]\r\n }\r\n var snor = []\r\n snor[0] = 0\r\n snor[1] = 1\r\n snor[2] = 0\r\n for (var i = 0; i < a1.length; i++) {\r\n var idx = i % 3\r\n pnor[i] = normin[idx] + a2[i] * norstep[idx]\r\n }\r\n for (var i = 0; i < a3.length; i++) {\r\n var idx = i % 2\r\n puv[i] = uvmin[idx] + a3[i] * uvstep[idx]\r\n // puv[i]=a3[i];\r\n }\r\n for (var i = 0; i < a4.length; i++) {\r\n var idx = i % 2\r\n puv2[i] = uv2min[idx] + a4[i] * uv2step[idx]\r\n // puv2[i]=a4[i];\r\n }\r\n\r\n var geometry = new THREE.BufferGeometry()\r\n geometry.setAttribute('position', new THREE.BufferAttribute(ppos, 3))\r\n if (pnor.length > 0)\r\n geometry.setAttribute('normal', new THREE.BufferAttribute(pnor, 3))\r\n if (puv.length > 0)\r\n geometry.setAttribute('uv', new THREE.BufferAttribute(puv, 2))\r\n if (puv2.length > 0)\r\n geometry.setAttribute('uv2', new THREE.BufferAttribute(puv2, 2))\r\n var ba = new THREE.BufferAttribute(pfaces, 1, true)\r\n geometry.setIndex(ba)\r\n geometry.computeBoundingBox()\r\n var uvs = geometry.attributes.uv.array\r\n for (var i = 0; i < uvs.length; i += 2) {\r\n //uvs[ i ] += 1;\r\n uvs[i + 1] += 1\r\n }\r\n\r\n return geometry\r\n }\r\n load_mesh_line = (xxx) => {\r\n var intarray = new Uint32Array(xxx, 0, 1)\r\n var num_pos = intarray[0]\r\n var limits1 = new Float32Array(xxx, 4, 6)\r\n var posmin = []\r\n var posmax = []\r\n var posstep = []\r\n posmin[0] = limits1[0]\r\n posmin[1] = limits1[1]\r\n posmin[2] = limits1[2]\r\n posmax[0] = limits1[3]\r\n posmax[1] = limits1[4]\r\n posmax[2] = limits1[5]\r\n posstep[0] = (posmax[0] - posmin[0]) / 65535\r\n posstep[1] = (posmax[1] - posmin[1]) / 65535\r\n posstep[2] = (posmax[2] - posmin[2]) / 65535\r\n\r\n var ppos = new Float32Array(num_pos * 3)\r\n var a1 = new Uint16Array(xxx, 28, num_pos * 3)\r\n for (var i = 0; i < a1.length; i++) {\r\n var idx = i % 3\r\n ppos[i] = posmin[idx] + a1[i] * posstep[idx]\r\n }\r\n var geometry = new THREE.BufferGeometry()\r\n geometry.setAttribute('position', new THREE.BufferAttribute(ppos, 3))\r\n geometry.computeBoundingBox()\r\n var mtl = new THREE.LineBasicMaterial({ color: 0x000000 })\r\n var mdl = new THREE.LineSegments(geometry, mtl)\r\n return mdl\r\n }\r\n load_mesh = (bb, model_obj) => {\r\n return new Promise((resolve, reject) => {\r\n var xxx = bb\r\n if (xxx == undefined) {\r\n reject()\r\n }\r\n var o2 = this\r\n let geometry = this.load_mesh2(xxx)\r\n geometry.meshid = model_obj['mesh']\r\n let map = o2.map_white\r\n if (\r\n model_obj.mtl &&\r\n model_obj.mtl.map &&\r\n model_obj.mtl.map.image &&\r\n model_obj.mtl.map.image != ''\r\n ) {\r\n map = o2.create_map(model_obj.mtl.map.image)\r\n map.wrapS = THREE.RepeatWrapping\r\n map.wrapT = THREE.RepeatWrapping\r\n map.repeat.set(model_obj.mtl.map.repeat[0], model_obj.mtl.map.repeat[1])\r\n map.offset.set(\r\n model_obj.mtl.map.offset[0],\r\n -model_obj.mtl.map.offset[1]\r\n )\r\n map.rotation = model_obj.mtl.map.rotation\r\n }\r\n let map2 = o2.map_white\r\n if (model_obj.bake_tex != '') {\r\n map2 = o2.create_map(model_obj.bake_tex)\r\n }\r\n let material = new THREE.MeshPhongMaterial({ map: map, lightMap: map2 })\r\n material.o2id = model_obj.mtl.id\r\n o2.materials.push({ id: material.o2id, mtl: material })\r\n if (model_obj.cullMode == 1) {\r\n material.side = THREE.BackSide\r\n } else if (model_obj.cullMode == 2) {\r\n material.side = THREE.DoubleSide\r\n } else {\r\n material.side = THREE.FrontSide\r\n }\r\n material.transparent = model_obj.mtl.transparent\r\n material.alphaTest = model_obj.mtl.alphaTest\r\n if (model_obj.mtl.transparent) {\r\n material.opacity = model_obj.mtl.alpha\r\n }\r\n material.reflectivity = 0\r\n //material.envMap=o2.cubemap;\r\n material.envMap = o2.create_envMap(model_obj.mtl.envMap)\r\n\r\n if (model_obj.aoTex && model_obj.aoTex != '') {\r\n let map3 = o2.create_map(model_obj.aoTex)\r\n if (!model_obj.bake_tex || model_obj.bake_tex == '') {\r\n material.lightMap = map3\r\n } else {\r\n material.aoMap = map3\r\n }\r\n }\r\n material.color = new THREE.Color(model_obj.mtl.dif_color)\r\n //console.log(model_obj);\r\n //new THREE.MeshBasicMaterial( { color: 0xff0000 } )\r\n var mesh = new THREE.Mesh(geometry, material)\r\n mesh.name = model_obj.name\r\n mesh.uuid = model_obj.uuid\r\n var mat = new THREE.Matrix4()\r\n mat.elements = model_obj.wts\r\n mesh.applyMatrix4(mat)\r\n if (o2.import_root != null) {\r\n o2.import_root.add(mesh)\r\n } else {\r\n o2.scene.add(mesh)\r\n }\r\n //return geometry;\r\n resolve(geometry)\r\n })\r\n }\r\n\r\n // 单击事件\r\n // onSceneClick = event => {\r\n // event.preventDefault();\r\n // // var dx = downx - event.offsetX;\r\n // // var dy = downy - event.offsetY;\r\n // var dx = event.offsetX;\r\n // var dy = event.offsetY;\r\n // //if (Math.sqrt(dx * dx + dy * dy) > 4) return;\r\n // this.mouse.x = (event.offsetX / this.WIDTH) * 2 - 1;\r\n // this.mouse.y = - (event.offsetY / (this.HEIGHT)) * 2 + 1;\r\n // this.mouse_down = this.mouse - this.mouse_down;\r\n // this.removeEdgeLine();\r\n // this.unhover_all();\r\n\r\n // console.log('3333')\r\n // console.log(this)\r\n // console.log(event.offsetX)\r\n // console.log(this.WIDTH)\r\n\r\n // this.raycaster.setFromCamera(this.mouse, this.camera);\r\n // //pick\r\n // let allobjs = this.scene.children;\r\n // var intersects = this.raycaster.intersectObjects(allobjs);\r\n // console.log(intersects)\r\n // if (intersects.length > 0) {\r\n // console.log('picked')\r\n // var obj = intersects[0].object;\r\n // return obj;\r\n // }\r\n // }\r\n\r\n getObjById = (id) => {\r\n if (this.scene.children == undefined || this.scene.children.length <= 0) {\r\n return null\r\n }\r\n\r\n let array = this.scene.children\r\n for (let index = 0; index < array.length; index++) {\r\n const element = array[index]\r\n if (element.id == id) {\r\n return element\r\n }\r\n }\r\n }\r\n bind_div_to_world = (posx, posy, posz, earthDiv) => {\r\n if (earthDiv) {\r\n let bind = {}\r\n bind.div = earthDiv\r\n bind.type = 0\r\n bind.position = new THREE.Vector3(posx, posy, posz)\r\n o2.div_bind.push(bind)\r\n }\r\n }\r\n\r\n search_obj_by_guid2 = (uuid) => {\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n var found = this.search_obj_by_guid(this.scene.children[i], uuid)\r\n if (found) {\r\n return found\r\n }\r\n }\r\n return null\r\n }\r\n search_obj_by_guid = (target, uuid) => {\r\n if (target.uuid == uuid) {\r\n return target\r\n }\r\n for (let i = 0; i < target.children.length; i++) {\r\n var found = this.search_obj_by_guid(target.children[i], uuid)\r\n if (found) {\r\n return found\r\n }\r\n }\r\n return null\r\n }\r\n _search_obj_by_name = (target, name) => {\r\n if (target.name == name) {\r\n return target\r\n }\r\n for (let i = 0; i < target.children.length; i++) {\r\n var found = this._search_obj_by_name(target.children[i], name)\r\n if (found) {\r\n return found\r\n }\r\n }\r\n return null\r\n }\r\n\r\n search_obj_by_name = (name) => {\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n var found = this._search_obj_by_name(this.scene.children[i], name)\r\n if (found) {\r\n return found\r\n }\r\n }\r\n return null\r\n }\r\n ///\r\n\r\n //20210927 by wmf\r\n load_skeleton_animate = (skeleton_url, name, callback) => {\r\n var loader = new FBXLoader() //创建一个FBX加载器\r\n var that = this\r\n loader.load(skeleton_url, function (obj) {\r\n // console.log(obj)\r\n obj.name = name\r\n obj.clips = []\r\n obj.traverse(function (child) {\r\n if (child.isMesh) {\r\n child.castShadow = true\r\n child.receiveShadow = true\r\n }\r\n if (child.isLight) child.visible = false;\r\n })\r\n\r\n // obj作为参数创建一个混合器,解析播放obj及其子对象包含的动画数据\r\n var mixer = new THREE.AnimationMixer(obj)\r\n var skeleton = { name: name, obj: obj, mixer: mixer }\r\n that.skeletons.push(skeleton)\r\n if (callback) {\r\n callback(skeleton)\r\n }\r\n })\r\n }\r\n load_skeleton_clip = (clip_url, skeleton_obj, clipName, callback) => {\r\n var loader = new FBXLoader()\r\n loader.load(clip_url, (obj) => {\r\n this.skeletons.forEach((e) => {\r\n if (\r\n e.obj == skeleton_obj &&\r\n obj.animations &&\r\n obj.animations.length > 0\r\n ) {\r\n if (!e.clips) {\r\n e.clips = {}\r\n }\r\n e.clips[clipName] = obj.animations[0]\r\n if (callback) {\r\n callback()\r\n }\r\n }\r\n })\r\n })\r\n }\r\n set_skeleton = (name, pos, scale, rot) => {\r\n var that = this\r\n that.skeletons.forEach((element) => {\r\n if (element['name'] == name) {\r\n if (pos) {\r\n element['obj'].position.set(pos.x, pos.y, pos.z)\r\n }\r\n if (scale) {\r\n element['obj'].scale.set(scale.x, scale.y, scale.z)\r\n }\r\n if (rot) {\r\n element['obj'].rotation.set(rot.x, rot.y, rot.z)\r\n }\r\n //\r\n }\r\n })\r\n }\r\n play_skeleton = (name, id, loop) => {\r\n var that = this\r\n that.skeletons.forEach((element) => {\r\n if (element['name'] == name) {\r\n // 查看动画数据\r\n //console.log(element[\"obj\"].animations)\r\n if (element['mixer'] != null) {\r\n var AnimationAction = element['mixer'].clipAction(\r\n element['obj'].animations[id]\r\n )\r\n // console.log(element[\"mixer\"]);\r\n // AnimationAction.timeScale = 1; //默认1,可以调节播放速度\r\n if (loop) {\r\n AnimationAction.loop = THREE.LoopRepeat //不循环播放\r\n } else {\r\n AnimationAction.loop = THREE.LoopOnce\r\n }\r\n // AnimationAction.loop = THREE.LoopOnce; //不循环播放\r\n // AnimationAction.clampWhenFinished=true;//暂停在最后一帧播放的状态\r\n AnimationAction.play() //播放动画\r\n }\r\n }\r\n })\r\n }\r\n play_skeleton_clip = (object, clipName, loop) => {\r\n var that = this\r\n that.skeletons.forEach((element) => {\r\n if (element['obj'] == object) {\r\n // 查看动画数据\r\n //console.log(clip)\r\n if (element.clips && element.clips[clipName]) {\r\n let clip = element.clips[clipName]\r\n if (element['mixer'] != null && clip) {\r\n var action = element['mixer'].clipAction(clip, element.obj)\r\n if (element.curAction) {\r\n element.curAction.enabled = true\r\n element.curAction.crossFadeTo(action, 0.2)\r\n }\r\n action.enabled = true\r\n element.curAction = action\r\n // AnimationAction.timeScale = 1; //默认1,可以调节播放速度\r\n if (loop) {\r\n action.loop = THREE.LoopRepeat //不循环播放\r\n object.clip_name = clipName\r\n } else {\r\n action.loop = THREE.LoopOnce\r\n }\r\n // AnimationAction.loop = THREE.LoopOnce; //不循环播放\r\n // AnimationAction.clampWhenFinished=true;//暂停在最后一帧播放的状态\r\n action.play() //播放动画\r\n }\r\n }\r\n }\r\n })\r\n }\r\n animate_skeleton = () => {\r\n requestAnimationFrame(this.animate_skeleton) //请求再次执行渲染函数render,渲染下一帧\r\n\r\n var that = this\r\n let passTime = that.clock.getDelta()\r\n that.skeletons.forEach((element) => {\r\n if (element['mixer'] !== null) {\r\n //clock.getDelta()方法获得两帧的时间间隔\r\n element['mixer'].update(passTime)\r\n //console.log(that.clock.getDelta());\r\n }\r\n })\r\n }\r\n\r\n rebuild_list_tree = () => {\r\n if (this.tree) {\r\n let _tree = this.tree\r\n for (var i in _tree) {\r\n let target = this.search_obj_by_guid(this.scene, _tree[i].uuid)\r\n if (target == null) {\r\n target = new THREE.Object3D()\r\n target.name = _tree[i].parent_name\r\n target.uuid = _tree[i].uuid\r\n target.type = 'Object3D'\r\n\r\n let mat0 = new THREE.Matrix4()\r\n mat0.elements = _tree[i].wts\r\n if (_tree[i].offset) {\r\n let offset = new THREE.Matrix4()\r\n offset.elements = _tree[i].offset\r\n mat0.multiply(offset)\r\n }\r\n target.applyMatrix4(mat0)\r\n\r\n this.scene.add(target)\r\n\r\n let _childs = _tree[i].child_guid\r\n for (var j in _childs) {\r\n let guid = _childs[j]\r\n let obj = this.search_obj_by_guid(this.scene, guid)\r\n if (obj && target) {\r\n // let mat1 = obj.matrixWorld.clone();\r\n // let mat = target.matrixWorld.clone();\r\n // mat.getInverse(mat);\r\n // mat.multiply(mat1);\r\n\r\n let mat1 = new THREE.Matrix4()\r\n mat1.elements = _tree[i].local[j]\r\n if (_tree[i].offset) {\r\n let offset = new THREE.Matrix4()\r\n offset.elements = _tree[i].offset\r\n var offsetinv = new THREE.Matrix4().getInverse(offset)\r\n mat1.premultiply(offsetinv)\r\n }\r\n obj.parent.remove(obj)\r\n target.add(obj)\r\n obj.position.set(0, 0, 0)\r\n obj.scale.set(1, 1, 1)\r\n obj.quaternion.set(0, 0, 0, 1)\r\n obj.applyMatrix4(mat1)\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.tree = []\r\n }\r\n }\r\n get_video_tex(src, loop) {\r\n if (!this.video) {\r\n this.video = document.createElement('video')\r\n //this.video.setAttribute(\"type\",'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"');\r\n this.video.setAttribute('style', 'display: none')\r\n this.video.setAttribute('crossOrigin', 'anonymous')\r\n this.video.preload = 'none'\r\n this.video.setAttribute('webkit-playsinline', 'true')\r\n this.video.setAttribute('playsinline', 'true')\r\n this.video.onload = ()=>{\r\n this.video.setAttribute('muted','false');\r\n }\r\n }\r\n this.video.setAttribute('src', src)\r\n this.video.load()\r\n if (loop) {\r\n this.video.setAttribute('loop', 'loop')\r\n } else {\r\n this.video.setAttribute('loop', '')\r\n }\r\n this.video.setAttribute('muted','true');\r\n let tex = new THREE.VideoTexture(this.video)\r\n tex.wrapS = THREE.RepeatWrapping\r\n tex.wrapT = THREE.RepeatWrapping\r\n this.video.play()\r\n this.videoTex = tex;\r\n tex.needsUpdate = true;\r\n return tex\r\n }\r\n shot() {\r\n let image = new Image()\r\n this.renderer.render(this.scene, this.camera) //renderer为three.js里的渲染器,scene为场景 camera为相机\r\n let imgData = this.renderer.domElement.toDataURL('image/jpeg') //这里可以选择png格式jpeg格式\r\n image.src = imgData\r\n return imgData\r\n //document.body.appendChild(image);//这样就可以查看截出来的图片了\r\n }\r\n\r\n stop_video_tex() {\r\n if (this.video) {\r\n this.video.pause()\r\n }\r\n }\r\n create_video_stream_tex(id) {\r\n if (!this.video_stream_data_list) {\r\n this.video_stream_data_list = []\r\n }\r\n let video_stream_data\r\n for (let i = 0; i < this.video_stream_data_list.length; i++) {\r\n let data = this.video_stream_data_list[i]\r\n if (data.id == id) {\r\n video_stream_data = data\r\n break\r\n }\r\n }\r\n if (!video_stream_data) {\r\n video_stream_data = {}\r\n video_stream_data.id = id\r\n video_stream_data.videoPlayer = document.createElement('video')\r\n video_stream_data.videoPlayer.setAttribute('style', 'display: none')\r\n video_stream_data.videoPlayer.setAttribute('crossOrigin', 'anonymous')\r\n video_stream_data.videoPlayer.preload = 'none'\r\n video_stream_data.videoPlayer.id = id\r\n video_stream_data.tex = new THREE.VideoTexture(this.video)\r\n video_stream_data.tex.wrapS = THREE.RepeatWrapping\r\n video_stream_data.tex.wrapT = THREE.RepeatWrapping\r\n this.video_stream_data_list.push(video_stream_data)\r\n }\r\n video_stream_data.videoPlayer.play()\r\n return video_stream_data.tex\r\n }\r\n stop_video_stream_tex(id) {\r\n if (this.video_stream_data_list) {\r\n let video_stream_data\r\n for (let i = 0; i < this.video_stream_data_list.length; i++) {\r\n let data = this.video_stream_data_list[i]\r\n if (data.id == id) {\r\n video_stream_data = data\r\n break\r\n }\r\n }\r\n if (video_stream_data) {\r\n video_stream_data.videoPlayer.pause()\r\n video_stream_data.tex.dispose()\r\n document.removeChild(video_stream_data.videoPlayer)\r\n this.video_stream_data.remove(video_stream_data)\r\n video_stream_data = undefined\r\n }\r\n }\r\n }\r\n show_renderer_stats() {\r\n if (!this.rendererStats) {\r\n this.create_renderer_stats()\r\n }\r\n this.rendererStats.bShow = !this.rendererStats.bShow\r\n if (this.rendererStats.bShow) {\r\n this.container.appendChild(this.rendererStats.domElement)\r\n } else {\r\n this.container.removeChild(this.rendererStats.domElement)\r\n }\r\n }\r\n create_renderer_stats() {\r\n //console.log(\"create renderer stats\");\r\n this.rendererStats = this.RendererStats()\r\n this.rendererStats.bShow = false\r\n this.rendererStats.domElement.style.position = 'absolute'\r\n this.rendererStats.domElement.style.right = '0px'\r\n this.rendererStats.domElement.style.top = '0px'\r\n }\r\n RendererStats = function () {\r\n var msMin = 100\r\n var msMax = 0\r\n\r\n var container = document.createElement('div')\r\n container.style.cssText = 'width:80px;opacity:0.9;cursor:pointer'\r\n\r\n var msDiv = document.createElement('div')\r\n msDiv.style.cssText =\r\n 'padding:0 0 3px 3px;text-align:left;background-color:#200;'\r\n container.appendChild(msDiv)\r\n\r\n var msText = document.createElement('div')\r\n msText.style.cssText =\r\n 'color:#f00;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'\r\n msText.innerHTML = 'WebGLRenderer'\r\n msDiv.appendChild(msText)\r\n\r\n var msTexts = []\r\n var nLines = 9\r\n for (var i = 0; i < nLines; i++) {\r\n msTexts[i] = document.createElement('div')\r\n msTexts[i].style.cssText =\r\n 'color:#f00;background-color:#311;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'\r\n msDiv.appendChild(msTexts[i])\r\n msTexts[i].innerHTML = '-'\r\n }\r\n\r\n var lastTime = Date.now()\r\n return {\r\n domElement: container,\r\n\r\n update: function (webGLRenderer) {\r\n // sanity check\r\n console.assert(webGLRenderer instanceof THREE.WebGLRenderer)\r\n\r\n // refresh only 30time per second\r\n //if( Date.now() - lastTime < 1000/30 )\treturn;\r\n //lastTime\t= Date.now()\r\n\r\n var i = 0\r\n msTexts[i++].textContent = '== Memory ====='\r\n msTexts[i++].textContent =\r\n 'Programs: ' + webGLRenderer.info.memory.programs\r\n msTexts[i++].textContent =\r\n 'Geometries: ' + webGLRenderer.info.memory.geometries\r\n msTexts[i++].textContent =\r\n 'Textures: ' + webGLRenderer.info.memory.textures\r\n\r\n msTexts[i++].textContent = '== Render ====='\r\n msTexts[i++].textContent = 'Calls: ' + webGLRenderer.info.render.calls\r\n msTexts[i++].textContent =\r\n 'Vertices: ' + webGLRenderer.info.render.vertices\r\n msTexts[i++].textContent = 'Faces: ' + webGLRenderer.info.render.faces\r\n //msTexts[i++].textContent = \"Points: \"\t+ webGLRenderer.info.render.points;\r\n msTexts[i++].textContent =\r\n 'frame: ' + Math.floor(1000 / (Date.now() - lastTime))\r\n lastTime = Date.now()\r\n }\r\n }\r\n }\r\n _collect_syn_materials(map, object) {\r\n if (object.material && object.material.o2id && object.material.o2id != \"\") {\r\n let old = map.get(object.material.o2id);\r\n if (old) {\r\n old.push(object.material);\r\n } else {\r\n let news = [];\r\n news.push(object.material);\r\n map.set(object.material.o2id, news);\r\n }\r\n }\r\n for (let i = 0; i < object.children.length; i++) {\r\n this._collect_syn_materials(map, object.children[i]);\r\n }\r\n }\r\n collect_syn_materials = () => {\r\n let map1 = new Map;\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n this._collect_syn_materials(map1, this.scene.children[i]);\r\n }\r\n this.synMaterials = new Map;\r\n for (let [key, value] of map1) {\r\n if (value.length > 1) {\r\n this.synMaterials.set(key, value);\r\n }\r\n }\r\n }\r\n _update_all_mtl(obj) {\r\n if (obj && obj.material) obj.material.needsUpdate = true;\r\n for (let i = 0; i < obj.children.length; i++) {\r\n this._update_all_mtl(obj.children[i]);\r\n }\r\n }\r\n update_all_mtl = () => {\r\n for (let i = 0; i < this.scene.children.length; i++) {\r\n this._update_all_mtl(this.scene.children[i]);\r\n }\r\n }\r\n syn_material = (object) => {\r\n if (object && object.material && object.material.o2id && this.synMaterials) {\r\n let o2id = object.material.o2id;\r\n let arr = this.synMaterials.get(o2id);\r\n if (arr) {\r\n let mtls = object.material;\r\n for (let i = 0; i < arr.length; i++) {\r\n let mtl = arr[i];\r\n if (mtl.type != mtls.type) continue;\r\n if (mtl == mtls) continue;\r\n mtl.color.setHex(mtls.color.getHex());\r\n mtl.map=mtls.map;\r\n mtl.envMap=mtls.envMap;\r\n mtl.normalMap=mtls.normalMap;\r\n if (mtl.type == \"MeshPhongMaterial\") {\r\n mtl.emissive.setHex(mtls.emissive.getHex());\r\n mtl.specular.setHex(mtls.specular.getHex());\r\n let oldcombine = mtl.combine;\r\n mtl.combine = mtls.combine;\r\n if (oldcombine != mtl.combine) {\r\n obj2.mtl.needsUpdate = true;\r\n }\r\n mtl.reflectivity = mtls.reflectivity;\r\n mtl.lightMapIntensity = mtls.lightMapIntensity;\r\n mtl.emissiveIntensity = mtls.emissiveIntensity;\r\n mtl.aoMapIntensity = mtls.aoMapIntensity;\r\n // mtl.normalScale.x = mtls.XnormalScale;\r\n // mtl.normalScale.y = mtls.YnormalScale;\r\n mtl.shininess = mtls.shininess;\r\n mtl.transparent = mtls.transparent;\r\n mtl.opacity = mtls.opacity;\r\n mtl.alphaTest = mtls.alphaTest;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n update_frame_rate(time){\r\n let pass_time = (time - this.last_frame_time)/1000;\r\n this.total_time += pass_time;\r\n this.frame_total_count++;\r\n this.last_frame_time = time;\r\n //this.arr_frame_time.push(pass_time);\r\n //每2秒平均帧率\r\n if(this.total_time>=2){\r\n this.frame_rate = 1/(this.total_time/this.frame_total_count);\r\n this.total_time = 0;\r\n this.frame_total_count = 0;\r\n if(this.on_update_frame_rate){\r\n this.on_update_frame_rate(this.frame_rate);\r\n }\r\n //this.total_time -= this.arr_frame_time[0];\r\n //this.arr_frame_time.splice(0,1);\r\n }\r\n //this.frame_rate = 1/(this.total_time/this.arr_frame_time.length);\r\n //console.log(frame_rate);\r\n }\r\n\r\n}\r\n\r\nexport { o2vr }\r\n","import axios from \"axios\";\r\nimport QS from \"qs\";\r\nimport { Message } from 'element-ui'\r\n\r\naxios.defaults.baseURL = \"https://vryun.wh12345.net/api/\";\r\n\r\naxios.defaults.headers.post[\"Content-Type\"] =\r\n \"application/x-www-form-urlencoded; charset=UTF-8\";\r\nexport function get(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(url, {\r\n params: params, headers: {\r\n \"xx-token\": localStorage.getItem(\"token\") ? localStorage.getItem(\"token\") : '',\r\n }\r\n })\r\n .then((res) => {\r\n\r\n resolve(res.data);\r\n\r\n })\r\n .catch((err) => {\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\nexport function post(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(url, QS.stringify(params), {\r\n headers: {\r\n \"xx-token\": localStorage.getItem(\"token\") ? localStorage.getItem(\"token\") : '',\r\n },\r\n })\r\n .then((res) => {\r\n\r\n\r\n resolve(res.data);\r\n\r\n })\r\n .catch((err) => {\r\n\r\n\r\n\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\nexport function getuser(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post(\r\n url,\r\n {\r\n params: params,\r\n },\r\n {\r\n headers: {\r\n \"XX-Token\": localStorage.getItem(\"token\"),\r\n \"XX-Device-Type\": \"pc\",\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n resolve(res.data)\r\n })\r\n .catch((err) => {\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\n\r\nexport function update(url, params) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get(url, {\r\n params: params,\r\n })\r\n .then((res) => {\r\n resolve(res.data);\r\n })\r\n .catch((err) => {\r\n reject(err.data);\r\n });\r\n });\r\n}\r\n\r\nexport default axios.create({\r\n baseURL: \"\",\r\n timeout: 10000,\r\n});\r\n","\r\nimport { LUTCubeLoader } from 'three/examples/jsm/loaders/LUTCubeLoader.js';\r\n\r\nimport * as THREE from 'three/build/three.module';\r\nimport { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';\r\nimport { TransformControls } from 'three/examples/jsm/controls/TransformControls';\r\nimport {\r\n gen_oss_url, get_solo_media\r\n} from \"../../showroom/assets/api/index\";\r\nimport Bus from \"./bus\"\r\nclass _area_hot_trigger {\r\n constructor() {\r\n this.enter_type = 0;//进入触发 0=无 1=触发一个展项 2=关闭展项 3=打开一个动画 4=关闭一个动画\r\n this.enter_target = \"\";//触发对象的名称 type==1的时候是showbox的title type==2||type==3的时候是动画的名称 \r\n this.leave_type = 0;//离开热点区域,同上\r\n this.leave_target = \"\";\r\n this.wts = null;//位置,存储用\r\n this.type_geo = 0;//0=BOX 1=SPHERE\r\n this.bInside = false;//临时存储,角色是否在区域内\r\n }\r\n\r\n to_json = () => {\r\n let obj = {};\r\n if (this.enter_type != 0) obj.enter_type = this.enter_type;\r\n if (this.enter_target != \"\") obj.enter_target = document.showroom.encode64(document.showroom.utf16to8(this.enter_target));\r\n if (this.leave_type != 0) obj.leave_type = this.leave_type;\r\n if (this.leave_target != \"\") obj.leave_target = document.showroom.encode64(document.showroom.utf16to8(this.leave_target));\r\n if (this.type_geo != 0) obj.type_geo = this.type_geo;\r\n return obj;\r\n }\r\n from_json = (json_obj) => {\r\n if (json_obj.enter_type) this.enter_type = json_obj.enter_type;\r\n if (json_obj.leave_type) this.leave_type = json_obj.leave_type;\r\n if (json_obj.enter_target) this.enter_target = document.showroom.utf8to16(document.showroom.decode64(json_obj.enter_target));\r\n if (json_obj.leave_target) this.leave_target = document.showroom.utf8to16(document.showroom.decode64(json_obj.leave_target));\r\n if (json_obj.type_geo) this.type_geo = json_obj.type_geo;\r\n }\r\n}\r\nclass _showbox {\r\n constructor() {\r\n this.title = null;//标题\r\n this.Hyperlinks = null;//超链接\r\n this.text = null;//文字\r\n this.res_list = [];\r\n this.voice_res = null;//音频资源\r\n this.url = null;\r\n this.urlPopType = 0;//0=新窗口弹窗 1=iframe嵌入\r\n this.bPopUp = false;//是否弹出,没有的话触发会直接播放音视频而不弹出信息框\r\n this.linkFlag = null;\r\n }\r\n\r\n to_json = () => {\r\n\r\n let obj = {};\r\n\r\n\r\n\r\n if (this.linkFlag) obj.linkFlag = this.linkFlag;\r\n\r\n if (this.linkValue) obj.linkValue = this.linkValue\r\n if (this.Hyperlinks) obj.Hyperlinks = this.Hyperlinks;\r\n if (this.title) obj.title = document.showroom.encode64(document.showroom.utf16to8(this.title));\r\n\r\n console.log(obj.title)\r\n if (this.text) obj.text = document.showroom.encode64(document.showroom.utf16to8(this.text));\r\n if (this.voice_res) obj.voiceid = this.voice_res.id;\r\n if (this.bPopUp) {\r\n obj.bPopUp = this.bPopUp\r\n }\r\n else {\r\n obj.bPopUp = false\r\n };\r\n\r\n\r\n if (this.urlPopType != 0) obj.b\r\n if (this.res_list.length) {\r\n obj.res_list = [];\r\n for (let i = 0; i < this.res_list.length; i++) obj.res_list.push(this.res_list[i].id);\r\n }\r\n return obj;\r\n }\r\n collect_res = (sets) => {\r\n\r\n if (this.voice_res) sets.add(this.voice_res.id);\r\n if (this.res_list.length) {\r\n for (let i = 0; i < this.res_list.length; i++) sets.add(this.res_list[i].id);\r\n }\r\n }\r\n from_json = (json_obj, sr) => {\r\n\r\n this.res_list = [];\r\n if (json_obj.Hyperlinks) this.Hyperlinks = json_obj.Hyperlinks;\r\n if (json_obj.linkFlag) this.linkFlag = json_obj.linkFlag;\r\n if (json_obj.title) this.title = document.showroom.utf8to16(\r\n document.showroom.decode64(json_obj.title)\r\n );\r\n if (json_obj.text) this.text = document.showroom.utf8to16(\r\n document.showroom.decode64(json_obj.text)\r\n );;\r\n\r\n if (json_obj.bPopUp) { this.bPopUp = json_obj.bPopUp } else {\r\n this.bPopUp = false\r\n };\r\n if (json_obj.resid) {\r\n let res = sr.user_item_info[json_obj.resid.toString()];\r\n if (res) this.res_list.push(res);\r\n }\r\n if (json_obj.voiceid) {\r\n this.voice_res = sr.user_item_info[json_obj.voiceid.toString()];\r\n }\r\n if (json_obj.res_list) {\r\n for (let i = 0; i < json_obj.res_list.length; i++) {\r\n let res = sr.user_item_info[json_obj.res_list[i].toString()];\r\n if (res) this.res_list.push(res);\r\n }\r\n }\r\n\r\n if (json_obj.linkValue) {\r\n this.linkValue = json_obj.linkValue\r\n }\r\n }\r\n}\r\nclass showroom {\r\n constructor() {\r\n this.o2 = null;\r\n this.room = {\r\n\r\n }\r\n this.moveFlag = true\r\n this.hots = [];\r\n this.models = [];\r\n this.show_boxes = [];\r\n this.hot_areas = [];\r\n this.hot_urls = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"\r\n // document.showroom.getUrl(\"hotpot/6.zip\"),\r\n // document.showroom.getUrl(\"hotpot/6.zip\"),\r\n ];\r\n\r\n }\r\n focus = () => {\r\n document.showroom.moveFlag = false\r\n\r\n }\r\n blur = () => {\r\n document.showroom.moveFlag = true\r\n }\r\n test_bind_click = (object) => {\r\n return object.showbox;\r\n }\r\n record_guide_view = () => {\r\n this.room.guide = this.o2.getView();\r\n }\r\n get_object_bind = (object) => {\r\n if (!this.room.bind) return null;\r\n for (let i = 0; i < this.room.bind.length; i++) {\r\n let bind = this.room.bind[i];\r\n if (bind.uuid == object.uuid) return bind;\r\n }\r\n return null;\r\n }\r\n _collect_obj_showbox = (obj1, sbs) => {\r\n if (obj1.showbox) {\r\n sbs.push(obj1);\r\n }\r\n for (let i = 0; i < obj1.children.length; i++) {\r\n let obj = obj1.children[i];\r\n this._collect_obj_showbox(obj, sbs);\r\n }\r\n }\r\n collect_showboxes = () => {\r\n let sbs = [];\r\n for (let i = 0; i < this.o2.scene.children.length; i++) {\r\n let obj = this.o2.scene.children[i];\r\n this._collect_obj_showbox(obj, sbs);\r\n }\r\n return sbs;\r\n }\r\n collect_animations = () => {\r\n return this.o2.animation.timelines;\r\n }\r\n before_save = () => {\r\n //收集用户资源\r\n this.room.user_item = [];\r\n let sets = new Set;\r\n if (this.room.bind) {\r\n for (let i = 0; i < this.room.bind.length; i++) {\r\n sets.add(this.room.bind[i].resid);\r\n }\r\n }\r\n for (let i = 0; i < this.o2.exhibition.objects.length; i++) {\r\n let object = this.o2.exhibition.objects[i];\r\n let bind = this.get_object_bind(object);\r\n if (bind && object.showbox) {\r\n bind.sb = object.showbox.to_json();\r\n if (object.bind_id) {\r\n sets.add(object.bind_id);\r\n }\r\n object.showbox.collect_res(sets);\r\n }\r\n }\r\n this.room.hots = [];\r\n for (let i = 0; i < this.hots.length; i++) {\r\n let hot = this.hots[i];\r\n let obj = {};\r\n obj.id = hot.hot_idx;\r\n obj.wts = hot.matrix;\r\n obj.scale = hot.hot_scale;\r\n if (hot.showbox) {\r\n obj.sb = hot.showbox.to_json();\r\n hot.showbox.collect_res(sets);\r\n }\r\n this.room.hots.push(obj);\r\n }\r\n if (this.lutName) {\r\n this.room.lutName = this.lutName;\r\n }\r\n this.room.hot_areas = [];\r\n for (let i = 0; i < this.hot_areas.length; i++) {\r\n let hot = this.hot_areas[i];\r\n let obj = hot.aht.to_json();\r\n obj.wts = hot.matrix;\r\n this.room.hot_areas.push(obj);\r\n }\r\n\r\n if (this.models) {\r\n this.room.user_model = [];\r\n for (let i = 0; i < this.models.length; i++) {\r\n let model = this.models[i];\r\n if (model.item) {\r\n let mdl_item = {};\r\n mdl_item.resid = model.item.id;\r\n mdl_item.wts = model.matrix;\r\n mdl_item.binds = [];\r\n this.collect_model_bind(model, mdl_item.binds, \"\", sets);\r\n this.room.user_model.push(mdl_item);\r\n sets.add(model.item.id);\r\n }\r\n }\r\n }\r\n for (let item of sets.keys()) {\r\n this.room.user_item.push(item);\r\n }\r\n //camera\r\n this.room.camera_record = null;\r\n if (this.get_record_json) {\r\n this.room.camera_record = this.get_record_json();\r\n }\r\n }\r\n\r\n collect_model_bind = (model, binds, depth, sets) => {\r\n if (model.bind_id) {\r\n let b = {};\r\n b.depth = depth;\r\n b.bind_id = model.bind_id;\r\n sets.add(b.bind_id);\r\n if (model.showbox) {\r\n model.showbox.collect_res(sets);\r\n b.sb = model.showbox.to_json();\r\n }\r\n binds.push(b);\r\n }\r\n for (let i = 0; i < model.children.length; i++) {\r\n let depth2 = depth + \"_\" + i;\r\n this.collect_model_bind(model.children[i], binds, depth2, sets);\r\n }\r\n }\r\n\r\n bind_items = () => {\r\n if (this.room.bind) {\r\n for (let i = 0; i < this.room.bind.length; i++) {\r\n let resid = this.room.bind[i].resid;\r\n let object_id = this.room.bind[i].uuid;\r\n let sb = this.room.bind[i].sb;\r\n let object;\r\n\r\n for (let i = 0; i < this.o2.exhibition.objects.length; i++) {\r\n let obj = this.o2.exhibition.objects[i];\r\n if (obj.uuid == object_id) { object = obj; break; }\r\n }\r\n let res = this.user_item_info[resid.toString()];\r\n if (object && res) {\r\n\r\n this.add_exhibition_item(object, res);\r\n\r\n if (sb)//有保存showbox\r\n {\r\n\r\n object.showbox.from_json(sb, this);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n get_model_exhibition_item = (model, objects) => {\r\n if (model.type == \"Mesh\" && (model.bChangeMap == true || model.material.map == this.o2.map_red || model.bind_id)) {\r\n objects.push(model);\r\n }\r\n\r\n for (let i = 0, l = model.children.length; i < l; i++) {\r\n this.get_model_exhibition_item(model.children[i], objects);\r\n }\r\n }\r\n\r\n getUrl = () => {\r\n this.hot_urls = [\r\n \"https://o2vr.net/hots/6.zip\",\r\n \"https://o2vr.net/hots/7.zip\",\r\n \"https://o2vr.net/hots/8.zip\",\r\n \"https://o2vr.net/hots/9.zip\",\r\n \"https://o2vr.net/hots/11.zip\",\r\n \"https://o2vr.net/hots/12.zip\",\r\n \"https://o2vr.net/hots/13.zip\",\r\n \"https://o2vr.net/hots/15.zip\",\r\n \"https://o2vr.net/hots/16.zip\",\r\n \"https://o2vr.net/hots/17.zip\",\r\n ]\r\n // list.forEach((e, i) => {\r\n // setTimeout(() => {\r\n // gen_oss_url({ object: e }).then(res => {\r\n // // console.log(this.hot_urls, res)\r\n // this.hot_urls[i] = res\r\n // // console.log(this.hot_urls)\r\n // })\r\n // }, 500);\r\n // })\r\n // console.log(this.hot_urls);\r\n }\r\n get_all_exhibition_items = () => {\r\n if (!this.o2.exhibition) {\r\n this.o2.exhibition = {};\r\n }\r\n if (!this.o2.exhibition.objects) {\r\n this.o2.exhibition.objects = [];\r\n }\r\n let objects = this.o2.exhibition.objects;\r\n for (let i = 0; i < this.models.length; i++) {\r\n this.get_model_exhibition_item(this.models[i], objects);\r\n }\r\n return objects;\r\n }\r\n\r\n\r\n add_hot_area = (intersection, item) => {\r\n let showroom = this;\r\n let geometry;\r\n if (item == 0) geometry = new THREE.BoxGeometry(2000, 2000, 2000);\r\n else geometry = new THREE.SphereGeometry(1000, 12, 12);\r\n let obj3 = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial({ opacity: 0.5, transparent: true }));\r\n if (!this.hot_area_parent) {\r\n this.hot_area_parent = new THREE.Object3D();\r\n showroom.o2.scene.add(this.hot_area_parent);\r\n }\r\n if (obj3) {\r\n obj3.bHot_area = true;\r\n obj3.aht = new _area_hot_trigger;\r\n obj3.aht.type_geo = item;\r\n showroom.o2.renew_all_uuid(obj3);\r\n showroom.hot_areas.push(obj3);\r\n obj3.position.set(intersection.point.x, intersection.point.y, intersection.point.z);\r\n //移动到物体表面来\r\n let nor = intersection.face.normal.clone();\r\n nor.applyEuler(intersection.object.rotation);\r\n nor.multiplyScalar(100);\r\n obj3.position.add(nor);\r\n this.hot_area_parent.add(obj3);\r\n //添加鼠标工具\r\n {\r\n showroom.set_gizmo_object(obj3);\r\n showroom.set_gizmo_mode(1);\r\n }\r\n }\r\n return obj3;\r\n }\r\n\r\n add_hot_item = (intersection, item) => {\r\n let showroom = this;\r\n let idx = item;\r\n if (item.name == \"手势\") idx = 1;\r\n let url = this.hot_urls[idx];\r\n\r\n let promise = this.o2.import_object_url(url);\r\n promise.then((obj3) => {\r\n if (obj3) {\r\n obj3.hot = true;\r\n obj3.hot_idx = idx;\r\n obj3.hot_scale = 1;\r\n showroom.o2.renew_all_uuid(obj3);\r\n showroom.hots.push(obj3);\r\n showroom.o2.scene.add(obj3);\r\n obj3.position.set(intersection.point.x, intersection.point.y, intersection.point.z);\r\n //移动到物体表面来\r\n let nor = intersection.face.normal.clone();\r\n nor.applyEuler(intersection.object.rotation);\r\n nor.multiplyScalar(100);\r\n obj3.position.add(nor);\r\n\r\n\r\n obj3.showbox = new _showbox;\r\n //添加鼠标工具\r\n {\r\n showroom.set_gizmo_object(obj3);\r\n showroom.set_gizmo_mode(1);\r\n }\r\n if (this.on_add_hot_finish) {\r\n this.on_add_hot_finish(obj3)\r\n }\r\n }\r\n })\r\n }\r\n scale_hot = (item, scale) => {\r\n if (item) {\r\n if (item.hot_scale == null) {\r\n item.hot_scale = 1;\r\n }\r\n let s = scale / item.hot_scale;\r\n item.hot_scale = scale;\r\n item.scale.multiplyScalar(s);\r\n console.log(\"scale_hot\" + s);\r\n }\r\n }\r\n generate_guide_bb = () => {\r\n if (this.guide_obj) this.o2.scene.remove(this.guide_obj);\r\n this.guide_obj = new THREE.Object3D;\r\n this.o2.scene.add(this.guide_obj);\r\n this.guide_obj.visible = false;\r\n if (this.room.viewList) {\r\n for (let i = 0; i < this.room.viewList.length; i++) {\r\n let viewstr = this.room.viewList[i].view;\r\n var view = viewstr.split(\",\");\r\n let pos = new THREE.Vector3;\r\n pos.set(parseInt(view[6]), parseInt(view[7]), parseInt(view[8]));\r\n let canvas = document.createElement(\"canvas\");\r\n canvas.width = 160;\r\n canvas.height = 16;\r\n const drawingContext = canvas.getContext(\"2d\");\r\n drawingContext.fillStyle = \"#000000\";\r\n drawingContext.globalAlpha = 0.8;\r\n drawingContext.fillRect(0, 0, 160, 16);\r\n drawingContext.globalAlpha = 1;\r\n drawingContext.fillStyle = \"#ffffff\";\r\n drawingContext.font = \"12px Georgia\";\r\n drawingContext.textAlign = \"center\";\r\n drawingContext.fillText(this.room.viewList[i].name, 80, 13);\r\n let map = new THREE.CanvasTexture(canvas);\r\n let sprite = new THREE.Sprite(\r\n new THREE.SpriteMaterial({ map: map, color: \"#ffffff\" })\r\n );\r\n sprite.guide_view = viewstr;\r\n sprite.position.set(pos.x, pos.y + 3000, pos.z);\r\n sprite.scale.set(3000, 300, 1);\r\n sprite.material.depthWrite = false;\r\n sprite.material.depthTest = false;\r\n this.guide_obj.add(sprite);\r\n }\r\n }\r\n }\r\n switch_lut = (name) => {\r\n console.log(name)\r\n if (name == \"原始\") {\r\n if (this.o2.lutPass) {\r\n this.o2.lutPass.intensity = 0;\r\n }\r\n } else {\r\n if (1) {\r\n console.log(this.o2.postEffect);\r\n this.o2.postEffect.bDefaultRender = false;\r\n this.o2.postEffect.fxaa = true;\r\n this.o2.postEffect.lut = true;\r\n this.o2.postEffect.glow = false;\r\n this.o2.postEffect.lutFile = \"https://o2vr.net/luts/\" + name + \".cube\";\r\n this.o2.postEffect.lutPower = 1;\r\n this.o2.create_render_pass();\r\n\r\n\r\n } else {\r\n if (this.o2.lutPass) {\r\n this.o2.lutPass.intensity = 1;\r\n let o2 = this.o2;\r\n if (1) {\r\n new LUTCubeLoader()\r\n .load(\"https://o2vr.net/luts/\" + name + \".cube\", function (result) {\r\n o2.lutPass.lut = result.texture3D;\r\n o2.lutPass.enabled = true;\r\n });\r\n }\r\n }\r\n }\r\n }\r\n this.lutName = name;\r\n \r\n this.o2.create_render_pass();\r\n }\r\n prepare_run = () => {\r\n let all_objects = this.get_all_exhibition_items();\r\n this.click_able_items = [];\r\n for (let i = 0; i < all_objects.length; i++) {\r\n let obj = all_objects[i];\r\n if (obj.showbox) {\r\n this.click_able_items.push(obj);\r\n }\r\n }\r\n\r\n if (this.room.view) {\r\n this.o2.toView(this.room.view);\r\n }\r\n for (let i = 0; i < this.o2.animation.timelines.length; i++) {\r\n let tl = this.o2.animation.timelines[i];\r\n if (tl.name.substr(0, 5) == \"_loop\") {\r\n tl.play();\r\n }\r\n }\r\n this.generate_guide_bb();\r\n if (this.gizmo) {\r\n this.gizmo.detach();\r\n }\r\n }\r\n set_fbx_mtl = (obj) => {\r\n if (obj.type == \"Mesh\" && obj.material && obj.material.type == \"MeshPhongMaterial\") {\r\n obj.material.lightMap = this.o2.map_white;\r\n }\r\n for (let i = 0; i < obj.children.length; i++) {\r\n this.set_fbx_mtl(obj.children[i]);\r\n }\r\n }\r\n add_model_item = (intersection, item) => {\r\n console.log(item)\r\n let ext = item.name.substr(-3, 3);\r\n console.log(ext);\r\n ext = ext.toLowerCase();\r\n let _o2 = this.o2;\r\n let showroom = this;\r\n if (ext == \"fbx\")//FBX装载\r\n {\r\n\r\n // model\r\n const loader = new FBXLoader();\r\n loader.load(item.url, function (object) {\r\n console.log(object);\r\n let obj3 = object;\r\n obj3.user_model = true;\r\n obj3.item = item;\r\n showroom.models.push(obj3);\r\n showroom.set_fbx_mtl(obj3);\r\n showroom.o2.scene.add(obj3);\r\n obj3.position.set(intersection.point.x, intersection.point.y, intersection.point.z);\r\n if (!showroom.user_item_info[item.id.toString()])//插入到userinfo\r\n {\r\n let info = {};\r\n info.id = item.id;\r\n info.name = item.name;\r\n info.preview = item.preview;\r\n info.url = item.url;\r\n showroom.user_item_info[item.id.toString()] = info;\r\n }\r\n //添加鼠标工具\r\n showroom.set_gizmo_object(obj3);\r\n showroom.set_gizmo_mode(1);\r\n });\r\n return;\r\n }\r\n\r\n let promise = this.o2.import_object_url(item.url);\r\n promise.then((obj3) => {\r\n if (obj3) {\r\n obj3.user_model = true;\r\n obj3.item = item;\r\n showroom.o2.renew_all_uuid(obj3);\r\n showroom.models.push(obj3);\r\n showroom.o2.scene.add(obj3);\r\n obj3.position.set(intersection.point.x, intersection.point.y, intersection.point.z);\r\n //判断是不是竖立面,如果是竖立面需要旋转对象角度\r\n let nor = intersection.face.normal.clone();\r\n nor.applyEuler(intersection.object.rotation);\r\n\r\n let dir2 = new THREE.Vector3;\r\n this.o2.camera.getWorldDirection(dir2);\r\n if (dir2.dot(nor) > 0) nor.multiplyScalar(-1);\r\n\r\n //nor.applyNormalMatrix(intersection.object.matrixWorld);\r\n let dir_up = new THREE.Vector3(0, 1, 0);\r\n let dot = nor.dot(dir_up);\r\n if (Math.abs(dot < 0.5)) {\r\n let angle = Math.asin(nor.x);\r\n if (nor.z < 0) angle = 3.1415 - angle;\r\n obj3.rotation.set(0, angle, 0);\r\n }\r\n }\r\n\r\n if (!showroom.user_item_info[item.id.toString()])//插入到userinfo\r\n {\r\n let info = {};\r\n info.id = item.id;\r\n info.name = item.name;\r\n info.preview = item.preview;\r\n info.url = item.url;\r\n showroom.user_item_info[item.id.toString()] = info;\r\n }\r\n //添加鼠标工具\r\n {\r\n showroom.set_gizmo_object(obj3);\r\n showroom.set_gizmo_mode(1);\r\n\r\n }\r\n })\r\n }\r\n\r\n change_bind_item_texture = (obj, map) => {\r\n if (obj.type == \"Mesh\" && obj.material.map == this.o2.map_red) {\r\n obj.bChangeMap = true;\r\n obj.material.map = map;\r\n }\r\n for (let i = 0; i < obj.children.length; i++) {\r\n this.change_bind_item_texture(obj.children[i], map);\r\n }\r\n }\r\n\r\n load_hot_areas = () => {\r\n this.hot_areas = [];\r\n if (this.hot_area_parent)//之前有,新建一个\r\n {\r\n this.o2.scene.children.remove(this.hot_area_parent);\r\n }\r\n\r\n\r\n this.hot_area_parent = new THREE.Object3D();\r\n this.hot_area_parent.visible = false;\r\n this.o2.scene.add(this.hot_area_parent);\r\n let saved = this.room.hot_areas;\r\n this.room.hot_areas = null;\r\n if (!saved) return;\r\n for (let i = 0; i < saved.length; i++) {\r\n let aht_saved = saved[i];\r\n let aht = new _area_hot_trigger;\r\n aht.from_json(aht_saved);\r\n let geometry;\r\n if (aht.type_geo == 0) geometry = new THREE.BoxGeometry(2000, 2000, 2000);\r\n else geometry = new THREE.SphereGeometry(1000, 12, 12);\r\n\r\n let obj3 = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial({ opacity: 0.5, transparent: true }));\r\n obj3.bHot_area = true;\r\n obj3.aht = aht;\r\n let mat = aht_saved.wts;\r\n obj3.position.set(0, 0, 0);\r\n obj3.scale.set(1, 1, 1);\r\n obj3.rotation.set(0, 0, 0);\r\n obj3.applyMatrix4(mat);\r\n aht.bInside = false;\r\n this.hot_areas.push(obj3);\r\n this.hot_area_parent.add(obj3);\r\n }\r\n }\r\n\r\n load_hots = () => {\r\n this.hots = [];\r\n let saved = this.room.hots;\r\n this.room.hots = null;\r\n let showroom = this;\r\n if (!saved) return;\r\n for (let i = 0; i < saved.length; i++) {\r\n let savedhot = saved[i];\r\n let url = this.hot_urls[savedhot.id];\r\n let promise = this.o2.import_object_url(url);\r\n promise.then((obj3) => {\r\n if (obj3) {\r\n obj3.hot = true;\r\n obj3.hot_idx = savedhot.id;\r\n obj3.hot_scale = savedhot.scale;\r\n console.log(\"scale:\" + savedhot.scale);\r\n showroom.o2.renew_all_uuid(obj3);\r\n showroom.hots.push(obj3);\r\n showroom.o2.scene.add(obj3);\r\n let mat = savedhot.wts;\r\n obj3.position.set(0, 0, 0);\r\n obj3.scale.set(1, 1, 1);\r\n obj3.rotation.set(0, 0, 0);\r\n obj3.applyMatrix4(mat);\r\n if (savedhot.sb) {\r\n let showbox = new _showbox;\r\n showbox.from_json(savedhot.sb, this);\r\n obj3.showbox = showbox;\r\n } else {\r\n let showbox = new _showbox;\r\n obj3.showbox = showbox;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n apply_mode_bind = (model, depth, binds) => {\r\n let b;\r\n for (let i = 0; i < binds.length; i++) {\r\n let bind = binds[i];\r\n if (bind.depth == depth) {\r\n b = bind;\r\n break;\r\n }\r\n }\r\n if (b) {\r\n if (b.bind_id) {\r\n let res = this.user_item_info[b.bind_id];\r\n if (res && model.material) {\r\n model.bind_id = b.bind_id;\r\n model.material.map = this.o2.create_map(res.preview);\r\n }\r\n\r\n if (b.sb) {\r\n let showbox = new _showbox;\r\n showbox.from_json(b.sb, this);\r\n model.showbox = showbox;\r\n } else {\r\n let showbox = new _showbox;\r\n model.showbox = showbox;\r\n if (item.type == \"image\") {\r\n showbox.bPopUp = true;\r\n }\r\n let res = this.user_item_info[b.bind_id];\r\n if (res) showbox.res_list.push(res);\r\n }\r\n }\r\n }\r\n for (let i = 0; i < model.children.length; i++) {\r\n let depth2 = depth + \"_\" + i;\r\n this.apply_mode_bind(model.children[i], depth2, binds);\r\n }\r\n }\r\n load_models = () => {\r\n console.log(\"load_models\");\r\n let sr = this;\r\n let showroom = this;\r\n sr.models = [];\r\n if (!this.room.user_model) return;\r\n for (let i = 0; i < this.room.user_model.length; i++) {\r\n let um = this.room.user_model[i];\r\n let res = sr.user_item_info[um.resid.toString()];\r\n if (res && res.name) {\r\n\r\n let ext = res.name.substr(-3, 3);\r\n console.log(ext);\r\n ext = ext.toLowerCase();\r\n if (ext == \"fbx\")//FBX装载\r\n {\r\n // model\r\n const loader = new FBXLoader();\r\n loader.load(res.url, function (object) {\r\n console.log(object);\r\n let obj3 = object;\r\n\r\n\r\n obj3.user_model = true;\r\n obj3.item = res;\r\n sr.models.push(obj3);\r\n sr.o2.scene.add(obj3);\r\n let mat = um.wts;\r\n obj3.position.set(0, 0, 0);\r\n obj3.scale.set(1, 1, 1);\r\n obj3.rotation.set(0, 0, 0);\r\n obj3.applyMatrix4(mat);\r\n sr.set_fbx_mtl(obj3);\r\n\r\n });\r\n } else {\r\n let promise = this.o2.import_object_url(res.url);\r\n promise.then((obj3) => {\r\n if (obj3) {\r\n obj3.user_model = true;\r\n obj3.item = res;\r\n sr.o2.renew_all_uuid(obj3);\r\n sr.models.push(obj3);\r\n sr.o2.scene.add(obj3);\r\n let mat = um.wts;\r\n obj3.position.set(0, 0, 0);\r\n obj3.scale.set(1, 1, 1);\r\n obj3.rotation.set(0, 0, 0);\r\n obj3.applyMatrix4(mat);\r\n this.apply_mode_bind(obj3, \"\", um.binds);\r\n }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n set_gizmo_mode = (mode) => {\r\n if (!this.gizmo) return;\r\n let oldmode = this.gizmo_mode;\r\n if (this.gizmo_mode == mode) return;\r\n this.gizmo_mode = mode;\r\n // if (oldmode && oldmode != 0 && this.gizmo_mode == 0) {\r\n // this.o2.scene.remove(this.gizmo);\r\n // return;\r\n // }\r\n if (!oldmode && this.gizmo_mode != 0) {\r\n this.o2.scene.add(this.gizmo);\r\n }\r\n if (mode == 1) {\r\n this.gizmo.setMode('translate');\r\n }\r\n if (mode == 2) {\r\n this.gizmo.setMode('rotate');\r\n }\r\n if (mode == 3) {\r\n this.gizmo.setMode('scale');\r\n }\r\n\r\n }\r\n remove_hot = (model) => {\r\n if (model.bHot_area) {\r\n if (this.hot_area_parent) {\r\n this.hot_area_parent.remove(model);\r\n let newlst = [];\r\n for (let i = 0; i < this.hot_areas.length; i++) {\r\n if (this.hot_areas[i] != model) {\r\n newlst.push(this.hot_areas[i]);\r\n }\r\n }\r\n this.hot_areas = newlst;\r\n }\r\n if (model == this.selected_model) {\r\n this.set_gizmo_object(null);\r\n }\r\n return;\r\n }\r\n console.log(model)\r\n let left_list = [];\r\n for (let i = 0; i < this.hots.length; i++) {\r\n let mdl = this.hots[i];\r\n if (mdl != model) {\r\n left_list.push(mdl);\r\n }\r\n }\r\n this.hots = left_list;\r\n this.o2.scene.remove(model);\r\n if (model == this.selected_model) {\r\n this.set_gizmo_object(null);\r\n }\r\n }\r\n remove_model = (model) => {\r\n let left_list = [];\r\n for (let i = 0; i < this.models.length; i++) {\r\n let mdl = this.models[i];\r\n if (mdl != model) {\r\n left_list.push(mdl);\r\n }\r\n }\r\n this.models = left_list;\r\n this.o2.scene.remove(model);\r\n if (model == this.selected_model) {\r\n this.set_gizmo_object(null);\r\n }\r\n }\r\n\r\n set_gizmo_object = (obj) => {\r\n\r\n if (!this.gizmo) {\r\n this.gizmo = new TransformControls(this.o2.camera, this.o2.renderer.domElement);\r\n this.gizmo.ctrl = this.o2.cameraControls;\r\n this.gizmo.addEventListener('dragging-changed', function (event) {\r\n this.ctrl.enabled = !event.value;\r\n if (document.showroom.bCopyModel) {\r\n document.showroom.bCopyModel = false;\r\n let curObj = document.showroom.selected_model;\r\n let item = curObj.item;\r\n if (!item) return;\r\n let promise = document.o2.import_object_url(item.url);\r\n promise.then((obj3) => {\r\n if (obj3) {\r\n obj3.user_model = true;\r\n obj3.item = item;\r\n document.showroom.o2.renew_all_uuid(obj3);\r\n document.showroom.models.push(obj3);\r\n document.showroom.o2.scene.add(obj3);\r\n obj3.position.set(curObj.position.x, curObj.position.y, curObj.position.z);\r\n obj3.rotation.set(curObj.rotation.x, curObj.rotation.y, curObj.rotation.z);\r\n obj3.scale.set(curObj.scale.x, curObj.scale.y, curObj.scale.z);\r\n }\r\n })\r\n }\r\n });\r\n }\r\n\r\n this.selected_model = obj;\r\n if (obj) {\r\n this.gizmo.attach(obj);\r\n this.gizmo.setSpace(\"local\");\r\n } else {\r\n this.gizmo.detach();\r\n this.gizmo.setSpace(\"world\");\r\n }\r\n }\r\n\r\n add_exhibition_item = (object, item) => {\r\n //console.log(object);\r\n let map = this.o2.create_map(item.preview);\r\n object.material.map = map;\r\n let oldbind_id = object.bind_id;\r\n object.bind_id = item.id;\r\n object.bChangeMap = true;\r\n let showbox;\r\n if (object.showbox) {//已经有了\r\n showbox = object.showbox;\r\n if (showbox.res_list.length == 1)//只有一个的时候再替换\r\n {\r\n if (showbox.res_list[0].id == oldbind_id)//旧资源和旧展项一致\r\n {\r\n showbox.res_list = [];\r\n showbox.res_list.push(item);\r\n }\r\n }\r\n } else {//新画板\r\n showbox = new _showbox;\r\n object.showbox = showbox;\r\n if (item.type == \"image\") {\r\n showbox.bPopUp = true;\r\n showbox.linkFlag = 1;\r\n }\r\n showbox.res_list.push(item);\r\n }\r\n\r\n //判断素材是不是用户自己布置的\r\n let user_object;\r\n let obj2 = object;\r\n while (obj2 && obj2 != this.o2.scene) {\r\n if (obj2.user_model == true) {\r\n user_object = obj2;\r\n break;\r\n }\r\n obj2 = obj2.parent;\r\n }\r\n if (user_object)//用户自定义展项\r\n {\r\n user_object.bind = item;\r\n return;\r\n }\r\n if (!this.room.bind) this.room.bind = [];\r\n let bind = this.get_object_bind(object);\r\n if (bind) {\r\n bind.resid = item.id;\r\n }\r\n else {\r\n bind = {};\r\n bind.uuid = object.uuid;\r\n bind.resid = item.id;\r\n this.room.bind.push(bind);\r\n if (!this.user_item_info) {\r\n this.user_item_info = {};\r\n }\r\n if (!this.user_item_info[item.id.toString()])//插入到userinfo\r\n {\r\n let info = {};\r\n info.id = item.id;\r\n info.name = item.name;\r\n info.preview = item.preview;\r\n info.url = item.url;\r\n this.user_item_info[item.id.toString()] = info;\r\n }\r\n }\r\n }\r\n load_lut = () => {\r\n if (this.room.lutName) {\r\n let name = this.room.lutName;\r\n this.switch_lut(name);\r\n }\r\n }\r\n load_camera_record = () => {\r\n //camera\r\n if (this.room.camera_record && this._load_camera_record) {\r\n this._load_camera_record(this.room.camera_record);\r\n }\r\n }\r\n load(params, template) {\r\n this.room = params\r\n console.log(\"开始加载\", this.room);\r\n this.getUrl()\r\n\r\n if (this.room.viewHeight) {\r\n Bus.$emit(\"viewHeight\", this.room.viewHeight)\r\n }\r\n\r\n if (!this.room.moveSpd) {\r\n this.room.moveSpd = 5\r\n }\r\n\r\n Bus.$emit(\"moveSpd\", this.room.moveSpd * 400 + 2000)\r\n if (!this.room.view && template && template.view) {\r\n this.room.view = template.view\r\n }\r\n\r\n if (document.showroom.room.logo) {\r\n\r\n } else {\r\n console.log(document.showroom.room);\r\n document.showroom.room.logo = \"\"\r\n }\r\n\r\n\r\n // console.log(this.getUrl, 321321)\r\n let container = document.getElementById(\"container\");\r\n this.SCREEN_WIDTH = container.clientWidth;\r\n this.SCREEN_HEIGHT = container.clientHeight;\r\n var _o2 = document.o2vr;\r\n _o2.init(container);\r\n \r\n let ppp = _o2.load_zip_scene(params.url);\r\n console.log(params.url)\r\n var that = this\r\n\r\n {\r\n _o2.script = {};\r\n let scripts = _o2.script;\r\n _o2.dist_appear = false;\r\n scripts[\"init\"] = function init() {\r\n that.bPrepare = false;\r\n console.log(\"inited\");\r\n _o2.postEffect.lut = false\r\n _o2.create_render_pass()\r\n _o2.on_loading_msg(\"正在下载:\", String(Math.ceil(100)), \"%\");\r\n if (that.room.view) {\r\n console.log(that.room.view)\r\n var view = that.room.view.split(\",\");\r\n _o2.cameraControls.target.set(\r\n view[0],\r\n view[1],\r\n view[2]\r\n );\r\n _o2.camera.position.set(\r\n view[3],\r\n view[4],\r\n view[5]\r\n );\r\n }\r\n _o2.cameraControls.panSpeed = 0.5;\r\n\r\n // _o2.cameraControls.minDistance = 0.1;\r\n // _o2.cameraControls.maxDistance = 15000;\r\n // if (params.maxDistance) {\r\n // this.cameraMaxDistance = params.maxDistance;\r\n // }\r\n // if (params.minDistance) {\r\n // this.cameraMinDistance = params.minDistance;\r\n // }\r\n\r\n\r\n\r\n _o2.cameraControls.maxPolarAngle = Math.PI - Math.PI / 10;\r\n _o2.cameraControls.minPolarAngle = Math.PI / 10;\r\n that.user_item_info = that.room.user_item_info;\r\n that.room.user_item_info = null;\r\n\r\n if (_o2.init_play) _o2.init_play();\r\n that.load_models();\r\n that.bind_items();\r\n that.load_camera_record();\r\n that.load_hots();\r\n that.load_hot_areas();\r\n that.prepare_run();\r\n that.load_lut();\r\n };\r\n }\r\n\r\n ppp.then(() => {\r\n console.log(\"load ended\");\r\n document.o2.camera.fov = this.room.fov ? this.room.fov : 60;\r\n document.o2.camera.updateProjectionMatrix();\r\n\r\n });\r\n }\r\n\r\n save() {\r\n return this.room\r\n }\r\n\r\n\r\n //播放音频\r\n playAudio(e) {\r\n var audio = new Audio()\r\n audio.autoplay = true\r\n audio.id = 'audio'\r\n audio.src = e\r\n document.body.appendChild(audio)\r\n }\r\n\r\n //移除音频\r\n removeAudio() {\r\n document.body.removeChild(document.getElementById(\"audio\"))\r\n }\r\n\r\n set_camera_controls(bEdit) {\r\n let _o2 = document.o2;\r\n if (_o2) {\r\n if (!bEdit) {\r\n if (this.room.maxDistance) {\r\n _o2.cameraControls.maxDistance = this.room.maxDistance;\r\n } else {\r\n _o2.cameraControls.maxDistance = 20000;\r\n }\r\n if (this.room.minDistance) {\r\n _o2.cameraControls.minDistance = this.room.minDistance;\r\n } else {\r\n _o2.cameraControls.minDistance = 0.1;\r\n }\r\n }\r\n else {\r\n _o2.cameraControls.minDistance = 0.1;\r\n _o2.cameraControls.maxDistance = Number.POSITIVE_INFINITY;\r\n }\r\n }\r\n }\r\n encode64(input) {\r\n\r\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n var output = \"\";\r\n var chr1, chr2, chr3 = \"\";\r\n var enc1, enc2, enc3, enc4 = \"\";\r\n var i = 0;\r\n do {\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)\r\n + keyStr.charAt(enc3) + keyStr.charAt(enc4);\r\n chr1 = chr2 = chr3 = \"\";\r\n enc1 = enc2 = enc3 = enc4 = \"\";\r\n } while (i < input.length);\r\n return output;\r\n }\r\n\r\n\r\n\r\n\r\n //将Base64编码字符串转换成Ansi编码的字符串\r\n decode64(input) {\r\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n var output = \"\";\r\n var chr1, chr2, chr3 = \"\";\r\n var enc1, enc2, enc3, enc4 = \"\";\r\n var i = 0;\r\n if (input.length % 4 != 0) {\r\n return \"\";\r\n }\r\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\r\n if (base64test.exec(input)) {\r\n return \"\";\r\n }\r\n do {\r\n enc1 = keyStr.indexOf(input.charAt(i++));\r\n enc2 = keyStr.indexOf(input.charAt(i++));\r\n enc3 = keyStr.indexOf(input.charAt(i++));\r\n enc4 = keyStr.indexOf(input.charAt(i++));\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n output = output + String.fromCharCode(chr1);\r\n if (enc3 != 64) {\r\n output += String.fromCharCode(chr2);\r\n }\r\n if (enc4 != 64) {\r\n output += String.fromCharCode(chr3);\r\n }\r\n chr1 = chr2 = chr3 = \"\";\r\n enc1 = enc2 = enc3 = enc4 = \"\";\r\n } while (i < input.length);\r\n return output;\r\n }\r\n utf16to8(str) {\r\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n var out, i, len, c;\r\n out = \"\";\r\n len = str.length;\r\n for (i = 0; i < len; i++) {\r\n c = str.charCodeAt(i);\r\n if ((c >= 0x0001) && (c <= 0x007F)) {\r\n out += str.charAt(i);\r\n } else if (c > 0x07FF) {\r\n out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));\r\n out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));\r\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\r\n } else {\r\n out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));\r\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\r\n }\r\n }\r\n return out;\r\n }\r\n utf8to16(str) {\r\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n var out, i, len, c;\r\n var char2, char3;\r\n out = \"\";\r\n len = str.length;\r\n i = 0;\r\n while (i < len) {\r\n c = str.charCodeAt(i++);\r\n switch (c >> 4) {\r\n case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:\r\n // 0xxxxxxx\r\n out += str.charAt(i - 1);\r\n break;\r\n case 12: case 13:\r\n // 110x xxxx 10xx xxxx\r\n char2 = str.charCodeAt(i++);\r\n out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));\r\n break;\r\n case 14:\r\n // 1110 xxxx 10xx xxxx 10xx xxxx\r\n char2 = str.charCodeAt(i++);\r\n char3 = str.charCodeAt(i++);\r\n out += String.fromCharCode(((c & 0x0F) << 12) |\r\n ((char2 & 0x3F) << 6) |\r\n ((char3 & 0x3F) << 0));\r\n break;\r\n }\r\n }\r\n return out;\r\n }\r\n}\r\n\r\nexport { showroom };\r\n\r\n","import axios from 'axios'\r\nimport TRTC from 'trtc-js-sdk'\r\nimport Bus from './bus'\r\n\r\n// import * as LibGenerateTestUserSig from './lib-generate-test-usersig.min.js'\r\nclass o2vrClient {\r\n constructor() {\r\n //凭证\r\n this.config = {\r\n mode: 'rtc',\r\n sdkAppId: '',\r\n userId: '',\r\n usersig: ''\r\n }\r\n //客户端\r\n this.client = ''\r\n this.list = []\r\n this.audioflag = false\r\n this.videoflag = false\r\n }\r\n\r\n //登录client\r\n async login(userid, roomId) {\r\n console.log(userid)\r\n //获取签证\r\n // const SDKAPPID = 1400601861;\r\n // const EXPIRETIME = 604800;\r\n // const SECRETKEY = 'fe1ea13d889fc1a987cc2164bca5818e172dd777659827521606da9418a8c472';\r\n // const generator = new LibGenerateTestUserSig(SDKAPPID, SECRETKEY, EXPIRETIME)\r\n // const userSig = generator.genTestUserSig(userID)\r\n // this.config.userId = userid\r\n // this.config.userSig = generator.genTestUserSig(userid)\r\n Bus.$on('mute', (target) => {\r\n if (!this.videoflag & !this.audioflag) {\r\n this.client.publish(localStream)\r\n Bus.$emit('localFlag', true)\r\n }\r\n this.audioflag = target\r\n if (target) {\r\n localStream.unmuteAudio()\r\n } else {\r\n localStream.muteAudio()\r\n }\r\n console.log(this.videoflag, this.audioflag)\r\n if (!this.videoflag & !this.audioflag) {\r\n this.client.unpublish(localStream)\r\n Bus.$emit('localFlag', false)\r\n }\r\n })\r\n\r\n Bus.$on('vmute', (target) => {\r\n if (!this.videoflag & !this.audioflag) {\r\n this.client.publish(localStream)\r\n Bus.$emit('localFlag', true)\r\n }\r\n this.videoflag = target[0]\r\n if (target[0]) {\r\n Bus.$emit('spliu', localStream)\r\n localStream.unmuteVideo()\r\n } else {\r\n localStream.muteVideo()\r\n }\r\n\r\n if (!this.videoflag & !this.audioflag) {\r\n this.client.unpublish(localStream)\r\n Bus.$emit('localFlag', false)\r\n }\r\n })\r\n await this.get(userid).then((res) => {\r\n this.config.userId = userid\r\n this.config.userSig = res.sig\r\n this.config.sdkAppId = res.appid\r\n })\r\n //建立客户端\r\n this.client = await TRTC.createClient(this.config)\r\n let remoteStreamList = []\r\n //订阅远方流\r\n await this.client.on('stream-added', (event) => {\r\n const remoteStream = event.stream\r\n console.log('远端流增加: ' + remoteStream.getId())\r\n this.client.subscribe(remoteStream)\r\n })\r\n\r\n await this.client.on('stream-removed', ({ stream: remoteStream }) => {\r\n Bus.$emit('removelist', remoteStream)\r\n })\r\n\r\n // 播放远端流\r\n await this.client.on('stream-subscribed', (event) => {\r\n const remoteStream = event.stream\r\n console.log('远端流订阅成功:' + remoteStream.getId())\r\n\r\n Bus.$emit('addlist', remoteStream)\r\n })\r\n\r\n // 开始获取流音量\r\n let getAudioLevelTimer = -1\r\n var that = this\r\n function startGetAudioLevel() {\r\n getAudioLevelTimer = setAnimationFrame(() => {\r\n var list = that.client.getRemoteMutedState()\r\n Bus.$emit('listChange', list)\r\n })\r\n }\r\n // 停止获取流音量\r\n function stopGetAudioLevel() {\r\n if (getAudioLevelTimer !== -1) {\r\n clearAnimationFrame(getAudioLevelTimer)\r\n getAudioLevelTimer = -1\r\n }\r\n }\r\n\r\n // 设置AnimationFrame\r\n function setAnimationFrame(render) {\r\n // 计时器\r\n let timer = {}\r\n function animeLoop() {\r\n render()\r\n timer.id = requestAnimationFrame(animeLoop)\r\n }\r\n animeLoop()\r\n return timer\r\n }\r\n // 清除AnimationFrame\r\n function clearAnimationFrame(timer) {\r\n cancelAnimationFrame(timer.id)\r\n }\r\n //进入房间\r\n await this.client\r\n .join({ roomId })\r\n .catch((error) => {\r\n console.error('进房失败 ' + error)\r\n })\r\n .then(() => {\r\n console.log('进房成功')\r\n startGetAudioLevel()\r\n })\r\n //await this.shareScreen(roomId);\r\n var localStream\r\n await TRTC.getCameras().then((res) => {\r\n console.log(res)\r\n if (res.length != 0) {\r\n console.log('拥有摄像头', res[0])\r\n localStream = TRTC.createStream({\r\n userId: this.config.userId,\r\n audio: true,\r\n video: true\r\n })\r\n } else {\r\n console.log('没有摄像头开启语音')\r\n localStream = TRTC.createStream({\r\n userId: this.config.userId,\r\n audio: true,\r\n video: false\r\n })\r\n\r\n // localStream.muteAudio();\r\n }\r\n })\r\n //创建流\r\n\r\n //初始化本地音视频流。\r\n\r\n await localStream\r\n .initialize()\r\n .catch((error) => {\r\n console.log('初始化本地流失败 ' + error)\r\n return\r\n })\r\n .then(() => {\r\n console.log('初始化本地流成功')\r\n localStream.play('local_stream')\r\n console.log(document.getElementById('local_stream'))\r\n localStream.muteAudio()\r\n localStream.muteVideo()\r\n })\r\n }\r\n\r\n async loginOut() {\r\n this.client\r\n .leave()\r\n .then(() => {\r\n // 退房成功,可再次调用client.join重新进房开启新的通话。\r\n console.log('退房成功')\r\n this.list = []\r\n })\r\n .catch((error) => {\r\n console.error('退房失败 ' + error)\r\n // 错误不可恢复,需要刷新页面。\r\n })\r\n }\r\n\r\n test() {\r\n this.client.leave().then(() => {\r\n this.client.join({ roomId: 1000 }).then(() => {\r\n //this.client.roomId\r\n console.log('重新加入1000频道', this.client)\r\n })\r\n })\r\n }\r\n\r\n //获取签证\r\n get(userid) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .get('https://api.wh12345.net/trtc/usersig.php?', {\r\n params: {\r\n userid,\r\n appname: 'vryun'\r\n }\r\n })\r\n .then((res) => {\r\n resolve(res.data)\r\n })\r\n .catch((err) => {\r\n reject(err.data)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport { o2vrClient }\r\n","import SparkMD5 from \"spark-md5\";\r\nimport Bus from \"../js/bus\";\r\nimport axios from 'axios'\r\nclass o2Function {\r\n constructor() {\r\n this.client = \"\",\r\n this.dir_prefix = \"\",\r\n this.t = \"\",\r\n this.r = \"\",\r\n this.s = \"\"\r\n }\r\n\r\n\r\n\r\n //创建oss client\r\n\r\n\r\n createClient() {\r\n const OSS = require(\"ali-oss\");\r\n axios.post(\"https://api.wh12345.net/AliyunOss/assumeRole.php?\").then((res) => {\r\n var data = res.data.body.credentials;\r\n console.log(data);\r\n this.client = new OSS({\r\n // yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。\r\n region: \"oss-cn-beijing\",\r\n // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。\r\n accessKeyId: data.accessKeyId,\r\n accessKeySecret: data.accessKeySecret,\r\n // 从STS服务获取的安全令牌(SecurityToken)。\r\n stsToken: data.securityToken,\r\n // 填写Bucket名称。\r\n bucket: \"o2public\",\r\n });\r\n console.log('创建ossclient成功')\r\n });\r\n }\r\n\r\n upload(data) {\r\n\r\n console.log(data)\r\n Bus.$emit('progress', 0)\r\n return new Promise((resolve, reject) => {\r\n this.getMD5(data, md5 => {\r\n axios\r\n .get(`${document.o2.url}/before_upload.php`, {\r\n params: { md5: md5, s: this.s, t: this.t, r: this.r },\r\n })\r\n .then((res) => {\r\n if (res.data.code == 1) {\r\n var date = new Date();\r\n var nameList = data.name.split('.')\r\n var name = nameList[0] + date.getTime() + '.' + nameList[nameList.length - 1];\r\n var path = `${res.data.dir_prefix}${name}`;\r\n\r\n this.sliceupload(data, name, path).then(res => {\r\n axios\r\n .get(`${document.o2.url}/after_upload.php`, {\r\n params: { md5: md5, name, name2: data.name, s: this.s, t: this.t, r: this.r },\r\n }).then(res => {\r\n resolve(res.data.data)\r\n })\r\n\r\n })\r\n\r\n\r\n } else if (res.data.code == 0) {\r\n Bus.$emit('progress', 1)\r\n resolve(res.data.data)\r\n\r\n }\r\n })\r\n\r\n\r\n })\r\n })\r\n\r\n\r\n }\r\n //简单上传\r\n async simpleUpload(data, name, path) {\r\n var that = this;\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const result = that.client.put(path, data);\r\n resolve(result)\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n })\r\n }\r\n\r\n\r\n //分片上传\r\n async sliceupload(data, name, path) {\r\n var that = this;\r\n\r\n var page\r\n\r\n if (data.size < 10 * 1024 * 1024) {\r\n page = 1\r\n } else if (data.size < 100 * 1024 * 1024) {\r\n page = 5\r\n } else {\r\n page = 10\r\n }\r\n return new Promise((resolve, reject) => {\r\n const options = {\r\n\r\n progress: (p, cpt, res) => {\r\n console.log(p);\r\n Bus.$emit('progress', p)\r\n },\r\n\r\n parallel: page,\r\n\r\n partSize: 1024 * 1024,\r\n\r\n };\r\n\r\n // 监听按钮。\r\n try {\r\n // 分片上传。\r\n const res = that.client.multipartUpload(path, data, {\r\n ...options,\r\n });\r\n\r\n resolve(res)\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n })\r\n\r\n }\r\n\r\n getToken() {\r\n this.t = Math.floor(new Date().getTime() / 1000);\r\n\r\n this.r = Math.floor(Math.random() * 10000);\r\n\r\n var token = \"o2_report2\";\r\n\r\n var arr = String(this.t) + String(this.r) + token;\r\n\r\n var s = sha1(arr);\r\n\r\n this.s = md5(s).toUpperCase();\r\n console.log(this.s);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n //base64编码解码\r\n encode64(input) {\r\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n var output = \"\";\r\n var chr1, chr2, chr3 = \"\";\r\n var enc1, enc2, enc3, enc4 = \"\";\r\n var i = 0;\r\n do {\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)\r\n + keyStr.charAt(enc3) + keyStr.charAt(enc4);\r\n chr1 = chr2 = chr3 = \"\";\r\n enc1 = enc2 = enc3 = enc4 = \"\";\r\n } while (i < input.length);\r\n return output;\r\n }\r\n //将Base64编码字符串转换成Ansi编码的字符串\r\n decode64(input) {\r\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n var output = \"\";\r\n var chr1, chr2, chr3 = \"\";\r\n var enc1, enc2, enc3, enc4 = \"\";\r\n var i = 0;\r\n if (input.length % 4 != 0) {\r\n return \"\";\r\n }\r\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\r\n if (base64test.exec(input)) {\r\n return \"\";\r\n }\r\n do {\r\n enc1 = keyStr.indexOf(input.charAt(i++));\r\n enc2 = keyStr.indexOf(input.charAt(i++));\r\n enc3 = keyStr.indexOf(input.charAt(i++));\r\n enc4 = keyStr.indexOf(input.charAt(i++));\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n output = output + String.fromCharCode(chr1);\r\n if (enc3 != 64) {\r\n output += String.fromCharCode(chr2);\r\n }\r\n if (enc4 != 64) {\r\n output += String.fromCharCode(chr3);\r\n }\r\n chr1 = chr2 = chr3 = \"\";\r\n enc1 = enc2 = enc3 = enc4 = \"\";\r\n } while (i < input.length);\r\n return output;\r\n }\r\n utf16to8(str) {\r\n\r\n var out, i, len, c;\r\n out = \"\";\r\n len = str.length;\r\n for (i = 0; i < len; i++) {\r\n c = str.charCodeAt(i);\r\n if ((c >= 0x0001) && (c <= 0x007F)) {\r\n out += str.charAt(i);\r\n } else if (c > 0x07FF) {\r\n out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));\r\n out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));\r\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\r\n } else {\r\n out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));\r\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\r\n }\r\n }\r\n return out;\r\n }\r\n utf8to16(str) {\r\n\r\n var out, i, len, c;\r\n var char2, char3;\r\n out = \"\";\r\n len = str.length;\r\n i = 0;\r\n while (i < len) {\r\n c = str.charCodeAt(i++);\r\n switch (c >> 4) {\r\n case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:\r\n // 0xxxxxxx\r\n out += str.charAt(i - 1);\r\n break;\r\n case 12: case 13:\r\n // 110x xxxx 10xx xxxx\r\n char2 = str.charCodeAt(i++);\r\n out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));\r\n break;\r\n case 14:\r\n // 1110 xxxx 10xx xxxx 10xx xxxx\r\n char2 = str.charCodeAt(i++);\r\n char3 = str.charCodeAt(i++);\r\n out += String.fromCharCode(((c & 0x0F) << 12) |\r\n ((char2 & 0x3F) << 6) |\r\n ((char3 & 0x3F) << 0));\r\n break;\r\n }\r\n }\r\n return out;\r\n }\r\n //开启拖拽监听\r\n createDrag() {\r\n document.addEventListener('dragover', this.FileDragHover, false)\r\n //监听文件拖拽移出\r\n document.addEventListener('dragleave', this.FileDragLeave, false)\r\n //监听文件拖拽放下(必须)\r\n document.addEventListener('drop', this.Drop, false)\r\n document.drag = this\r\n }\r\n //解除拖拽监听\r\n destroyed() {\r\n document.removeEventListener('dragover', this.FileDragHover, false)\r\n //监听文件拖拽移出\r\n document.removeEventListener('dragleave', this.FileDragLeave, false)\r\n //监听文件拖拽放下(必须)\r\n document.removeEventListener('drop', this.Drop, false)\r\n }\r\n\r\n //处理文件拖入事件\r\n FileDragHover(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n //添加类名修改样式\r\n e.target.classList.add(\"dropBoxHover\")\r\n // e.target.innerText = \"松开鼠标上传\"\r\n }\r\n //处理拖拽离开事件\r\n FileDragLeave(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n //移除类名修改样式\r\n e.target.classList.remove(\"dropBoxHover\")\r\n // e.target.innerText = \"拖拽文件上传\"\r\n }\r\n //处理文件拖拽放下事件\r\n\r\n async Drop(e) {\r\n\r\n\r\n //阻止事件冒泡\r\n e.stopPropagation();\r\n //阻止事件的默认行为\r\n e.preventDefault();\r\n //储存获取到的文件列表\r\n let fileList = [];\r\n let DirectoryEntryList = [];\r\n\r\n //清除样式\r\n e.target.classList.remove(\"dropBoxHover\")\r\n if (e.dataTransfer.items) {\r\n // 拖拽对象列表转换成数组\r\n let items = new Array(...e.dataTransfer.items);\r\n // 获得DirectoryEntry对象列表\r\n for (let index = 0; index < items.length; index++) {\r\n let e = items[index];\r\n let item = null;\r\n //兼容不同内核的浏览器\r\n if (e.webkitGetAsEntry) {\r\n item = e.webkitGetAsEntry();\r\n } else if (e.getAsEntry) {\r\n item = e.getAsEntry();\r\n } else {\r\n this.$alert(\"浏览器不支持拖拽上传\", \"提示\");\r\n return;\r\n }\r\n DirectoryEntryList.push(item);\r\n }\r\n if (DirectoryEntryList.length > 0) {\r\n for (let index = 0; index < DirectoryEntryList.length; index++) {\r\n let item = DirectoryEntryList[index];\r\n if (item) {\r\n //获取文件夹目录\r\n let FileTree = await document.drag.getFileTree(item);\r\n // 拿到目录下的所有文件\r\n if (Array.isArray(FileTree)) {\r\n //展平文件夹\r\n flattenArray(FileTree, fileList);\r\n } else {\r\n //方便后续处理,单文件时也包装成数组\r\n fileList.push(FileTree);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n var obj = {\r\n x: e.offsetX,\r\n y: e.offsetY,\r\n file: fileList[0]\r\n }\r\n // var chatroom = document.getElementById('chatroom')\r\n // console this.checkIn(chatroom)\r\n Bus.$emit(\"drag\", obj)\r\n }\r\n\r\n checkIn(obj) {\r\n var x = Number(window.event.clientX) // 鼠标相对屏幕横坐标\r\n var y = Number(window.event.clientY) // 鼠标相对屏幕纵坐标\r\n\r\n var div_x = Number(obj.getBoundingClientRect().left) // obj相对屏幕的横坐标\r\n var div_x_width = Number(\r\n obj.getBoundingClientRect().left + obj.clientWidth\r\n ) // obj相对屏幕的横坐标+width\r\n\r\n var div_y = Number(obj.getBoundingClientRect().top) // obj相对屏幕的纵坐标\r\n var div_y_height = Number(\r\n obj.getBoundingClientRect().top + obj.clientHeight\r\n ) // obj相对屏幕的纵坐标+height\r\n\r\n if (x > div_x && x < div_x_width && y > div_y && y < div_y_height) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n /**\r\n * 获取文件\r\n */\r\n fileSync(item) {\r\n return new Promise((resolve, reject) => {\r\n item.file(res => {\r\n resolve(res);\r\n });\r\n });\r\n }\r\n //读取文件夹下的文件\r\n readEntriesSync(dirReader) {\r\n return new Promise((rel, rej) => {\r\n dirReader.readEntries(res => {\r\n rel(res);\r\n });\r\n });\r\n }\r\n /**\r\n * 获取文件目录结构树\r\n *\r\n */\r\n async getFileTree(item) {\r\n let that = this;\r\n var path = item.fullPath || \"\";\r\n let dir = new Array();\r\n if (item.isFile) {\r\n let resFile = await this.fileSync(item);\r\n resFile.path = path;\r\n return resFile;\r\n // item为文件夹时\r\n } else if (item.isDirectory) {\r\n var dirReader = item.createReader();\r\n let entries = await that.readEntriesSync(dirReader);\r\n for (let i = 0; i < entries.length; i++) {\r\n let proItem = await that.getFileTree(entries[i]);\r\n dir.push(proItem);\r\n }\r\n return dir;\r\n }\r\n }\r\n\r\n\r\n // 文件转MD5\r\n getMD5(file, callBack) {\r\n /*\r\n * file 选取的文件\r\n * callBack 回调函数可以返回获取的MD5\r\n */\r\n let fileReader = new FileReader(),\r\n blobSlice =\r\n File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice,\r\n chunkSize = 2097152,\r\n // read in chunks of 2MB\r\n chunks = Math.ceil(file.size / chunkSize),\r\n currentChunk = 0,\r\n spark = new SparkMD5();\r\n fileReader.onload = function (e) {\r\n spark.appendBinary(e.target.result); // append binary string\r\n currentChunk++;\r\n if (currentChunk < chunks) {\r\n loadNext();\r\n } else {\r\n callBack(spark.end());\r\n }\r\n };\r\n function loadNext() {\r\n let start = currentChunk * chunkSize,\r\n end = start + chunkSize >= file.size ? file.size : start + chunkSize;\r\n fileReader.readAsBinaryString(blobSlice.call(file, start, end));\r\n }\r\n loadNext();\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\nexport { o2Function };","import Bus from './bus'\r\nimport axios from \"axios\";\r\nclass chat {\r\n constructor() {\r\n this.ws = {},\r\n this.msgList = [\r\n []\r\n ],\r\n this.role = {\r\n\r\n },\r\n this.timmer = \"\"\r\n this.playerList = []\r\n }\r\n login(role) {\r\n var that = this\r\n this.role = role\r\n function wsConnect(role) {\r\n axios\r\n .get('https://api.wh12345.net:9400/assign/', {\r\n params: {\r\n name: role.name,\r\n roomid: role.roomid\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data.code == 0) {\r\n that.ws = new WebSocket(`wss://api.wh12345.net:${res.data.port}/`);\r\n that.port = res.data.port\r\n that.ws.onopen = function () {\r\n // that.ws.send(`login,${role.name},${role.sex},${role.accInfo},${role.bodyColor},${role.hairColor},${role.auth}`);\r\n that.ws.send(`login,${role.name},${role.roomid},${role.rid}`)\r\n\r\n\r\n Bus.$emit('loginSuccess', '')\r\n // Bus.$emit('loginS', '')\r\n that.ws.onmessage = function (evt) {\r\n var msg = evt.data.split(',')\r\n var cmd = evt.data.split(':')\r\n\r\n\r\n Bus.$emit('playermsg', evt)\r\n if (cmd[0] == '{\"code\"') {\r\n Bus.$emit('player', JSON.parse(evt.data))\r\n this.list = JSON.parse(evt.data)\r\n }\r\n if (msg[0] == 'logsuccess') {\r\n that.role.id = msg[1]\r\n }\r\n\r\n\r\n if (msg[0] == 'chats') {\r\n that.msgList[0].push({\r\n name: msg[1],\r\n msg: msg[2],\r\n })\r\n Bus.$emit('msgList', that.msgList)\r\n }\r\n\r\n\r\n if (msg[0] == 'chat') {\r\n\r\n that.msgList.push([])\r\n var sendid = msg[1]\r\n var reid = msg[2]\r\n var value = msg[4] * 1\r\n\r\n if (that.role.name == sendid) {\r\n that.msgList[value].push({\r\n name: msg[1],\r\n msg: msg[3]\r\n })\r\n Bus.$emit('msgList', that.msgList)\r\n } else if (that.role.name == reid) {\r\n Bus.$emit('reciveMsg', {\r\n name: msg[1],\r\n msg: msg[3],\r\n from: sendid\r\n })\r\n }\r\n }\r\n\r\n if (msg[1] == 'manage') {\r\n if (that.role.name == msg[2]) {\r\n console.log(that.role.name == msg[2])\r\n Bus.$emit('manage', msg[3])\r\n }\r\n }\r\n\r\n if (msg[1] == \"zhuchiren\") {\r\n if (that.role.name == msg[2]) {\r\n Bus.$emit('zhuchirenhuifu', msg[3])\r\n }\r\n }\r\n\r\n\r\n\r\n }\r\n };\r\n } else {\r\n Bus.$emit('loginError', '')\r\n }\r\n })\r\n\r\n }\r\n\r\n wsConnect(role)\r\n setInterval(() => {\r\n // axios\r\n // .get('https://api.wh12345.net:9400/players/')\r\n // .then((res) => {\r\n // that.playerList = res.data;\r\n // Bus.$emit('playerList', that.playerList)\r\n // })\r\n\r\n this.ws.send('players')\r\n // this.ws.send('close')\r\n setTimeout(() => {\r\n if (this.ws.readyState == 1) {\r\n // 已经链接并且可以通讯\r\n this.ws.send('ping')\r\n } else if (this.ws.readyState == 2) {\r\n this.ws.onclose = function (e) {\r\n wsConnect(role)\r\n };\r\n } else if (this.ws.readyState == 3) {\r\n // 连接已关闭或者没有链接成功\r\n wsConnect(role)\r\n }\r\n }, 500)\r\n\r\n\r\n }, 3000)\r\n\r\n };\r\n send(e) {\r\n this.ws.send(e)\r\n }\r\n}\r\nexport { chat }\r\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport store from './store'\r\nimport ElementUI from 'element-ui'\r\nimport 'element-ui/lib/theme-chalk/index.css'\r\nimport { o2vr } from '../common/js/o2'\r\nimport VueAudio from 'vue-audio'\r\nimport '../common/css/common_repair.css'\r\nimport VideoPlayer from 'vue-video-player'\r\nrequire('video.js/dist/video-js.css')\r\nrequire('vue-video-player/src/custom-theme.css')\r\nVue.use(VideoPlayer)\r\nVue.use(VueAudio)\r\nimport { showroom } from '../common/js/showroom'\r\nVue.prototype.Showroom = new showroom()\r\ndocument.showroom = Vue.prototype.Showroom\r\n// import { o2builder } from '../common/js/o2_builder'\r\n// import 'animate.css/animate.compat.css'\r\nVue.config.productionTip = false\r\nVue.prototype.O2vr = new o2vr()\r\ndocument.o2vr = Vue.prototype.O2vr\r\ndocument.o2 = Vue.prototype.O2vr\r\ndocument.showroom.o2 = document.o2vr\r\nVue.use(ElementUI)\r\n// Vue.prototype.O2Builder = new o2builder()\r\nVue.config.productionTip = false\r\n// import Vconsole from 'vconsole'\r\n// let vConsole = new Vconsole()\r\n// Vue.use(vConsole)\r\nimport { o2vrClient } from '../common/js/o2vrClient_repair'\r\nimport { o2Function } from '../common/js/o2Function'\r\n\r\nimport { chat } from '../common/js/chat'\r\nVue.prototype.$chat = new chat()\r\nVue.prototype.$client = new o2vrClient()\r\nVue.prototype.$o2Function = new o2Function()\r\ndocument.o2.type = 'local'\r\nimport Bus from '../common/js/bus'\r\n\r\nVue.prototype.Bus = Bus\r\nnew Vue({\r\n store,\r\n render: (h) => h(App)\r\n}).$mount('#app')\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABX1JREFUWEe1mHlsFFUcx7+/nbK7tYggStpCsSYIKgqSeESlcm+LREJTA6aJRCMKqOEopbQKFANiOEw8YiOCaClQi9xGObz+kSgJWs6UtlCgUIKAiqi0XbbzzHcyU4dhZjtQfMkku3P83uf9rvf7PcE1DKXUTQDuMa9uAG4F0MkUcRHA7wDOAqjiJSKX/IoXPy8qpXoBeArAXQAuA2gGEAPQAkA3ZQQAaAASAIQAdABQC+ALETnS1jxxQZRSPQCMAXAvgL8ANLYl0PE8EcDNAA4B2CQip72+9wRRSj0CYDwAqvefawRwvp4EgGZdJSK73WS5giilRgHg9YdpinZyGJ/TVF1MU21zCrwKRCmVCWA0gN9s9r8RIJRBP+oKYKuI7LALvQJEKdUXwMvtgdB1y3f/myYQ4Pytw4IpERH6jjFaQZRStwF43fQJRobv4Zyc/3Vdl0AgoAw12EDM3zQTfWaBiFDzV4C8CKD39TimObExeSwWMxZnwXFiAiUkJCjzt7VAOnC1iKxoBVFK3QGgAMA5NzX8+NOervMWLB7d0HC6p/25pmmxbVsr3k5O7tYUjUbl0YyswsuxWNApo0+fXlVlK0vWB4NB3QFzO4DFInLCoFdKTQHQ3StPRJ7MeSEYCkVzx+XsSuigtTpBYjgcGzUycoqrj0ajgZ3ffJ/654WLoVhLLKC36FKxYUvGmTNne/TonnJi3dqPy8LhsG5pxoRlnqkXkQ9EKRUGsBTAeS+nuG/AwOLXZk0vy30mp875jmUWglArzc3NAV5z3lg0fN/+g/1SUpIbdF3X1pZ+WJaYmKgTxuG89M18gjwI4FkzZ7iyEGTu7PzSsTljjruB8B4hCNPY2BgonD1/ROXeA/0nT3xuw969B3vWHa9PW/1JyeqkpKQWFxDmljKCPA/g7njpuy0QyzSEySuYm/lL5b7+r74y4fMhGY81LH2n5PG6Y/VpcTTC6DlEkBlmkonGM42bRqzIYKQ0NTUF8grmRPb8vO+B6VMnrhs2OOMU5b215N2BR48eTysv+2h1KBRyMw2d+zxB3jQzKHdS36bxgpgxbVJFVmTYSUtQ+bqNvauqalIXLSz+jlETDAaNMLYN7thCkPfNTOqZwJymaQuCkaFpmpHMrMF71uUAYeR2vmYQPxA0AZMYJ7QnNoI4M62ZVLsQZKFZ4PgyDQXTJ3hNySvKpE9Y5uBEhLBWzkmPHKnrWHu0rtPIzOFGLeLQBm/RNBpBZgG4hRHox0fMCJH8wuKhP+za/fCMaZMrsiJDT7pBUF7+rOJBVdU16V9uLi91geArdNYLBJlg7jGe9aXlI09njzbyCCNk2fJP+6amJl+MDB/SQH+w+4B95XkFcwYdrq5N/2rLZ6UeC2X4VhOElViun4RmgTBf0DTc5CjcC4LPfIAwoa0lCImWeG14FDbgocFF48Zmby+cObXS8hH76izHdPOB3PEvZTdeagpvWr+q3EMj3Phm+tr0ZhbNy9i+49vBaWnd6ylMqSsi05AvcnXVGW2OBn89ey65qGDaGrd9CgA3vQYRec8CSSdVPK2sLF3T++ChwymeycblgaZpelZkaO2wIU+ciaONRSJSb6/QJgJg/9Leit0vKwujGhFZbmjU+kopxc6NpeLfN7By94JiqdgRwHwRMcoPZ/HcD8Aksza5ugr2u9b471nF8zIR2W+96tZOZJnt5f/VTrAQ2iwiO+28Xg3WCLPVvHADzURzdDYhvnYqLV7LyR6HlT1bi/Y6MB2TzfkKey/TpkZsDsyuLJs5zXTi62nC6ZSVADaKCI8tXIffY4k7TVOx7+Hm6OdYgptZjWmKY235uS8Qm4Z4KHM/gP5meckjB24RHNw0eXTBcGQ0HBARHt74Gv8CekW0ccSjLTYAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"img/role3.80580de3.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAiBJREFUOE+dlD9oFGEQxX+zpyISC8HiwCZFwICNVgpeINYajBgL8cxtREk6bSyEizfnpbCxson45/YS7RQFY2dxkBO1slTRIoXilYIBA2Z35Dt2l826KDjl7Mz73sx7s0JB1Kx5XLApgwpQjkv6Aj1DHnek8SLfJtnEBWvtjwgDYCdwB+gCa3HNMDAOzBqslyhdfCDzH5P+FKhmN45C9Mzg2pLovSKmSc43nTNogTfZkeuvXH4A5JiEhL0IO7Uszd7fQJJv561R8ZCnJUoVx2wA5Ju+juB+nsmMNU8adgXo/4Krj0S/ZB+JmZ3riI5JvNiFQPRQtqhqOlKC9wLb4nw3ED2WZ+ubvjOkLr5pG3gbiC5mi6ZNqx4sJzmDzY7o9gKgOeCw1Ew/CUwEoh9ytH3APZJGILpF5XgtowbPHaOfwJ5AdON/gM6YDu2Cb4VAvulwBCc8uJ0B/x5iE3lVU6Ci0c6a7t0BlwWmgNEY7KZB2BGt55ino7UFedOWhnNyGr7ppCEH4sQGWFngViDaz9bNWHPWsCMybepGaOXljxdZNqgLrKzBy67oZpH8EcwPVKiZrnrIwywr3/QgiDPkiCCfXV0gjWaeTYRVB4bMSLiavZ1/nUlymwJjzjqpL5Lb8ZB6fl95ULeXCFvI3uYWg/mmToG7AkOCLApe9wfhVwe0m9I+Ixo3zF3+usClrIn/cKprigU4XfRji+DJkuhKnuVv71gBhfp+NDMAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"img/big.873230af.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAAjRJREFUWEftl02IT2EUxn8PQ1LGwkeRsPOxUCJGomzIYsxSiWJnxEqmWQn5SBbysbFghWbNlInSoEQikjIbWVFolHyGjs50ZjpzjbmjO4v/4r51N/eezvu8zznPc94rGmSpQXBQAylWomakZqRMnWPqETNbDWwGJqaEn4Arkt74OzObB2wDpqWYn8ANSY8qAzGzFqAX+FZINhl4CawPgA+BBcCPFDcBaALWSXoyGphSRszsMLAfWAEMnD7WTuAssBSYAdwDdgNXU4yz9AA4LulkVSBHgT3AQklejoFlZruAS8AyYC7QA2yRdD3FzAT6HLAkP9A/11gYqYEMo8/MDgCHgE7gc/q4FtgBLAmlPI6eeZ5ipgMngA5J56qWZg5wDVhZSOTSvCBpX/TMxQA2qRB3H2iT9KESkNhkCrAK+JiSfZH0Kic3M4/JMv8FvJZUlP5fmEqbNYA0hzqmpgxvJeUyuJKWA7MyWOCZpFzSEYkpBRKOeQtYXMjwG7gsyf3EQXQBW0fY5SmwUdL7SqUxsw7gWJjVu5RsA7A3AHpTunOeB26mmNnRwJ3j0az/4yOtkrqToXmZfAyckXSkKiM1kKKhHYyhtwbIPbIdOB1Dz2fKXcDnz1BpgPnAbe8xSaeqlsanrm/iBuZKGVwuZb9nbIpRfwdYBHxPMX5/8adF0otKQEKaPmH90vM1JesHugYd08yclXYY9ovid5PuMhCes9RHRjvFeH6rgRTZrBmpGSlTWMP0yB8q6uQjVJdm3gAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"img/role2.12292406.jpg\";","module.exports = __webpack_public_path__ + \"img/addicon2.75c2408e.png\";","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAACJRJREFUWEedmG1MW9cZx88999x7bYyNXwgEQRpeQkxCylAnrcsqTcun8mHVNFVVVW1KMuWF0DU0VSS0aEqTKd2XrOoyMiW8hDUuWbtJkyJ1X9Jt2kqbLkk1Jbw0gKEBE4iwIcbGNlz73ut7p+ccX9sQpyE1Qo+vse/5+3f+5zn/A4e+xaOzt7cKp/QyRKRiSRRcPEJoVZEjSMMJXU8vtLcfmnva23Ib/AB3trO71mEt+h5PjCbOwC45lVQ1RTNSSVnVEULWIptACOaskkUwDD2CdG44Eol82dHRPoUQMp40zhOF/L67u8LG237K8+jZcDgiLy4+lGU5peq6hhDGSNd1hBFGOtIRxpiOZ7MVCR6Py1ruKbWqqjZiGMmrra2t898k5rFCOjo67Fuq639iKyr6QTC0IAfnQyuKpsGXp4PnV3gOYugDs+cgChOMqyrKbR63R1I09cbMtP/js2fPxgsJKijk6NGj0s5d323VjbR3bHwyrOu6rmka/TxUGEgDEpiJWkNERyCAvpcQQqsoithbX+shgjT21dCXvefPn0+tF/OIkOPHT5c2NG47Fo/Hi6emZ2Kapum6BuB1lK1ZIpRLBsQ6IoRyoaLgRxQJrt661WEvsSfuDn/97rlzp6P5Yh4R0tvb3xZfTXi/npyOwuBAAMZlRJgYSoaSoK+w+cjzCMaMBMmIoGQwQiIhqLqmxuly2MYPHNjb9Vghly598FJKU1tgOjRF0zUdRJhidPocRDGPsGsYIWmtcS6XtnzHuvrVjDPyRQCmjHoEY0QwMf2CCFyLIt7hrfdIgnDt4MG9fzfFZIlcvPhBmVhETt25MxyG6WAkdKQpGv3WlAiQoeJyhlWxyxLa+bs3DUIsiCDknP/bX12ha+MghnkE0wqigAi8LloseNdOryutcmfa2vYugJiskJ5LV15/GF6sm5t9EIfFAQNChWWaFUWvTRKMTqLspYZ45auvIsIhhA1ElPv+ipG3/0KnhVLJE0Fyoqq3VNrdnk33Dh/8+YWskIsXfZWCxJ8cHh5dSCpJWCRIARJ0WpSMR8yaWz1wg2jdiRbV3fw84g0ERMTl4Vub/O9eo6uFeoMalRqWQKXXIlDCzzXtKkul0mfa2vY9oER6+vpfjkaWXpgKzMbM6WBEGJUckYw4aGYwTbzLEmt6r9UQbU6TiBS5OeAc7/yU+gMIABFCss9BDLwG0/VMdaWjxFH8edvhA1epkPd9fz45Ojphia+sqIoC35x5A1YGECkkRuFclmT98RfTzoZmxHPIJFLk7/JZF/8dYJ4QqScIAQIgDK4ZITCu0+0SvfW18i/2/ewM5/P5PGqa/+3g4HBQoQTWkoDrkO2tFk0sKzdglWIDQdVtFdV08KwI5hFOWwpynJLkeA7x6eWoe/TiJ5K2nAQCTAyjYf4+19y0medsv+L+2HO50UhrR8bujoeBgEmEeUSjXpkt9Z2irQIWwfrB11xnWgp9H/slqVCg8tYJn0kCzEs9k/HKDu82DyeIXVxf34e7Y4nYa5OTU0sKGFPTEVQ2HazOenynmAiEhMT1ARQbDKjb3thXiAj1yjpxW/61/zc5Imya6LQRjLz1292OYukjzue78uP5YHhPYHY2XkgEEHpQ1p8lwsc/H8DxoYBa98t9hQbNkWPCOT2xXPXZG+cyzYx6A1YNiIBaVVlhr9y86T9UyIPg4p652fk4I5HvEXY96+nPEuET1wfw8u2AWt++ISIkFZwp/6LjMluyOY+YRKCfVICQrj7fbnk19ZrfP7HE+gdbNVDN6ZktzSMCQmBqNkhEjAzfKh9675q5aui0AJEMmfq6Wrej2PERM6uqHRnzT8D+wjpqppqGnXHleWT1vwNc7HZAqd2YR4pCn37iGbt8k7Z3woxK+0im7mjc7uF40sV1d39Yygvpd24PjgSpR4CE2VEzxp1x51YNmJVfHQkktx7ZkEecE3/ylQSvB7IGzfcIEVFTc+Nmidd/nWto45OWeDyhUo+YZDKddbqkL+sRUb4xQBJDgVUQUqCPrDdw2Z0zf7CtTEdzTS1HxOkoEb3eTEODztrX1//yYmTphfv3H8TW9hG2hO85+rKrRpJvDIjySCBeeeiJRHgtEqq6dbyL7bpr9xq4rq3d6rAXF+VaPNv08MnB4bsLNIcACXPX1XTkt3VnidB+8rjmhmHjy/QRTkttmuy67IgOBqGJmfuOufFZRBHvamosS6f03KZHN75LV15fCofraD/JC0Ng2If8iw0xaff3oS8YHNtlEVRo78RACLP2jgQOISOVFJVQ0B76x2CxPBM1c4m599CklukfpetjAAihwciC3x4aGl1SFIVGgRwZmoSoidfnEZbUWCKjIZ5mEKiZ6cjkEjMcQbVZrbzXu92ZVo1HgxHchEZFVWnx+6fCkEtgq4cmRzMqTWqgx0xquSMFE5E711ARICqTyKiITB6BHLKjod7DE+HakUJR0cyOPZf634zFYjVTgZmoTr2So/Bois8FZ2acfCJmQsvLrgSj2uoap8NhnzCT2SOZ1Xxh//7Tlh/+aPuJh0uRkjm6ipI0IufONfkkEEv1+USy5xoWjFiap9s+PU64S+zLN29+9k5PT4/6jccJ+CMcsJ5tfv6wqqYa/OP3woqm0Gmi/sim91yApiTWn/ToUYIRslqtfG1dtVsgZGJk6H9dGzpg5au8cOH9V3iB3xNZishz8/Mr4GCYLhgWljcMUujsaxpXJCLeXLHJ5vF4rLqu/hMiYf79n0gk/w3mIZyjh/CwHI3GkrFYnDqYiWBnvXwijmK76HY7LC6Px8ohNBJXVq6+9W0P4euVnzvX/YxgEXaLAmnmOM4ly7Kq6ciQV1dUECFZJIGIhJMkSeA4HE7K8mBaSd86dqz1/uMoPBWRQjfp7OytwpgvwyKyC0RywntULRXVFRTXpfRC+6Gn/0fN/wFddCjkyYy9LAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAA/FJREFUWEfFmG1oVmUYx3/Xns1oTy/M5aqtSNanFPJDUCCDWS2w0iwtISSR+lC6MsqQckovQtaHKCrnhoJCfpHAGitovmDDJX6SCkWylw8SNbWpW6zm3HbL/+E+D8ezc3zO87CXG86Hh+fc1/27r/u6/9d1HaOE4Zy7EbgTqAay3sQg8A/wp5n9W6xZSzvBOXc3cB9wLzATGAHG/CMzZf4pB84DPwHHzOz3NGsUBHHO1QDLgbmAdv0/MFrAeAa43nvrOPClmZ291pxEEOec/nsEWAxc8hAuze5C78jGDcAM4GszO5g0PxbEOaeJzUA9cCHk/iI58q/LQ1XAKaDNzIajhsaBeIhXgVqgv9SVE+bdrGAGPjWzy+F3rgLxx/EKMBsYmGCIwNxNgAK41czyRx0FeRJ4yEf9JHHkzOra7zOzzmCRPIhzTkfRAvRNQEwU2oSuumA2m1mvXg6DrAXuAP4LW/msdcfc9u27ni5kOfE2mI29v7ll5+LHFyo2wkNC+IeZbcuDOOfqgA3AuajB19dvaty3/9CCUkE0b9XKZzveeK35xxgbs4B3pTE5jzjnngHu91px1fuTDKJU0WNmXwUgHwK6TpLtqQSpyB2LWYs5524F3gZiJXiSPSIOrZ8DUSJb6RV03DFGQWbVVPdWZCpG/vq7V4FNXV3t6eHLl2acO9t3m37X18/+ra/v/Mz+/gElxty4RowEV3mHQJqAx5IELArSfaBjSzabHWl4cNE6K7Oxwwc7Px4cHCxvbFryliAPdXW0dx8+UtO8dv3qlCBS2w6BPAoIJraGiIIsXbrou8rK7PDu3XueMLOxFSuWf9N/4WJl57ddTZlMZmT1i6v2Hj/xS+333T0NKUEUsPsFstBn2VQgpVzjAkeTB5GkK9XHJrgpCNb80cwDXkjKL1MAoqDOBest0nzgTJzbpwBE13djIGhbfPk3TtC2te+c07Z911Ojo6OqRYseFeXlw++98+YXMblGtmTTcoLmJX4ZMD/p5kRXHxoaKnvu+TXLTp48NSf834LGhp7PP/kgsRyM2YUC9Qcz2xuA3A5sSlLXODdEYRrmP3C0betHXUW4TGsHSe9MuAx4GbgrLvElGQ9gqquqBoqEkEkV1SoDWnP5JljEOSevbJz2wsjHyhLg4WktFT2IPDTZxbMETMXz1sTi2cOop1HZqKptetqJULxcB7wEqN9Vg1VshxeNb3laDdavQHuqBisEo8nKyspD6nf1lDIqAW2s08wOJBlI04RLgtWE3+Mr/GKacEGcAPaYmT5ZJI6CICEPqftTgR18loircSXZqkP1WeJn4KiZnU7jxtQgYWPOObWNCmYlzAn5UHMFqp2prPBpujAAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbxJREFUSEu9lkEoRFEUhr9R87BCJLImRWFhJ0spRaZkLEaRms0sKImtDSs2s5mVMgtPajTYyJKdsGESa5GG2I2ZQqferde4d96MGd7ynnP//57/3Hv+56Pw1wh0Au1AE1DnpL8DaeAeuAVeTDA+Q0CAh4BewJSjtn4BV8CJjki3uQeYACyP6vLDWcAGrt2BfIJBYKSIU5u4pZoj4FQluAm6gOkywN2SbQM3sqAIRPN5oLpEWUzpH8Am8KoIpoC+CoErmAtgVwgagGWdNIFAoMWyLJ9t24868mAw2Or3+6vi8fiDJi79WBeCAWDUBBCLxcYjkUgyHyQUCrVFo9GxcDi8bzoAkBSCWecxaRVSQG4S3ZpB3pQQLALNhfR3A0qenFxXlQbjWQhWgRqvBisSySsSXFIz/0Kw5AwyYxFlSJSWCuaADhN6mU2+++treqAe2oquAjl9Lpf7LPTQstnsVyKReDIosKZGhYznfq+bVGL8HNhTBPXAAlBbIogpPQNsAG/ucS3WOFOhcb3lWOkPO6yE4RwCZzrDUWvdwOQvvEE8YAdIFbJMFZOeDDseUYzpXwLHonl+U7w2l/3b8g2tB7xkxfg3RQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./function.vue?vue&type=style&index=0&id=0cc390ec&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABHBJREFUWEe9mHtsk1UYxp93dPNGJ2PeEiWCThkXnUTRqAlgvGxhbq5uQWOCES8DWaKOAWpw0chFEWeIWFiz6ZCLtz8YDtHoQMBgogYzxRAdUwwoKFORVB2lo7zmWc7XdN3X9ZStnOT7o+057/fred7zXo4ghaGqZwMYY54LAAwHkG1MBAEcAdAJ4Hs+ItJla15sJqpqHoASAFcA6AZwHMAJABEAJ42NDABDAHgAnAEgE0AHgE0i8mOy9/QLoqqXACgDMBbAPwCOJTMY9/tZALwA9gBoFpFDidYnBFHVGwDcD4Db+1+KAPHTzwFAWdeIyJdutlxBVLUYAJ+/jRQD5OhZTqlyjFQfxRvsA6KqhQBKAfwVo/9ggNAG/SgXQIuIfBxrtBeIqo4DMDtNEM57HZiVIkLf6RlREFU9D8AC4xM8GekclIk+s0hEuPO9QB4BcOUgOKbtH6ADt4tIYxREVS8FMB/AH/FWVqxsHBdoWF1ha72PE4qcXLJwQVNJcdGvLjbOB/CSiOzvkUZVHwNwsVucmDO/dnLbt7vzH62c0cu5bMGWveIvv6eibOvc6qpvXNYwzhwQEb+o6pkAXgbwp5txgvzQ3jHyw/ffedP25bHzbppc9PjdZSU7EoBwKn1zLkGuAzDdxIw+7zoNIIwtawkyA0B+ovB9GkB4evYQpMYEmbCNNFu2f3ZhqOuY586phQc5v7ll8whvtjd825RJh/l53fr3Lh+dP/rIxGsLGJVhIU0W3YIgi00EZSZNKs2EiVOePhGJeD5oXl93vLs7o3zaA9VZWZnhr7/4dGnrtu0XVc95ZmZu7vDOHVtaVlmCMGMLQVaYSOrqi/HSVFbVFIZCoaw1r/s3hUKhjMqqmuJsr7frteUvbg0Gg56HZj3hy7ts1KEXFtV+bgnCkzssZZBUT46FNATJIcgSU+BYSZMGEEozhCBPAjgXgJWzpgGEznqUIA+bHONaX9JHdu1qG39X6dSdsRAF14z/3TkpzvcbWzaP+Gnfftax0fH2uxvuuHear7WfgMbj204QVmL3JQpoqwJNY+sbVvsikQhr0ejweDzhZ2vnrfOVFv/CL+sDTWP8gTcqVJVpPjoyPZ7w8889tTZBruE8BrS3CEKiZW4JL5EMPC3TH5xd3tGxL48wh3/rHEqIW2+ZtHN53eJtKcrHxDcvadKzgeFu3Xzj9V/V++tSTYxMegdF5FUHZCSpUtkVAjo7k5uTEzwFCJrgbiwVkQOxFdpMAOxfBlqx2yrDwmiviDRwQSwIOzeWiv8OYuWeCIql4lAAC0Wkp/yIL56vBjDL1CZOB2f7D23nOcVzQER2O4vc2oki016mq51gIbRRRD6JJU/UYN1uWs2jgygT5RhmIFrjt6+/lpM9Dit7thYDdWA6JgNiY2wvk3RHnAmqyq7MB2CCceJTacLplG0ANogIry1ch+21xCgjFfseJkebawkms71Gip+TebIVSMwO8VLmKgAFprzklQNTBAeTJq8ueBx5Gr4TEV7eWI3/Afru9GI1I5nSAAAAAElFTkSuQmCC\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login1.vue?vue&type=style&index=0&id=128f4cfc&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/bg-right.9e7e41c2.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAldJREFUOE+NVDFoU1EUvff/DBIarJughAwFuwpCBVPIroKiASEm7/2gqIOIo9BO7SbuEWvy3o8BQUWLdapgoREVhHZwUHRwqNjFKQUdknfkhv/DN/20/vH9e8875557HlPKp5Q6zcwXARSJ6HBUss3MXQBPrbWvxts4eVCv14855wwRHSCi+0S0RkTfo5oCEZWI6BqAHd/3rzSbzS9x/whIKXWKiF4AuBOG4VIa0/hMa30dwAIRnbPWvpXzIZAwGQwGXefc+Xa73d0LJP5XrVaLnuc9932/KMyGQFrrd865h2lMSqVSJp/PHwzD8Nf4BRGzirV2lqPBLhpjjseFQRDMOOdO9Pv95Uwm02LmLQBb1tr5FLANAHOstW4R0QdjTCNiNwngCYBlZr4F4HYYhita68fGmEtprIhoRhh9ZeazxpjPUiRSCoXCKoBv4hgzFwF8EiettTdTgKYBvBRGv4nokDHmjxQppe5GNheYWQAmiUis3wSwYq29lwQrl8sT2Wz25y4grfWbCGiXeQA+yryIaNsYc0MKRkDj0vYCSiAbY0wQzXQkTVx532q1ZJNlFYSRyNmMGwFMyaxkZgAyzPw6BgqCQDb9JNdqtTOe5y3E9iulVpl5KhENwZO8TRNRQyRVKpWjnU5HJMrFG865+eFCKqXWPc97FLP6n82WGmHjnLs8XMiEzvVkdvYDi7PJzLOyOqPQxtnxPG9uP2YRk8VkNv95RrTW4sADZp5g5gYzr/V6vR/CLpfLHQFQAiDJ32Hmq/ESj9I/LiMy4ELaw+aceyaRGe/5C3y9Qn5D8dhbAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"img/close.11bc73ef.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAjtJREFUOE+NlD9oU1EUxn8nKSJSsW6CIhkKdhWECqaQXQVFBaFqUlGqg4ij0pjTppu4V/yTl6ogqGixThUstKKC0A4Oig4ZKnZxsqCDeUdO+l54po/WN9537u9+3z3nu0LKV7TRg4IdN8gDO6KSZYF5Q57UpfKyc5skF85adU9IMwA2A7eAWaAR1eSAAjBssJIle+6elD/H+9ugoo0dgPC5wdVJ0TtpSuO1kukFgypkjtTl+htfb4FcSZPmfIgdvS+j8+tB4n+nrZLPIM+yZPOurAUqmb4N4W6akoJp1242bZuUaz86D4iUDdZFByS62PFAdG9cOGRj/SG27w821QU1gSWDpbpoOQW2YMiIlExrwPtAdCJS12Pw2GBK4LLBlUnR6ZLpo0D0ZJoqoF+Kpl8EDgein7zIreRgxuArSEOwvMFH72Rd9FIKqM/ghSv6BWwPRH97UdH0RtTmnKwCegBv/aIh03Wp3EzCTph2b4Hva0Al09cRaE3zDD74fQHLgehFL2iDOq2tB0qQg0B0KLrTtrWaIO9qUvFJ9lFwRW5nMd5o0CurcWkYdAm8ikFDNjps2H45Y3ooA9W4/UXTGYHeRDSc53nrAybc0qDproeibtEPXgih3BrIoulcBnkQq/qfyfYaVxNip1oDmfA5l8zORrA4mwIDPjrt0MbZySAjGymLlIwns/nPM1Iy9Q7cFugWZELIzP6k+c3VbSW70wgLhnnyVwTOx0PcTn+njagBx9IethCeemQ69/wF7mENhc3pK9oAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"img/role1.6f93a8f0.jpg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAAdRJREFUWEftlrFLl0Ecxj8PKYVgDtZg9AdkQxCGudSYODUGQdDqYFsSBGXRoo5NDW0FzhEotGRBIGIo4ipONhQKUYmVfOUL94PzeH/vCfcbHN7vePd9n3ve5+557sQJKZ0QHjRE0p1oFGkUybnzWGfEzK4DY8CpCPAn8FbSto+Z2UXgLtAb9fwD5iUtFxMxsxHgI3C6AuwrcDMQXAIuVfT8AW5I8t62lVXEzJ4BT2owLgP9wOeankeSpkuJvAAe14BcAS4ACzU9U5L8h4oUaYgckc/MHgIzbTT9CwwGp6wkroo/eSDpZenWDADvgGsJkFvzlaSJYN/XwD2gO+n7AtyW9KOISFjkDDAM7EZgvyVtxuBm5j170dh/YEtSPFbJJ2vfQOQs4O7oiVC+SVpPiFwFzsdkgTVJv+rU8LkskZCYHyrC6gB4I+l+IDsH3KlYcBW4Jel70daY2STQLoz8nHia9gF1ydmRw9qJHHkq6XmpIg2RNND8wqu7J/zSOwd8qpF+UtJs6dYMhUVi67Yw/cYdBbqARcDtm5Zbd0TSRhGRYE3PEH/0+NuiVTvAXCsxzcxVGU8iYR94nyNxrBzJBVGn5rOB1qmFcjgNkVShRpFGkZxrDgHUVpcjEG8sxgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABY1JREFUWEe9mGtsk2UUx/9nlNKtb7d2XdfB2pXLuM0h4IgaIhpJjCiRW8IHMIAz3DIFBeSiLEBkIqJgNi4JdyJoNDED0UTUryRcokCAsSuUdmu3rrt2F7a17DFneUvKaLt3UnyS98PWt+f59ZzznPM/D2EQSwiRAGCi/KQCSAaQKJvwAWgCUA+glB8i6lRqnpS8KITIBPAOgLEA/AC6AQQAPATQK9uIAzAEgArAMABDAVQC+JWIqgbaJyqIEMICYB6ALABtAB4MZLDf5/EAdABKAJwlInek70cEEUK8BGApAHZvxyAB+r+uBcBh/Y6IroSzFRZECDEbAD/NciiekqPv6xwqgxyq3/sbfAJECPEmgDkAGkPiHwsQtsF5ZARwnoj+CDX6GIgQ4jkAec8IIrhvEOYQEXHu9K1HIEKIFABb5Zzgk/EsF4eJc6aAiNjzj4GsADAuBomJQCBA3sZGtTY+/mFiYiIf83CLE7iciI49AhFC2ABsAuAdrBtaW30qh6NaW1JWnmy3Ow3V1dXGhoYmfVt7u1ank9qPHy48FwXGBGAPETn6QiOEWAsgXWmduFNWoTt56swUl9tjbPX5JL/fPzQhIf5BitHYYrWkN460WZoN+qSuwgNH3jpxpOh7my0jUoXlOuMkooMkhNAA+AZAg1JvbMn/fLr9viNt5qsz7mTYLL7Jk7KbUlKSu9s6OlT37zmlsvIqQ2l5eeqly1cnDQDCW3JufsIg0wAskWuGIpaNW7bN6Or2q2a+/kqV0+lKunfXbqpvaND7fO2SP+BXSVptp16va3M4atIVgHBtOc0guQAmKA0LkzLIteu3x0uStiNRJ3VYrelem9XSPHrMyJbsrInNJpOxx+Vyx7+/cu27CkD49JQwyAa5yPQococMEggE4nbuyL8oSQnc+J5YDoczQSGImtOCQb6QK2hYg+E2YY9Q3BCxZ9f2i5HgBwHCHZsYZL9cSZU6pC80MQThk6uPKUhvby88Xi9rEXS2d6pW5q1brCBHGMTAILtkgfNUobl246b+wKFj02tcbnMckTAY9K319d4UBSAcmiEMshlAEoCIyep212mKf/ltdE21yzB8xPDWispKs1YrdQdzpKKqSvpo/dYFE8aPdSxaOP+WJl7z8OipMy/cuV2aqQCEk7WFQZbLPSZs9bt69Z/kgt37Zg0bpu6xWa2eWo8nua7Ok5qTM7U0CFLw5d4cu92RevxI0SOdceny38b87QULTh4/cCbDYomm7Pj4ljMIK7HF4QpaV1dX3LLlH8wbM2p07batG65oNJpe/t+qvA1vm9NSW/qDHD6074JKpRL8zo6de162O6rTTp84eFatVosoJ4EL2g8MwkRfh2t4NW63Zllu3pL93+7+MStrAmvWvvXe8g9njxubWfvZ5o+v8d9379q16zblz9VJUkdamqnZ6XSndvd0q/M/XX/hxWk5rOyjLW58G6M2Pf5luSvWzE0zm5tyly660dn5QPXTz+eyyyoqbYX7dhWPyxzTHtyhhvOo+Hym212blGGzNC9cMKfKZDINVCS56bmIqCgIMpKpwnmlpKQscffewtc8Hi83J1itI+rWrF55acqU7BbFhSfyi+yNr4jIGarQVgHg+eUJxR6sD6zxzGYzzzSxWCyMKojoKBsLBeHJjaUiu/v/kIoSgJ1E1Cc/+ovn5wGslrVJcIKLxa8PtREUz4eJ6Gbwg3DjxCx5vHxW4wTn2jki+jOULtKA9YY8anJCxipMrNz1MsRf/d0cbeTkGYeVPYPEYuTk4fxY6CwzoEeCLwgheCqbD2CqnMT/ZQjnpLwOoJiIIhY3pdcSo+RQ8dzDRUrJtQQ3swo5FPaBMl4RSIiH+FJmEoDJsrzkKwduEby4aXIb4OPIp+EWEfHljaL1L/SRanFFqwwiAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"img/white.733e7f3a.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chat.vue?vue&type=style&index=0&id=d5124b3a&scoped=true&lang=scss&\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAB9hJREFUWEelmHtMW9cdx8+9PraxDXb8AAMpCQQSIInSVdlK0nRiytJtzZYHS5M/ljYkBepQ8kCbqmhLupBFXdqpUyWktbVSHsbBEKJkIaxZmrb/dVparRXJyIuE8MaY2GYYjO3r43unc66PuQYSKFzpcq4l7jkffX+/8zvf32XAAq6ampqkMKPMUDKCMQJkGjyFACJ+gAQ3y4YHSkpKxr/vtMx8X7Ba67OhUrGeAWBdOMQZghyHwijMozDi8RxQDlk5lLMJigQok7NeGQNvclzwO4tlf9d81pgT5KOGhhSloNjDccE1HrfX7/WOBgKhUATwPCAEkoslzyxQaVQyg0GvSjYYNDI528EFxi+Ul5ePPA3oaSBMTf25lwSe2eZyuULDwy5/OBIRYgA8ADNRMAaL/wCWZYFcJmfS0lMSU8wpCgCEy6X7X/3ySTCzgrS0tCgmJsMVfr9/RXd33+hkMMjzWIHojSfDz+TCgyhFVA+WQFAY/KxRqWRZWcv0SrW6c7DnwcdVVVXcdKAZIFUtLYrlAXTU7famd/f2jfEIASSFiCohcsyEIRBYFxbfAEAWkmcIWZCVlanTarUDPPJXWyyWsBQmDkQQBMZmbz7sdnszHz7q9hEFkKgE4hFZF0ORoFAQqggZSWCiirAAEhgWsFAcIYQgM3O51mjQdZXsf/VDstmiVxxInd2x0zc2sfn+vU4vUQGJAFIgnBdiiKKKEIUIQ1QJMU/o4qIyIgQd81bmGBWqhOsHS/e1zQCpqWlKF0DkeMfte57J4CRPIVBUEV4KJMmRWK5ElSDpQZWQhEUKo1ar2dV5ucZwyHe6oqJiGMPEFKlvaDrS2zvwjNPlmkQ4LzAAQuDXRb9as2P7y6/MpxbM9j84y61n6+tufPPtAMkXKKqTnmrWpKWnPip7/bWPYiA2m21pIAT+0NFx9zGHOCCCIBKaQ2+WFhYUrP/JQkHwe59++lmro+VyOwbASYtHBVSAdevWJI+NTpx6663yEaJIXUPjbufQyPN9A4N+CkFVOXqorHBDwQ8XBdKGQZovtVMIEQiCzIyMJJ1+yVflbxT/nYDUNzS/d6vjTnhiYgJRAApUedhSuHHD4kCutF1rbWy+GKcIBtHptPJVOdmgrOS148xZh8PMT6KTN291jCBODAm5eQTw78qjBws3bvjRohS53Hattan5QjvOEaoGHZ97bq15sN99nKlvbFn/P8/ovnudD0bjwyIm7G+ngbjdnmGEIig1NeUZrObgkLNPoZArkk2mVPy7t7f/oV6vM2i1WgPNq8tXrrY2Nl1oh1ARyxExTyDIy11lBHLZJ4yt8fwWp3Nka09Pr28mCAKVR94s3LRxSpGi3fvOjI2NoatXWn7HCzy/+edFHyRqNPCLf178/WO3Z3jnrn3WH79YkPLuO38snwkyU5Hs7BW6JYlJrYzN1vyyc9i1pae/f5yA4PBEw4LHyiMHCzdtLIiFpu3q9WsBf4Dbs3vHdrw1Hecv/kOv06l/ufVnWyKRCKqzNV3Kz1uZvumFghelIPbGC+0KBSQlH+JRkrDmlOTPmTq74xeuoccvxUBojkShKivjFVnINiahacShiYegO8ecnvw5U1vr2OwZ9W7r6u4Zm09oFgxCcmSW0GQt05kMya1MTY392YnJQMn9+51eunU5iSpiaBa5a0iy0u0rwuBExXUlP2+VISFJ+QljtTpMDESn2292uGZV5PDit69YR2ZX5AfPrjVzAeEEKWg1tnNn7t7tjEz4cEHj42rJzh1bV79StL1IJpPBhYQFIcR9+HGd/d9ff0POGml4tNpEmJu7kik5sPe4CFLv2OVyPX6hj+6cKAw+caWVlvgShLCk7Afvv7MrJ3vFaincja//89XJP733JTVCLFmYWgAxHPTQw0BZy5clGUzGf5Ud2HuJgFit9jQgE97+b8edEY4TDz2pDSC/CdSUXcQwf/3L6RjMt9/dvHHi5J8/m7IAoiubDkPBlEo5s27N2mQgBE+VlZW5Yjag1tZ4aGBwePnQkNNPIGiZJ4tLITCU6FkhhOz7757aNebz+d6uOhOFwH5ENEGzKyMqlJGRnmhOSX1UeuA32KlN+RG73Z4W4MCJO7fveoJBjidFjSiBoagSUbcmcWjUQ8c5tJgxmlKEGiNsHxPUanZtfp4xFAyfrqg4EG+MMFVtbeOOcf/4T+8/eES2Ms2JmFXENhFDSTwrBomZeOpZoWigxdBElZGYovzcHKNKmXC9dDariEGIebY1Hx5xuzN7evp90/0qMc6ksZJ4VmrmozTxLj5qoKl5ZiHIylqm05v0XaXFe//2RPOM5xR7msgRj8ezlLYTeP05XTzZPlIXP+VdqUXEEAb9kgEUmqOdoFuxurpamaRLOTgx7st+2NU7GgqHhFhzRTu8eXR6NCxKpZLJycrUqzWqB/29D63zarAkdQEfiFvCQbRt0Dkc8LjdganQSDq9aVWOtBJic0P6GlOyUZ2WalYyMqbtjdeLv3hSUZyzCT971mGGCrCH47h8t9s7+bQmnASHZYFKhZtwncpkNKkhZG+jkP+8xWJxP60yzwlCX66ra8pkGOF5Hn+WCHMGv98f5sII0b4GK6FQKaBGpZLLZNDLC8ItAfI3LMXFffM5GuYNIp2suvqcVrUELoURwRQBgkYGAEDRDzVer3Pg2LFj3/tDzf8B6LjLdtjb6iQAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAAyBJREFUWEftVk1sTFEUPufc+15bTVlQCRG6GJ1po6+RSmdaIbEhFlhKhIQdwkqIlSB+IhaibCxYIdZICIn4CTMy8TelndZELBoSpKS005n37jnyJplnCKbJs2hi7vK9c7/73e8753sPYZosnCY8oEbkVydqitQUqTadU+qRxU4iroDWIoIqA7LIGBTo0tDQw3f+s4gTX2AJbgKipnKNgLjseTeGX6XToYlEnHjCRn0XAPKVYIhis0h2VMZXNk00KLtRPUaERSJYCOpQCAV0QXhFLpN6+jcyVRWJdcQPEdGe/KTbZUNd6fb+QstsRaI+j7kdWWYrTQ88ge1UpMuBapZZoBWlgPnYYH/qRCgibU7iCCLtLI6bllzu8VgZLNrRu00RXGAWBwjmI+BNEV6fzaSulWtaW7vm6Ia6IRbuy2ZSh2pE/qkiUad7ryZ90Hi8n5C+BROBshwRt7jstiFjk9L6CbD0IWB/Rc0sRDrOxuzLvkydCWdNW9c8sOquIsKynz6RAi6AnBt4kdztH9DW2XseAbYAghUcKAAC8sjkixuGh598CkXE39zS0lJvNTR3K60/l8HMpDf++nX6TSV4a/uyblJWMOZGxMt/wbcjI8mfRv93hKqObymsIvGZZINDlpoRgLC8z/YnAxtKdZ09SzVgc2CNx+OjMvbi48BAYOmfVKlKxE9MG9RtQIhBhTeCYID54mAmubVkjdN7BRE2VtaUjAF47lJ+de7Zs4+hrIl2JPYpoqPGyHYk+VDh/yoi2uVOuDHLkllg2U+Z5Syg3AoUAZyrEfuM4f3hm3WKgUaAN9nIuuzL5PUykUhkabPd2JBlltPZ/uThUIpMNVn/HyKxzp4DCLjH9UwPuV7QI1ivNytUp1zD7Ug8R6O+z8zbuOAG1rCyFlo23QGRo4OZ5MlQ1sQ64l1E6j6AH2BgKsBmiED666isaWwkrerlHiJERWAyqPH/XwRV0S0mcgPpV6GI+JujS+IOIG5CwokfOQKjXCheKSem/11RdfYOoR8zjiwF15jr1Uj4mFVz5G+3+JfvakR+VbOmSE2RahM2bXrkO3RfvTK+RwXuAAAAAElFTkSuQmCC\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./handShake.vue?vue&type=style&index=0&id=e4579124&scoped=true&lang=scss&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABBlJREFUWEetmG9olXUUxz9ns+2OtVpzpZYL/4AtxLVQbCvo3140KZGhEitQ7EVTQ+xlsWyE7kXQi0oUIUhHkAnCzF406YXOXujSF0NfZEI1bdFNyG1qtCV04tw9z/W5z33+3usDl4d777nnfO/3nN/3nPMIJVyquhB4CLgXeMBxMQHcAq6JyHhat5LkB6pqdkuA1UCLE/w2oIDd7boHMDu7G6gLwA/ALyJidpFXLBBVXQB0ASuAf5yXGzzMuYGpcV4XgUER+SMKSSgQVa0D1gFPO8H/Bv6L+2e+7yuAWqAaOAMcF5GbQT4Cgaiq/bAHeAz4qwQA/lgGaC7wI/CZiMz4DYqAqGoj8LZTiDfuAgg3poG5zynoj0Rk0gsmCMg2h4kCw5QpiTKvBy6JyIFQIKq6FuhMm44L49QfPscTqxdzpauVsRjQbpqGROQb1zbPiKqaLvSlBZGdIrN+HztnVDPMgbeekyNb2riUAIzpz24RuWa2XiDbgaVAYFWHOT54muZ9p/RV5ghUKMselp++3MRXCVJpp/JnEdmfB6KqjwC7TBXTFueOL7TzzK/yFJWKMdK+lJG9G2QoARBLkWXBWPk9x4iqrgeeAeyUJL4sLa/tp+fGba13GelYLsMfruVUQid2ir4XkUEXiLGR8ch1rJ/sBJn3jvLS6Li2Uim4jPSukYGultiCdf1XmViKyG5RVROafiAbFn3Hp3SOTzDPqKdytrJ+m2RRLngexGyNPFgv2Uy1Ttvnc2uZ3NPJifm1TEf8s/nAOwZkObDVOS2B9qu20YdlNAfEF7zgPdyxmwXd1MDYYLcMRAAxIg4YkHagG7geZrxqK30uGx0rGW5bxlj/12wOYiRXKz5w53vkgwggDcBhA/IK8ELUsfUy0vGkDrc1y1j/Md0cFNTPSF0NUyffkI8jgNgxPpkMSBmMNDVwZbBbDiUBEp8aT42kZaR9ESN7X47UlXxq4ou1DEbWreDErmflbJJitba/J+r4llMjvS/KQNfjkbpix7c3kaCVc2o+3yCftMwjbKS4I2hJJL5URhrr+HNoS+Hc4UtRkcRHNj0vIzk9CRO3Cmt8szpSXSUz/Ws49PySUMUubnoOK6FjwMFvaT5+lra8slZ4RMsNnrtDTRXTTY1kX18poy0LQlNiIYvHAAeIteT3HYVNO63HNkmfgXUsGxmLByMHTEmjYkoU0aOi60xVdwKLIZLWlLELzI2Jy+5k5n4TNMXbXPIucL8zKN2tNLnrxJTplogUbItRC9abQHPaYTqEKqsJk/LLuZafZMHyOlLVjU5ntp23nJXT9uDvbCQMy2kpS7hNW//GFIkppqXYAJS3hPsDqeqjgHXq1gSPJWxfHgVGRORqksqOZSTIiedBjYmSnQK7rJ/YTlTSg5r/ARLBq51pOvXyAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAAApJJREFUWEftVjFoE2EUfu//79LWUB1sB6VDhpgmxV4pKb20oKPi5CgUBFcH3SyCUK24qKOTg5tCZxEUXNSiiYS2NrFJmgZxKDpUotQmMbnce3LFXI+YmMJlKHI33r3/ex/f9973H8IBefCA8ACPSLMTniKeIp22c18zckKL6RLEOUSQDUBi3oaqeLK+/vaL9S6o6UMq4wwI0d+oYWCD6vXn+bVk0jWRoKbHfKi8QoSeZjBiWi5y6XR/uU/6/PI9Iob/ashcrjKdKqQSy/8i01GR8Kg+L6Uy1wqEmcEwaQSJjyqqXERsDUemeT2bTtx1RSSixe4IIW+0I0LEGgg4LgBftCNiknkrl0rMe0QaCnRFkWFt8poi1HttrKkZZESQsF8q6pJwbJWz3qybV3MfEw/cWROJHgO15ykiTDhngJkNAH6YWY1fsRpExqYfIcBFRFTt9WUGBn5nVmrn8/mlb66IWIcDgUCv2jc4KRXluy33r3ppYyP5yQkeGpmYFFKt2DXM9coP/Ly5GbfftSPTcX13wyqoHxY+0IQqD9lAxF9z6XjaCRwcmxpXAAdtRepUKvL26lYms9ONQBvygXwJCGFw/L4ggklEj7Op+KVda7TpBUS44KwByxiAD4aonCmsrGy5smZ4NDarSNkyjKw5McpGWFX5CKi+5bY50pVh7UagmXQzl47fdqVIV5L1vyISHpuakyha3hP2pSdoQEHlTdtLj2g2m4rfd2VNeFSPCiGtJnur+weRiBd/Fvms3y8U2cuvEXG8uRkz7NSMWqyQSa65ImIdHj6pa4A4gwLLezkCRarWFhqJGQpFB2SP7zKLvR1H4qphms86kbAw9xVoncKoG989Is0qeop4inTarAMzI78BSn1FMpiRMmYAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAcCAYAAADC8vmmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjZFN0ExMzA3N0YxRDExRUJCQ0JBQTE0RTM0NTc1N0E3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjZFN0ExMzA4N0YxRDExRUJCQ0JBQTE0RTM0NTc1N0E3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NkU3QTEzMDU3RjFEMTFFQkJDQkFBMTRFMzQ1NzU3QTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NkU3QTEzMDY3RjFEMTFFQkJDQkFBMTRFMzQ1NzU3QTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6GOllOAAAC0UlEQVR42syYT0hUURTGr6M5hUGLQhECRZQCWwRShK4VCRdBe4V2gYlUiNYiwZRa1KZVC0EREbPsj2kihDuTNIKgQokWiZmioGLi5J/Xd+o8mp4yM/e9c2Y88GMGZjj3cc499/veNY7jDIBCYJS4DLIV89Ozh7Xyh4wxVeAjuAMOG/k4DW6BCyCskP8IKAbHQUg6eZpDZfoXc6ARdAFHaI2HUd9XwBPwVjB/SdT3TTALlqQK5K14LugEY+CMUrcvgQaQp5D/AMgHJ0GWRoHcOAfGQTsXTToKQBOo5qJJRxYXKY+LJl4g9zfq9idwDWRKjzcoA82gHGQoFOoYn085vF7gMyhWTIF6MBzgDIoV86CXBcNWBNIT+F8EfAOrUjvIGyfAKzAAChW6TV2uA1dAtkJ+UtAifvawTYEilgu5tuCuki04xbbg4n6wBfSHDR+LZLISTYMav/MdI+g8qgAtoFQhfxrvWGrGUakR2ytI4TrYFpxV6nYNN6MgFbZAynmSLXijbAsauFhJtQWS1ty1BZ89tiAiOBalPHYVybIFJPPLSl1xbUElOKSQfwE8YolPV8j/xxaEjF7sGP3QXMMxStuUduRt8AD8AueF85PqvgSjYIuNomRs80s77VAnQ7ibpGg3wQ+PQZPqKKnlc74V0IhF8J1vBYzkDhpnBzyp9OBfQR9/asRPMMOfuwxZkJhj+e0WvN8xnvujp9wAjfxx74+oQAd9JKaz5T5oBWsKD05ny2swKGgTvOM6zw3eiWfpbc+IF+xzviht9w88TgtK+Vd4nBIqvM2IkQG86uO6w2Zc+3xcd9io34ztdUciBfLKtnSsg6Eo2baNeCbxP9n289YcT7Zv8LxqnAMk289suxpEtqUKRKpRC94pynaP+XvDl1TZDlqgZMj2YzCRKtn2WyA6W+6BNkXZHuEDPqWy7adAZN2vK8r2e9C/X2TbNn4LMAAvkpLycne/SwAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"img/role4.30cab345.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABF1JREFUWEfNmGtsk2UUx39nnTrRdp0XgmVsbjgdVzUx8YMxCyiZcV4TTBSiiA41MmdUphGmMbLN4Eg0g5noFhAJI4QFb/GGTjITP/hJw8Uxal022sUoStd6wWl5zKlvZ9e9bd/hKj7J+6nnOf3lOec5538eYRLLGDMNmGN904HzAI/lIgL8BHwP9OknIr86dS9ODI0xlwA3AxXAH8DvwJ9ADDhp+cgDXEA+cBZwBuAH3hWRb7L9T0YQY0wxcBswF4gCv2VzmPL72YAbOAS8KSLD6fanBTHGXA3cA+jx/jJJgFTzcwAN6xsi8oWdL1sQY0wNoN9xKxT/kiO+XUNVZIXqg1SHE0CMMdXALcCPSfGfChD1oXl0PvCOiHyU7HQciDFmHvBwjiAS/5uAeUVENHfiawzEGHMBsM7KCb0ZuVwaJs2ZJhHRkx8Hsgq41C4xRyKR/PDx8Jm6wev1jhYWevTqpl3j7Iu8o4UeW3tN4H4R6RwDMcaUAk8CP6R6HxmJ5K+oXb00GonqNaSkpDi0tWPz+5lAVtxfVxMMBn1q4/a4o9s627vTwF8IvCgig/HQGGPqgZl2dWJwcGjafQ/UL7/rzqW9s8vLwhUVsyPFvhknMoEEh78r8PsDnkBgwLtzV3fVltfadpSWlthVWa0zQyLSLsaYAmAjcMzOeQKkcW3D24uqrtHy7Xjt6/18elNL660ZQNSX5uYaBbkKuNuqGRP+ROP96GNrq1vWN/b4fDNObO/aXd7z6Wfab9Isw5LFVX3Ll93xrZ7Ms881LX6ptWVvhrzS2rJdQVYClU7L9721dTWxk7G8hfPnHLUjOXCwb5bL5Yply6OkvXp7DinIE1aRGXVy5goyr/KyUMOaR76ys9+wcdMVfYf7Z77eufk9J/4AvY3HFKTZqqDaSbOuHIBoxxYF2WRV0qwQapADEL253v8LSJGCtFgC53SGxqUgTwGFwOlM1rCC1Fo9xpG+XLmq7sZYLOZaMH+u7fXdf/DrWfmTv779CqJKbFmmglb/+NPVzc8/06OlfUfX7vJP9vVWGvNPw0zO8jzJM9ctuvbw3wVtuGBdY/P1bS+/8GGaxqdbtaB1KYgWlFa7hqdW/0GJ18bXcApNryxS7PNlaXrDBX7/gCcQCHh37tqTremFRKQtAXKxUjmTASWhrR1tmWVA7eqbgkdDF8VlgNsd3balvTtNaPQ0NojIULJCexDQ+WWCYncodMZSxaG9CqMjItKhG5NBdHJTqfjzFCr3dNVapeK5wHoRicuPVPG8EHjI0iaJCc5R6Z+EUUI8vyoi+xP77MaJG6zxMlfjhAqht0RkbzJ8ugFriTVqhqcwTBoOrwXxceoJZho5dcZRZa+jxVSMnDqcdybPMllPJGFgjNGp7HbgSiuJT2UI16T8EtgjIvpsYbucPkuUWaHSuUebo5NnCVVeR6xQDGRLZkcgSSekjzILgMsteamzjrYIXdo09elCr6PehgMioo83jtZfkh4McbuI4vAAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABWBJREFUWEe1mH1M1HUcx9+fw+g8eTg8T+EOTplIT6MCSZRcbZhpmE6akg+hUWiYCUNDl7n+0bRCIyPD0rVlm7XZktkV+bjmpi5notB5grhDjg4FTx6U4zyJb/vcfufO6+74HdB3+/0B9/19vq/f5/nzJYSwhBAqAI9Jz1gAowFESSK6AdwC0AbAzA8ROeSKJzkbhRBJAOYCmATgHoC7APoA/AOgX5KhABAGYASAhwE8BOAKgJ+JqHGgc4KCCCHiAcwH8DiA2wB6BxLo8/tIAJEATAAOEpEt0PsBQYQQGQCWAWD19oQI4Lt9FAA26z4i+sOfLL8gQog5APjpkEwxRA7362yqGMlU1b4C/wMihJgFYB4Au5f9hwOEZbAfaQAcIqLD3kIfABFCPAHgbTkQLpeLXC6XIiIigh02lOWB+ZKI2Hfc6z6IEGIMgPcln+DICLja2+3hRevey7bbb8XkLph/qiD/tYZQSCQzsc9sISLW/AMgKwAky3FM46+H9eU7d2ezgHi9rvXbb3YZQwTh7ezA9US09z6IEGI8gPUA2uUIdDidik0fbJlua72hKcjPO/1C1nM35LznZ48WwCdEdM1tGiFEEQC93DxxsOqXhEuXL2snp6XZLtbWxa4ufKNuEL7CR3OeaSaiXSSEUALYDuBmoK9qt9vDi0s2Zld+UWaMjorqy8tfNddmux4LCLd1i99ZUT1vbnaL8bej+l6HY8Qjk5I6Teb60RZLc4zV2qLp6OyKrNj5kVGr0bj8nMG++S6DpAPIk3KGX5aGxsaIVatLF1fuKvt+gsHQk7u04NXb3bc5Y7rXksULfn/z9aVXyndWphw7cfJpp9PJH/fA4neTk5Lu+DmAc8t3DJIP4NFgZvEG0cXG9uYsXL68v7+f6wobFjOynv9z44aS8/yXq6+PXpqzsCAEEI4eE4Osk5KMP7W55XmD8FdVHzket31HxctsFl3cuBt7dn9mVCqVnuKHGbNyOALlaiSc3YJBPpQyaMDE5Aty6XJD5Jri9YsYJDk5yVJZUXbM+9QQQVizxCAVUiYNGIG+IF1d3SNeyV2WzyAZUyb/tXXzpjNDAOHIVQ8KxOl0Khblrcxlh509K+ts6do1FwsKS2aPN8TfnJb5jHXbtnKuVXJNwyAxDLJVanBkm4ZPuFBbF910zRr54swsm0qp7L/jcISdOH4y7uSp04k1NXXs/HJB2DRhDLIBQDQ7fCDb+JrGs+/M2XOaaVPS3bViCKZhZ+1kEA41rjEB+8tAIPMXLltUdWDfD0ME4fCtZxDuxJbITWjeSWmYQDih7WcQJioLVvA8GikuWlF99+69sKYmq9rWel1tMpknPps5tS5janrL9MyMtgiVyu1nIYYvF75SWUXvqsUyamXhWtYaVCqVQ6vVdIwdq+1UR6t7G69eHdfcbNUpFIp+gyGhNS01pfnAj4em+5rr692f7p+YmOjb+3LR+5uIPveATGCqYFoxmc1R8Xq9g4ue7yGeiDl3/oL+krne0ONwjNSOGdOh08XaDQnxHampKW3+nBoAa+NjImr27tDeAsDzy1A79oCJ0ecHbowaiGgP/98bhCc3bhW5QgZtFeWeFGQfd/QRADYTkbv98G2enwRQKPUm94vYMBzsLcLTPH9FRLWeH/yNE7Ol8fL/Gie4EaoioiPedIEGrJnSqNk5jGZic6gliKO+Wg42cvKMw30F+8tQHZgdk4fzvd6zzIAa8WwQQvBUlgMgVXLiwQzh7JQ1AH4iIr628LvkXkskSqbimsTFUc61BBczHrzYHywDObwsEC8N8aVMCoCnpPaSG2guEby4aPLVBYcjR0MdEfHljaz1L1kXZnG11+v1AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/half_alpha.1588e218.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAkBJREFUOE+dVDFoFFEQffNXgxxJIVgEbFIEDNhopeAFYq3BiF5xeNmdDYrptLEQYiFJYWNlE1Hv5t+ZTlEwdhYHiaiVpYoWVyheKVxA4bJ/5B97x2ZdFJxydub9N/PeLKEgoig6Q0QXVbUMYDIt6RLRtqo+sda+zLdRNrG0tHTEOScADgC4D6ANoJPWTAGYA3BVVXeCILhcr9c/DftHQFEUnQLwXFVvNpvNh0VMhzlmXlbVVQAL1trXPj8A8kySJNl2zp1vtVrbfwMZfltcXCwbY54FQVD2zAZAzPzGOfcozySO43Oqeh1At9/v39jY2PiafSRldslaO0vpYtdE5Hi2qFarTQdB8IGI9qX5toiczrNl5vequkLM3ADwTkTWs0VhGNaMMa1hTlV3rbX7C4CWAZzwjD4T0byIfMzRZgD+kVGIyB6V07XMqOoLz+gngIMi8ut/gCqVynipVPpeCMTMU865s8aYexnwH0mSzOdVHQEVjVatVg+NjY1d8+4GMJOC3VHVxFq7kmM+Gq1BRG8bjYZ38iiYeUFVj6YJP/YkEd0VkW62Lo5j7/STFIahH2E1L3+6yMmBtESbnU7nVbvd3i2S3zl3a6BCFEVbxpjHWVbMfAyAN+Q0EX3xdSJyO8/GOVcbGDIj4Vb2dv51JsPbJKJZb52RL4a3Y4xZye8rD+r34pxby97mHoMxs1fgARGNE9E6EbV7vd43DzQxMXFYVedU1V/+DhFdyZr4D6f6plSAC0U/Nufc02azuZln+RsRUTF+/6G1vgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAUxJREFUOE+tlLEuhEEUhb+TKBQKhY5iH0CzhUKi8AIqxUYQNnRaso1EJFRaJUFCkOi8ABWdggfYgk6hUGyxyZW7ZuRf2V07s247M9/ce8/JEf9cijwzGwYWgYnEP16BC0kNf9cCBtgD4NDHROAM8AlMOzQC14BNYEqSH/ZdZjYCPAN7ko4jcAcoSap2I5nZkE8QPzSzeWBbUtnMToC6pN0U4BJQkTQXYOfAsqSbXOAqsAIcAj+woEFWhw48AHxnrc4KDskG+sN34CUou+A7zR25BMwWRGsCV5KaPYFBzQrgqsa6l1Tv4YDuIwdfXYZdTQJjQFXSaRawsGj3mavpRt8aCFj0GbABnGUDO5j2FriW5N12rL9EeQL2o8/CThuuZgpwHagB5QHCwZs4+h1fo8Bd31HzfdG9+dEWX4VM9AAYTwS+uRvaAjYR0PP6Fy+57hW1sYImAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client.vue?vue&type=style&index=0&id=fcbbd8b8&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/normalmap.8135b487.jpg\";","module.exports = __webpack_public_path__ + \"img/small.220731fd.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAgJJREFUOE+9lEGIjWEYhZ9TFgplapYUhSjCjiKmFGKjFKIkCVFDEZORhCQKNQsLJTUlUZpsLCwUoowoI4qibMiCxVgfneu7t39+zDU1+Zb3/77nPe95z3vFOB+NM49RgbanAgeAhaXwc6BP0ve/CfkNaHsWsAS4DzwB3gI3gQnAVmAGsBxYBTyQ9LEKHwG0HTXngTNF1Q9J26oPbPcDk4DXwBHgsKRLzTstoO1FwAugJ20B34AFkqKwdWzPB54BHcCeImCxpKFcqgKPpQ1JXbY7ga/AFEnDNWB8TbGOeGn7FjAo6VwdeAhYF2A+2P4EHJR0uwbcDJyVNLPcuwM8lnShDsww3gC9qWY77ZwANkh6Wh5nWAHEt37bO4H4F2saw6m2vAy4AUwDlgK58BBIoeYkM+GXwFpgchHwuRQdbAFtrwHulnicBuYC14D3wHWgYTiQgWwvRXaU35OM3UCXpEeyPRF4l4eSem2vB2J0/LvypwAXOy4WZfdsx/9uYHaAMTkfp5c2Au+RdHW0tax4PK9M+1Xjne2TwBxJW2zvBzZJyia0PbaTx3TWZzsLMRxgPFsB7CohHWinrlmpqFwNHAdOZWABbgT2AQlmquyNuW3l/crqymJXtitreLm+yx+Ao8CXfwECWdfuZshH5LAEN7ITjbGcIUlpuXH+7x/sWGQ27/4EuS7NqILpMukAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAAAcCAYAAAAz+aIrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjZCNTZFOTVEN0YxRDExRUI5RUU0RUM0N0QwRDJCMEZEIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjZCNTZFOTVFN0YxRDExRUI5RUU0RUM0N0QwRDJCMEZEIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NkI1NkU5NUI3RjFEMTFFQjlFRTRFQzQ3RDBEMkIwRkQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NkI1NkU5NUM3RjFEMTFFQjlFRTRFQzQ3RDBEMkIwRkQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7IFqE6AAACvElEQVR42tSZT0hUURTG3xv/JCkaGGpJKINEkbmqMHcSRP8kCS0hIaGFqzbirlooJhT4J4NwVeQ610atCwuEIIMiEYMgFFskKGTq9J08wjDYzLt3zqd04bfSOXPnu+ec7537wkQiEZDWHnAIzJDil4ErYJQQuwYM5BICx8ABUA5CkujnwFlgvf8icBt0gXzr4KWgEuQRRBGhT4IWUEKIfR080IP9u6zEKdQSKiSVUBVoA3FC7BPgEahP/UO24kiGHAT7SaIUg2bQQChRKft+0KGtILASJ9SGKCmYQxBF9tUILoC9xrHzwS1wB+zLtAmf05QSKojwv+se8Y+Bq6CCILo08kFwNOoJuVpzCamEJBNbQR3JmkWUJofPJKKIE9O+Uka05ovgDNuaHT+7lGkzbGs+rQ2XYc3t4H6yNfs0vt2w5riWEMOa5VloZDtrzlYctjVLhlwmWbM08HvprNlXnJ2y5ibtMVZr3cWanWsTg6eLNftsfg1cU/EZDndEsV4/Y0mZw1rM2IFVCf0r8BL4CL6BDcJ3fAA9YBz8Mo79HRwH3XLSLNXlUmceTINFgkBSWi/BXfBGv89iSX9clbsXfep9YnnAqSn5G3wFn8Ayo47BM70amCVk0U11wklmvS6rQHMqmPWaVYHGCOXwVgXqUMFozeyHltq8YSkESaX8WkvtlZaeZWzJ0MN6CKu+Vs4cPMXK3zvYslh+reNv6Iw4eA7rDBdZYBcbFKeRy/IvBNeRtRBs3siNaKZaLtn3JXAefI6aOD7PCMnWn+m+xudpW2L3gudgxVikF3olEsn6wyxfzUSZxabIs1inZ2wZlfrSzWKh0XurdFP8lEH8au1HcUNxttYp8HC7Kd7q0Ztt/XPqOk8J1v9OM/NGqvVbzyVs659U658gWP9YqvWH//nrYHnB95gQW6x/6I8AAwC+05aA5+TwTwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABEhJREFUWEfFmH9MlWUUxz+nLmaNgOinbhUz14opKlDQljXb1FoKxTJaUfqHluXu2iR0DTE0Zv9Ui5xGTpYW2NpyJDlpNTcqs2kKi9k0c20Wmf3AUVyTijrtsPdlF7jvj8vF9fzz3t33+fF5zjnP9z3nEcbQVPVS4GogG8h0pvgNOAP8JCJ9yU4rYQeo6mSgAMgD7Pe/wD/O06a5ALjQeZ4CuoDDImK/A1sgiKpeCSwECoE/gD+BvwNmTgMuAi4BDgGtIvKr3xhPEFW1d2XAXcA5IBa4rcQd0oGJwF7gPRHRRN0Sgqiq7WgZkOv43dyQSjO3WTwdARpFZJRFR4GoagR4GrgW6E1l9RFjba0s4CTwqogMxL9PBLIEmDnOEPFrXgZ0isg2TxBVnQuUAr6BNdJKhw53Zu9s2X1zfn5e96KyUttxUFxeDrSIiMXNYBuyiHM6nks2Jk6dPj2x5P6KaH9/v50Qnli25N3oU0u/CoBxY2adiPwyEmQpcFOyp+O119/I3dTQuMhdOG96bteON7e0hIgtO03HRGTrEIiqXg+sBn4OMcGwLstXVM7ft/9AsftnYf6Mjm2Nm94POc9VwAsi8v2ga1TV4mJ2stbo6emZcG/pwytiZ89muAvft/CeD+vWV38eEsSs8qmI7HJBagHTjiDFHJrfIJZHq0qPHj1uWjPUqiqjzYsryk+EBBlcU0RqRVUtgp/3c8vKVTV3Hvv6mxx38lhfLP33vljGwMDAhJELTp50TXckLTKoEdnZWb211VV7p069wU+V7eO5xkBuBKJAj9cups263U7TmFpOznXf7m7Z8ZbPYDPERgOxQHvIT8DiQebNndNeXFRwcn3di4vDkh3p3LfOp6+p7dsGYiJ2N+CZQ6QCkpGR3rv/4w/qfUAs0PcYyDxg/vkCmTIl50TrzqbmAJA2A7kNKD9frikuKji4taG+LcA17xiIHb8nwwZrsjHy4AMlbWurVx0MCNbNBmLBssHv+KYSI6sro82P+uuKZYDVrqDVOFlUQkFLBaRpe0P9zLxpXnmNCdo5EalzQUqAO7wkfqwgmZkZZz5r37PRxy0m8Z+ISKsLYtnYs17umZ4/u0ZV7dMduqVFIn/VrHmmuax0wXc+g+yjt0FEuuPzkccBU9lRcvzSK5tndH7ZNSTxQTRZmVmxxyrKO28tnGV1jlczaxwXkS3WIR7ENH+tc3pSTZaDWM26Ju21oxIjG6mqJmxWw9h3J2HaH7RCiPe2eYPYJSIfuf3/r+S5Q0S2x0N7lRMrnbLS6tnxsoxbTvwAvBxYTjgustrmEeCWZJNpD9e4yfIXQJOIWM08rPnWvqo6xykvLNFJpeS0jVm52e4VQ2GKcLt2MMGzvMVq4GSK8IuBA05gmps9WyCIO9K5ligC8oErALNSomsJ270VaB0GMW7XEom2oKqTnIsau7AZLKycKwtLruyi5scQx3hYl/8A9/uVhU1XB+kAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAAXNSR0IArs4c6QAABARJREFUWEfNmH9oVWUYxz9Pv3ZLymU5r8PZrXT5T3mNBGNE+8PI6I+ywqCQwqmzPzIrMKVsZkRCkGUGaiFqJFMC91fNP4RGof6ReUEK3cC0adxNZ8vMlv1447vOuZxdd84958iFDoxxOe/7vJ/zPM/7fZ73NRI8zrkMcCcwHbgZuA6o80z0AxeAAaAAHDazobjmLc5A59xk4BEPQsb19xfwD/C3Z+NK4ApA/68FBH0Y6DCz3krrRII452qBJ4C7gXMeQCWbwfeCuQH4FvjMzAbDJoeCOOfuAhYAFz2XJwEoH6sQ1gAbzKxnNEOjgjjnmoF5wGnAXQ5BYK7WGg/sNLOucpuXgAQglHzVeJTcu8zsy6DxESBeOJYA1YLw1xbMumCYSiBeYr4BKKEShWP/MWrX7WX67GmcWHwfx2O4UeuOBVb7CRwEWQg0Jk3MHwfI3NHGC5NupO/kz2Rff5iOlQ9xJAbMGOComX2sscMgnk6sSBOSt79g2oYumk+tZeO8zTR395MtvEZ7DBANUYjazOy0D/I8MAn4PaaB0rA565lzfojM18vpEMi5ITKdS+mMaUc6c8rMPjBPttcDP8WcXBqmsOTforWlia53HqcwdRXPzmjg+K7FjNgRFexONLNWgcwE5gNnk4AI4qktPPjDABMVFs0d9xLL1s6lI2bC+suNA7YLREk6NSoscv+xM0wIgvb0k5synhN7l9E++SaGdh8i+9gmWuvHUhxTM1yLqLuewR0L2KP3ER8p1e0WiJJU9UBSPupjS2hb2MSemTmK2/eT16CXH+DA3BkU/QnyUOf3ZP3fA+fJ7DxI/sJFarrXsC0C5BrVMYGs8aqmqmkoyKan2SaXKyE1KE4ebP6KXOunPOM2In0Ke65SFReI4tsXJWLySFqQFbt59Oy7vBcBop07oaog8t6hXnI9b7I1DkjVQqMkF0AFXSmFJlaypgmNdKW5kSMfzedAhEfUp/yi0CwCpkRt37Q5ElNXStu3oqClAdF2vuVVXtm3nPfvvW24ooc9JUGT3kdKfBqQRZ8w6/PvyPuqGwHyn8RrgHNuKVAf1hwLpOl2CvW1DBZ6yWlOviG87+gukj3ax607WtgaFL1RYNTtnxwueh5IA7AyrA1Qqd+yj1kRX1V6JXlvrKP44mwKFUKiOSobq8zszGU3RnHgQsZc2hh5XtEZZrW2UtJWMQVMeKvoweg4+VyaTi0hTHjz7Btyzt0PPFlFGJ1tdJwYcbb5/x6wAp5RmFqAP4HfErq+fLgS82rgw0RHzgBM8BD+a4rmWmKp88vB1Ifw4Cc55xRX5Y289IcHpOuI8msJ/2pCQqVipmuJdulEJY/Guh8pg7pHwhpxUaNFC2b2TaXFg+//BSczrGjy7jg/AAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"img/role5.d439445e.jpg\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=70444eb3&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/info.99ee1589.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/举手.31b54450.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/re.0592cb6f.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/role6.42f1602d.jpg\";"],"sourceRoot":""}