{"version":3,"sources":["i18n.js","zustands/globalAppLockZus.tsx","components/AppLockSpinner.tsx","zustands/activeUserZus.tsx","api/AuthenticationManager.js","api/AppBackendManager.js","components/user_dispatcher.tsx","settings/general/LanguageSelectionView.tsx","settings/SettingsGeneral.tsx","devtools/DeviceDispatcher.ts","api/LicenceApi.js","api/LicenceManager.ts","components/licencing/LicenceWrappers.tsx","api/PanoramasManager.js","settings/settings360/TourSettings.tsx","settings/Settings360.tsx","components/offcanvas.tsx","settings/SettingsView.tsx","project/project_zustands/activeProjectZus.ts","CookieManager.tsx","ela/assets/asset_Parent.ts","ela/assets/asset_TourTask.ts","zustands/activeSpotZus.tsx","ela/world/panoramaCameraControl.jsx","ela/assets/asset_Panorama.ts","static_includes.ts","ela/world/meshgui/MeshElement.jsx","ela/world/meshgui/IconClickPlane.jsx","3d/math/math.ts","zustands/globalPopupZus.ts","api/TourStatisticsApi.ts","3d/boards/board_Parent.jsx","3d/world/SceneFooter.ts","ela/world/vr/MyVRButton.js","ela/world/resources/vrPointer.png","ela/deviceManager.ts","ela/world/vr/VrAvatar.jsx","ela/world/vr/guiclickertexture.png","ela/world/defaultSceneConfigurator.jsx","ela/world/photoDom.jsx","devtools/Arrays.ts","3d/boards/board_Gate.jsx","gui/icon_click_buttons.tsx","gui/content_players/video/VideoPlayer.tsx","ela/assets/asset_Video.ts","api/GlobalAppLockHelper.js","zustands/availableProjectsZus.tsx","routes/inter_project_search_new/lightdata.ts","ela/assets/asset_Mesh.ts","ela/assets/asset_Sound.ts","ela/assets/asset_Document.ts","ela/quiz/QuestionBase.ts","ela/quiz/TextQuestion.ts","ela/quiz/ImageQuestion.ts","ela/quiz/Quiz.ts","ela/assets/asset_Quiz.ts","ela/assets/asset_Label.ts","ela/assets/asset_Area.ts","ela/assets/asset_Image.ts","ela/assets/asset_Outline.ts","ela/assets/asset_DigitalTwin.ts","infinity/InfinityProject.jsx","api/ProjectsApi.ts","3d/boards/board_Video.jsx","3d/boards/board_Sound.jsx","components/IGui.ts","components/InfinityButton.tsx","gui/content_players/quiz/TextQuestionView.tsx","gui/content_players/quiz/ImagePopup.tsx","gui/content_players/quiz/ImageQuestionView.tsx","gui/content_players/quiz/QuizView.tsx","gui/content_players/quiz/QuizPlayer.tsx","3d/boards/board_Quiz.jsx","infinity/GLTFLoader.js","infinity/InfinityMeshesLoader.jsx","3d/boards/board_Mesh.jsx","gui/content_players/document/DocumentPlayer.tsx","components/spinners.tsx","3d/boards/board_Document.tsx","gui/content_players/label/LabelPlayer.tsx","3d/boards/board_Info.jsx","3d/boards/board_Outline.jsx","3d/boards/board_Click.jsx","gui/digitaltwin/DigitalTwinBoardView.jsx","3d/boards/board_DigitalTwin.jsx","3d/boards/board_Finish.jsx","infinity/InfinitySpot.jsx","infinity/InfinityVRAvatar.jsx","gui/controls/LoadingProgress.tsx","gui/content_players/map/MapTools.tsx","gui/content_players/map/ActiveSpotVisualization.tsx","gui/content_players/map/AreaPlaneMesh.tsx","gui/content_players/map/VisitedSpotOverlay.tsx","gui/content_players/map/Maximap3D.tsx","gui/content_players/map/MaximapModes.ts","devtools/hooks.ts","gui/content_players/map/Maximap.tsx","gui/content_players/map/Minimap3D.tsx","gui/content_players/map/Minimap.tsx","components/mytable.tsx","gui/controls/ActiveSpotBoardsVisibilityOffcanvas.tsx","routes/inter_project_search_new/ipszus.ts","routes/inter_project_search_new/new_ips_tables_header.tsx","routes/inter_project_search_new/new_ips_universal_table_view.tsx","routes/inter_project_search_new/new_ips_all_search.tsx","components/FakeLinkButton.tsx","routes/inter_project_search_new/new_ips_universal_tiles_view.tsx","routes/inter_project_search_new/NewIpsByNameSearchView.tsx","shared/containers.tsx","routes/inter_project_search_new/SearchView.tsx","zustands/layoutZus.ts","api/UsersApi.ts","gui/controls/ActiveTourRightBar.tsx","gui/Branding.tsx","gui/content_players/map/MaximapVR.tsx","3d/world/NewWorld.jsx","infinity/ProjectPlayer.ts","managers/TimeManager.ts","GuidedTourRecorder.ts","zustands/activeTestTourZus.ts","AppNavBar.tsx","components/LanguageSelectionModal.tsx","AppNavBarOld.tsx","routes/projects/ProjectsMapView.tsx","components/project/SelectProjectView.tsx","routes/ProjectsView.tsx","zustands/projectGroupsZus.tsx","api/ProjectGroupsApi.js","devtools/UploadStreamer.ts","routes/projects/UploadProjectView.tsx","routes/projects/ProjectPropertiesTable.tsx","routes/projects/ProjectPropertiesOffCanvas.tsx","components/modals.tsx","routes/projects/RemoveProjectModal.tsx","routes/projects/ProjectAdminThumbnail.tsx","components/IconClickButton.tsx","routes/projects/ProjectGroups.tsx","components/AreYouSurePopup.tsx","routes/ProjectsAdminView.tsx","routes/users_view/AddUserToGroupModal.tsx","routes/users_view/EditUserOffcanvas.tsx","routes/UserView.tsx","api/VisitorsStatisticsApi.ts","routes/statistics/stats_chart_tools.ts","components/dashboard/DashBoardTile.tsx","components/selectviews/PeriodSelectView.tsx","components/selectviews/ViewAsSelectView.tsx","routes/statistics/project_visits/ProjectsChartComparison.tsx","routes/statistics/AppVisitsView.tsx","components/project/SelectProjectOffcanvas.tsx","components/selectviews/ProjectSelectView.tsx","routes/statistics/project_visits/ProjectVisitsView.tsx","routes/statistics/ProjectAnalysisView.tsx","components/searchInput.tsx","components/users/SelectUserOffcanvas.tsx","components/selectviews/SelectUserView.tsx","components/selectviews/AreaSelectView.tsx","routes/statistics/project_visits/ProjectVisitsFilteringBar.tsx","routes/statistics/project_visits/ProjectVisits3DMap.tsx","routes/statistics/project_visits/ProjectSpotsVisitView.tsx","formatters/percentage.ts","routes/statistics/QuizzesRatingManager.ts","routes/statistics/QuizzesRatingView.tsx","routes/statistics/IndividualQuizzesView.tsx","routes/statistics/boards_visits/BoardsVisitsView.tsx","formatters/time.ts","routes/statistics/ByProjectTypesList.tsx","routes/statistics/dashboards/TrainingStatisticsDashboardView.tsx","routes/statistics/BestWorstQuizTables.tsx","routes/statistics/dashboards/GlobalQuizzesDashBoard.tsx","routes/statistics/GlobalTrainingsView.tsx","routes/statistics/GlobalToursView.tsx","routes/statistics/TrainingsViewFiltering.tsx","routes/statistics/IndividualTrainingsView.tsx","routes/StatisticsView.tsx","routes/statistics/TrainingPrintView.tsx","components/ErrorBoundary.tsx","devtools/react_effects.js","components/MountProjectWrapper.tsx","gui/controls/TaskTourResultView.tsx","gui/controls/TaskPlayModal.tsx","gui/controls/TaskTourHud.tsx","WorldPlayer.tsx","AppRoutes.tsx","App.tsx","index.js"],"names":["i18n","use","Backend","LanguageDetector","initReactI18next","init","fallbackLng","debug","supportedLngs","interpolation","escapeValue","backend","loadPath","useGlobalAppLock","create","set","isAppLocked","isFailed","failError","failMessage","lock","newState","unlock","fail","AppLockSpinner","locker","useTranslation","t","content","Spinner","animation","variant","Stack","gap","src","style","width","height","margin","color","textAlign","position","left","right","backgroundColor","zIndex","visibility","top","transform","initialUser","name","type","uid","useActiveUserZus","activeUser","setActiveUser","user","AuthenticationManager","returnObject","axios","get","then","azureResponse","data","length","response","auth_provider","provider_name","token","id_token","form","FormData","post","userResponse","setState","console","error","authMeEmergency","emergencyData","result","AppBackendManager","log","isBackendAvailable","catch","e","OnlySuperAdminView","children","React","Children","toArray","OnlyAdminView","isActiveUserAdmin","getState","LanguageSelectionView","tInsntance","useCookie","language","setLanguage","Form","Text","Select","value","onChange","target","changeLanguage","SettingsGeneral","marginLeft","marginTop","className","onClick","window","location","origin","DeviceDispatcher","__TAURI_IPC__","process","LicenceApi","Player360Functionality","hide_boards_selection_enabled","spot_visits_monitoring","quizzes_monitoring","boards_monitoring","visited_spot_in_map","users_projects_listing","can_user_search","can_see_hud_icons","can_see_minimap","obj","this","LicenceManager","hasValidLicense","isValid","isDesktop","licenseValid","editor360Valid","editorArValid","anyEditorValid","editorVrValid","getLicence","usesNewLayoutAsDefault","f360","from_json_object","player360functionality","organizationLink","projectsMapEnabled","LicensesType","BASIC","PRO","CUSTOM","Editor360Only","LAST_RESOLUTION","getCookie","PanoramasManager","newResolution","ACTIVE_RESOLUTION","setCookie","TourSettings","useState","resolution","setResolution","changeResolution","LOW","MEDIUM","HIGH","Settings360","REALLY_BAD","ULTRA","InfinityOffcanvasWrapper","header","closeButton","onHide","body","mainStyle","_mstyle","Offcanvas","show","placement","Header","Body","SettingsOffcanvas","Title","SettingsView","Tabs","defaultActiveKey","fill","Tab","title","eventKey","ActiveProjectSingleton","activeProject","useActiveProject","project","setActiveProject","newProject","CookieManager","activeSpotUid","cookiesEnabled","map","Map","key","defaultValue","has","projectId","spotUid","spot","history","pushState","custom","COOKIE_MANAGER","AssetParent","file_extension","projectUid","url","description","folderName","object","GetStorage","TourTaskAsset","tour_task","TourTask","getAbsolutePath","starting_actions","Array","ending_actions","conditions_boards","_load_starting_actions","_load_ending_actions","_load_condition_board","jObject","Object","keys","forEach","_jData","TourTaskCondition","actionData","action","TourTaskAction","TourTaskActionTypes","MOVE_TO_SPOT","DEACTIVATE_BOARD","typeData","board_ids","boards_ids","boards","useActiveSpotZus","activeSpot","setActiveSpot","newSpot","PanoramaCameraControl","camera","renderer","enable","autoAttachOnRenderer","element","addEventListener","onLeftDown","onLeftUp","onPointerMove","onWheel","onFingerUp","onFingerDown","onFingerMove","autoAttachOnWindow","update","StepSmoothCamera","UpdateLastCameraMotionTime","lastSmoothCameraTime","Date","getTime","targetFov","fov","Math","abs","updateProjectionMatrix","cameraRotationActive","timeDif","speed","newSpeedX","mouseMotion","x","max","min","newSpeedY","y","initialCameraMotionSpeed","setX","setY","checkVerticalClamp","rotateOnAxis","Vector3","rotateOnWorldAxis","cameraMotionSpeed","smoothCameraEnabled","speedDif","clone","normalize","copySign","sign","actAngle","getWorldDirection","angleTo","event","isPrimary","preventDefault","relativeMotion","rotationLocked","dif","add","Vector2","movementX","movementY","isTouchScaling","touches","distance","hypot","pageX","pageY","diff","lastZoomDistance","three","clamp","minFov","maxFov","touch","motion","previousTouch","sub","clientX","clientY","onPinchZoomStart","pinch","onPinchZoomEnd","onDoubleClick","ctrlKey","deltaY","clock","domElement","zoomEnabled","rotation","z","lookAt","PanoramaAsset","file_lods","file_has_moons","is_previewed","firstLod","moons_x","moons_y","lod","toString","index","StaticIncludes","font","textures","load","FontLoader","textureKey","_instnace","MeshElement","onSelected","onDeselected","onClicked","IconClickPlane","texture","options","transparencySafe","colorModifier","material","transparent","depthWrite","depthTest","copy","geometry","mesh","userData","renderOrder","meshB","rotateY","PI","root","intersection","_x","_y","_z","scale","opacity","TWEEN","Tween","to","onUpdate","newValue","start","matrix","setFromRotationMatrix","updateMatrixWorld","ellaMatrixToThreeJs","f","r","rotationMatrix","useGlobalPopup","elements","setElement","pushElement","oldState","clear","popElement","pop","SaveQuizParams","project_uid","project_name","spot_uid","spot_name","board_uid","board_name","success","project_type","run_uid","duration","SaveBoardVisitParams","orderTrainingResults","tmpRecord","TimeStamp","sort","a","b","TourStatisticsApi","trainee_uid","queryString","recordUid","recorder","tourDataStr","JSON","stringify","to_json_object","formData","put","entries","user_uid","params","quiz_object","append","userUid","record_uid","boardUid","userIdentifier","TrainingsCount","UsersCount","arrayData","reduced","Count","status","projectType","GetAllQuizResultsOfProjectType","InfinityBoardParent","worldAddPrority","tags","iconSize","board_header_font_size","iconColorModifier","icon","contentUid","autoUnpack","seenOnce","loadedOnce","showAsPopup","boardNameVisible","boardNameVisibleOnHover","use_automatic_rotation","parentSpot","isCompleted","textMesh","webTransparencySafe","searchBuffer","closeEnabled","board_position_f","board_position_t","board_position_r","_isEnabled","leaveVr","getActivePlayer","worldWrapper","getWorld","xr","isPresenting","getSession","end","copyUrlClicked","board","getParentProject","path","navigator","permissions","query","state","clipboard","writeText","clickableIcon","getRoot","search_tags","icon_color","GuidedTourManager","taskBoardClicked","parentProject","saveBoardVisit","visible","Item","world","group","secondaryNotRotatedGroup","tmpColor","isContentValid","clickIcon","createText","multiplier","multiply","applyAxisAngle","spotRotation","newIconSize","scale_set","position_set","iconRotationEnabled","setMatrix","receiveEvent","clicked","fontSize","shapes","generateShapes","computeBoundingBox","iconX","boundingBox","iconY","font_material","setColorObject","refreshVisualization","activePlayer","side","SceneFooter","imagePath","plane","needsUpdate","MyVRButton","button","document","createElement","disableButton","display","cursor","onmouseenter","onmouseleave","onclick","stylizeElement","bottom","padding","border","borderRadius","background","outline","id","isSessionSupported","supported","currentSession","onSessionStarted","session","onSessionEnded","setSession","textContent","removeEventListener","requestSession","optionalFeatures","showEnterVR","xrSessionIsGranted","click","exception","warn","message","isSecureContext","href","replace","innerHTML","textDecoration","test","userAgent","registerSessionGrantedListener","DeviceManager","ua","VrAvatarHand","intersectGroup","isTriggerPressed","onTriggerPressed","setRayColor","selectedObject","onTriggerUnpressed","onGripPressed","onGripUnpressed","rayCast","direction","rayLineGroup","rayCaster","intersects","intersectObject","res","filter","component","onSelectStart","setSelected","setDeselected","onSelectEnd","colorString","rayLineMaterial","controllerSprite","controllerModelFactory","XRControllerModelFactory","controllerGrip","getControllerGrip","model","createControllerModel","controller","lineImage","encoding","rayLine","lineSubGroup","rotateX","spriteTexture","spriteMaterial","VrAvatar","isLoaded","teleportEnabled","avatarGroup","leftHand","rightHand","isLowPerformance","enabled","appendChild","createButton","step","DefaultSceneConfigurator","initVignete","scene","controls","OrbitControls","maxPolarAngle","minPolarAngle","enableDamping","enablePan","dampingFactor","autoRotate","autoRotateSpeed","tag","getElementById","alpha","innerWidth","innerHeight","setPixelRatio","devicePixelRatio","setSize","setClearColor","physicallyCorrectLights","shadowMap","outputEncoding","THREE","toneMapping","toneMappingExposure","aspect","beforeRenderUpdate","setAnimationLoop","render","sky","Sky","setScalar","uniforms","phi","degToRad","theta","sun","setFromSphericalCoords","directIntensity","light1","light2","castShadow","shadow","mapSize","photoPath","mapping","environment","floorGometry","floorMaterial","roughness","metalness","floor","grid","STYLE_FULL_WINDOW_CANVAS","touchAction","PhotoDom","parent","theatreEndColor","moonsCount","frontPanoramaMaterials","tweenOpacity","something","backPanoramaMaterial","scaleDirection","tweenEnded","isTweening","frontPanoramasGroup","updateFrontFullyLoaded","isloading","onAfterPanoramaLoad","setTimeout","splitsLoaded","frontFullyLoaded","backFullyLoaded","oldSphereMesh","backSphereMesh","oldPanoramaMaterial","oldSphereWrapper","startFading","onFadeFinished","tween","colorCorrection","g","_tweenFade","onComplete","endFade","onLoadingProgress","oldPanoramaTexture","backPanoramaTexture","oldSphereGeometry","backSphereGeometry","backSphereWrapper","frontPanoramaGroupWrapper","i","frontPanoramaMaterial","frontSphereGeometry","frontSphereMesh","push","photoDomGroup","moonLoadedIndex","panorama","newPanoramaRotation","onPanoramaFullyLoaded","rotatable","matrixVector","rotationVector","newColor","loadBackTextures","isOculus","loadDefaultPanorama","loadMoons","getCamera","startIndex","endIndex","getFirstLod","pathToLoad","loadAsync","setFirstLod","GetDefaultPath","get2048x1024","progress","indexes","moonIndex","array","randomIndex","currentIndex","random","shuffle","rndIndex","getMoonAbsolutePath","active","getMoonUltraAbsolutePath","InfinityGateBoard","ActivateSpotWithId","spots","wasCompleted","setCompletedColor","CrossButton","props","UniversalRoundButton","customStyle","justifyContent","iconSrc","CloseButton","marginRight","VideoPlayer","videoPath","onEnded","onClose","autoPlay","controlsList","objectFit","VideoAsset","video_ratio_x","video_ratio_y","lockAppBeforeResponse","unlockAppOnResponse","handleGlobalAppFail","stateToSet","sFailed","useAvailableProjectsZus","availableProjects","setAvailableProjects","projects","ASSETS_TRANSITION_MAP","BOARDS_EMPTY_PLACEHOLDER_ICONS","FakeProject","welcome_panorama","welcome_spot","areas","videos","sounds","panoramas","meshes","labels","images","lon","lat","searchCache","variable","results","toLowerCase","search","nameFilter","_getNewOnFilter","categoryFilter","nameLower","tagFilter","_getNewOnTagFilter","concat","getBoardsOfType","_load_asset_from_json","fakeArea","FakeAsset","_load_spots_from_json","_bake_search_cache","from","values","jsonObject","fakeSpot","FakeSpot","parentProjectUid","load_from_json","area","areaId","areaName","urlPath","navigationPath","previewPath","panorama_uid","label","content_uid","image_uid","image","assetName","assets","fakeAsset","load_from_json_as_label","area_id","get_boards_from_jobject","fakeBoard","FakeBoard","parentSpotUid","MeshAsset","exists","custom_data","SoundAsset","DocumentAsset","thumbnailRatioX","thumbnailRatioY","tmpX","first_page_ratio_x","tmpY","first_page_ratio_y","AnswerBase","text","validity","isSelected","new_answer","AnswerText","Validity","IsSelected","answer_data","from_json","QuestionBase","isMultiAnswer","answers","successRate","shouldBeGood","goodSelected","new_question","answer","getCopy","to_json_result","Name","Answers","question_data","IsMultiAnswer","from_json_base","TextAnswer","ImageAnswer","Image","ImagePath","TextQuestion","Type","from_json_with_result","ImageQuestion","IsLocked","Quiz","questions","isEvaluated","tmp","question","questionsLength","GetSuccessRate","getSuccessRate","Questions","questions_to_array","quiz_data","questionType","QuizAsset","quiz","quizLoadPath","PostLoad","getQuizFromJson","LabelAsset","AreaAssetModelLayer","filePath","local_position","assetPath","layer","AreaAsset","scale_x","scale_y","fileExists","meshExists","mesh_object_pose","mesh_object_scale","spots_color","spots_color_selected","area_pose","layers","getMaximapPath","getMinimapPath","cData","layerData","NewFromJson","ImageAsset","OutlineAsset","vertices","vrtx","DigitalTwinDataSectionTypesProperty","lang","unit","isStatic","externalLink","fileType","updateInterval","externalFilterValue","DigitalTwinAsset","fetchPath","fetch","json","jResponse","CreateFromJsonObject","InfinityProjectStatus","STATUS_NOT_LOADED","STATUS_LOADED","STATUS_LOADING","STATUS_LOAD_FAILED","INFINITY_PROJECT_TYPES","InfinityProject","quizzes","documents","outlines","twins","tasks","tasks_list","run_token","multimap","welcomeSpotUid","welcomePanoramaUid","footerEnabled","link","_LoadFromDictInternal_Full","Promise","all","Load_PanoramasFromJsonObject","Load_DocumentsFromJsonObject","Load_VideosFromJsonObject","Load_SoundsFromJsonObject","Load_MeshesFromJsonObject","Load_LabelsFromJsonObject","Load_AreasFromJsonObject","Load_ImagesFromJsonObject","Load_OutlinesFromJsonObject","Load_TwinsFromJsonObject","Load_TourTasksFromJsonObject","Load_QuizzesFromJsonObject","tmpSpot","InfinitySpot","LoadFromJsonObject","quizData","tmpQuiz","outlinesData","tmpOutline","fromJsonObject","tasksData","tmpTask","load_from_json_object_async","twinData","tmpTwin","areasData","tmpArea","videosData","tmpVideo","soundsData","tmpSound","documentsData","tmpDocument","meshesData","tmpMesh","labelsData","tmpLabel","panoramasData","tmpPanorama","picture","GetPanoramaAsset","getWebPreviewImage","isActive","getBoardsOnTagFilter","count","getBoardTypeCount","filters","ProjectsApi","getAllProjects","document_uid","extension","projectPath","load_from_json_async","autoAppLock","request","project_id","videoAsset","ProjectType","groupId","file","chunkOffset","chunk","Blob","config","headers","_group","files","to_remove","lot","useAvailableProjects","isLoading","setIsLoading","setProjects","useEffect","InWorldVideoController","videoPlane","videoBoard","aspect_x","aspect_y","close_btn_color","onRewind","posY","allgroup","controls_enabled","backgroundMaterial","backgroundGeometry","backgroundMesh","sliderMaterial","sliderGeometry","sliderMesh","handleMaterial","handleGeometry","handleMesh","handleStartReference","handleEndReference","progressGroup","progressGeometry","progressMesh","closeBtn","createCloseButton","closeBtnSize","percentage","uvIntersection","uv","btnColor","planeG","planeM","VideoPlayerComponent","asset","onclose","_asset","setVisible","setSrc","getVideoSas","backdropFilter","minWidth","InfinityVideoBoard","activeVideoGroup","activeVideoPlane","videoController","loopingEnabled","openInNewWindow","video","getVideoAsset","open","maximalizedPosition","maximalizedScale","theatreModeEnabled","multiplyScale","pose","close_button_color","aScale","hide","isOpenedInWorld","videoElement","getVideoElement","updateSlideHandle","currentTime","enterTheatreMode","activeTheatreController","fillInWorldPanel","theatreGroup","play","pause","videoPlayEnded","leaveTheatreMode","videoComponent","getPlayerComponent","playInModalHud","removeVideoElement","createVideoElement","remove","videosRoot","crossOrigin","playsInline","preload","muted","source","videoSource","getVideoSource","setAttribute","videoGroup","videoTexture","newDuration","mscale","finalScaleX","finalScaleY","scaleX","scaleY","aspectX","aspectY","unhide","percentages","ListGroup","InfinitySoundBoard","sound","activeTimeout","ACTIVE_SOUND","iconPlane","GetTexture","stop","clearTimeout","soundAsset","getSoundAsset","listener","soundPath","buffer","activeSound","setBuffer","setLoop","setVolume","onAfterRender","IGui","T","Card","CardHeader","CardMedia","CardContent","CardActions","Typography","Button","_label","BButton","EvaluatedButton","isSingle","pointerEvents","checked","disabled","MultiAnswerButton","setChecked","swapPressed","finalStatus","isEvaluationMode","SingleAnswerButton","TextQuestionView","activeQuestion","setAnswers","singleAnswerClicked","isInEvaluationMode","vertical","ImageZoom","zoomed","ImageStyle","maxHeight","maxWidth","marginBottom","getImage","assetId","projectImages","EvaluatedAnswer","_CardImage","imgPath","_MultiAnswerElement","setSeleted","SingleAnswerElement","popupZus","Img","loading","ImageQuestionView","tmpAnswers","getAnswerView","aLength","QuizView","activeQuiz","onQuizFinished","setActiveQuestion","activeQuestionIndex","setActiveQuestionIndex","setIsEvaluationMode","activateQuestion","questionId","_QuizFooter","onEvaluatePressed","onQuestionActivate","onNextPressed","isInEvaluation","setIsInEvaluation","getVariantFromQuestion","returnValue","sucRate","_get_end_button","_get_evaluation_button","Footer","ButtonGroup","ToggleButton","Number","currentTarget","QuizPlayer","InfinityQuizBoard","quizStartTime","quizDurationMilis","quizFinished","saveQuizToStatistics","getQuiz","quizToPlay","playQuiz","originalQuizAsset","getQuizAsset","originalQuiz","sub_load_async","alert","resultJson","saveParams","startTime","endTime","saveQuiz","GLTFLoader","manager","dracoLoader","ktx2Loader","meshoptDecoder","pluginCallbacks","register","parser","GLTFMaterialsClearcoatExtension","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFMaterialsSheenExtension","GLTFMaterialsTransmissionExtension","GLTFMaterialsVolumeExtension","GLTFMaterialsIorExtension","GLTFMaterialsSpecularExtension","GLTFLightsExtension","GLTFMeshoptCompression","onLoad","onProgress","onError","resourcePath","scope","LoaderUtils","extractUrlBase","itemStart","_onError","itemError","itemEnd","loader","FileLoader","setPath","setResponseType","setRequestHeader","requestHeader","setWithCredentials","withCredentials","parse","gltf","Error","callback","indexOf","splice","extensions","plugins","decodeText","Uint8Array","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","undefined","version","GLTFParser","fileLoader","plugin","extensionsUsed","extensionName","extensionsRequired","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","setExtensions","setPlugins","Loader","GLTFRegistry","objects","removeAll","KHR_LIGHTS_PUNCTUAL","KHR_MATERIALS_CLEARCOAT","KHR_MATERIALS_IOR","KHR_MATERIALS_SHEEN","KHR_MATERIALS_SPECULAR","KHR_MATERIALS_TRANSMISSION","KHR_MATERIALS_VOLUME","KHR_TEXTURE_BASISU","EXT_TEXTURE_WEBP","EXT_MESHOPT_COMPRESSION","cache","refs","uses","nodeDefs","nodes","nodeIndex","nodeLength","nodeDef","light","_addNodeRef","lightIndex","cacheKey","dependency","lightNode","lightDef","lights","Color","fromArray","range","DirectionalLight","PointLight","SpotLight","innerConeAngle","outerConeAngle","angle","penumbra","decay","intensity","createUniqueName","resolve","self","_loadLight","_getNodeRef","MeshBasicMaterial","materialParams","materialDef","pending","metallicRoughness","pbrMetallicRoughness","isArray","baseColorFactor","baseColorTexture","assignTexture","materialIndex","materials","MeshPhysicalMaterial","clearcoatFactor","clearcoat","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughness","clearcoatRoughnessTexture","clearcoatNormalTexture","clearcoatNormalScale","sheenColor","sheenRoughness","sheen","sheenColorFactor","sheenRoughnessFactor","sheenColorTexture","sheenRoughnessTexture","transmissionFactor","transmission","transmissionTexture","thickness","thicknessFactor","thicknessTexture","attenuationDistance","colorArray","attenuationColor","ior","specularIntensity","specularFactor","specularTexture","specularColorFactor","specularColor","specularColorTexture","textureIndex","textureDef","loadTextureImage","isSupported","textureLoader","uri","handler","getHandler","detectSupport","loadTexture","onload","onerror","bufferView","bufferViews","extensionDef","getDependency","decoder","ready","byteOffset","byteLength","stride","byteStride","ArrayBuffer","decodeGltfBuffer","mode","BINARY_EXTENSION_CHUNK_TYPES","headerView","DataView","magic","slice","getUint32","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","primitive","bufferViewIndex","gltfAttributeMap","attributes","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","attributeName","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","normalized","decodeDracoFile","attribute","texCoord","offset","repeat","GLTFMeshStandardSGMaterial","isGLTFSpecularGlossinessMaterial","specularMapParsFragmentChunk","join","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","specular","setHex","glossiness","specularMap","glossinessMap","_extraUniforms","onBeforeCompile","shader","uniformName","fragmentShader","defineProperties","v","defines","USE_SPECULARMAP","USE_GLOSSINESSMAP","USE_UV","metalnessMap","roughnessMap","setValues","MeshStandardMaterial","specularGlossinessParams","pbrSpecularGlossiness","diffuseFactor","diffuseTexture","emissive","glossinessFactor","specularGlossinessTexture","specGlossMapDef","fog","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","TangentSpaceNormalMap","normalScale","displacementMap","displacementScale","displacementBias","alphaMap","envMap","envMapIntensity","refractionRatio","GLTFCubicSplineInterpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","valueSize","Interpolant","prototype","beforeStart_","copySampleValue_","afterEnd_","interpolate_","i1","t0","t1","stride2","stride3","td","p","pp","ppp","offset1","offset0","s2","s3","s0","s1","p0","m0","p1","m1","_q","Quaternion","GLTFCubicSplineQuaternionInterpolant","WEBGL_CONSTANTS","Int8Array","Int16Array","Uint16Array","Uint32Array","Float32Array","WEBGL_FILTERS","NearestFilter","LinearFilter","NearestMipmapNearestFilter","LinearMipmapNearestFilter","NearestMipmapLinearFilter","LinearMipmapLinearFilter","WEBGL_WRAPPINGS","ClampToEdgeWrapping","MirroredRepeatWrapping","RepeatWrapping","WEBGL_TYPE_SIZES","POSITION","NORMAL","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","weights","INTERPOLATION","CUBICSPLINE","LINEAR","InterpolateLinear","STEP","InterpolateDiscrete","ALPHA_MODES","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","assign","updateMorphTargets","meshDef","il","morphTargetInfluences","targetNames","morphTargetDictionary","createPrimitiveKey","primitiveDef","dracoExtension","indices","createAttributesKey","attributesKey","getNormalizedComponentScale","constructor","associations","primitiveCache","meshCache","cameraCache","lightCache","textureCache","nodeNamesUsed","createImageBitmap","ImageBitmapLoader","TextureLoader","setCrossOrigin","_invokeAll","ext","_markDefs","beforeRoot","getDependencies","dependencies","scenes","animations","cameras","afterRoot","skinDefs","skins","meshDefs","skinIndex","skinLength","joints","isBone","skin","isSkinnedMesh","ref","updateMappings","original","mappings","func","unshift","loadScene","loadNode","_invokeOne","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","def","bufferIndex","bufferDef","buffers","reject","resolveURL","bufferViewDef","accessorIndex","sparse","pendingBufferViews","bufferAttribute","itemSize","TypedArray","elementBytes","BYTES_PER_ELEMENT","itemBytes","ibSlice","ibCacheKey","ib","InterleavedBuffer","InterleavedBufferAttribute","BufferAttribute","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","setZ","setW","sampler","URL","webkitURL","sourceURI","isObjectURL","blob","mimeType","createObjectURL","promise","isImageBitmapLoader","imageBitmap","Texture","revokeObjectURL","flipY","samplers","magFilter","minFilter","wrapS","wrapT","mapName","mapDef","gltfReference","extendTexture","useDerivativeTangents","tangent","useVertexColors","useFlatShading","normal","isPoints","uuid","pointsMaterial","PointsMaterial","Material","call","sizeAttenuation","isLine","lineMaterial","LineBasicMaterial","cachedMaterial","vertexColors","flatShading","uv2","materialType","materialExtensions","sgExtension","getMaterialType","extendParams","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","extendMaterialParams","doubleSided","DoubleSide","alphaMode","format","RGBFormat","alphaTest","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","createMaterial","originalName","sanitizedName","PropertyBinding","sanitizeNodeName","primitives","createDracoPrimitive","decodePrimitive","addPrimitiveAttributes","cached","geometryPromise","BufferGeometry","meshIndex","FrontSide","loadGeometries","geometries","SkinnedMesh","Mesh","skinWeight","normalizeSkinWeights","toTrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LineSegments","Line","LineLoop","Points","morphAttributes","assignFinalMaterial","Group","cameraIndex","cameraDef","PerspectiveCamera","MathUtils","radToDeg","yfov","aspectRatio","znear","zfar","OrthographicCamera","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","accessor","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","channel","node","input","parameters","output","inputAccessors","outputAccessors","targets","tracks","inputAccessor","outputAccessor","updateMatrix","matrixAutoUpdate","TypedKeyframeTrack","NumberKeyframeTrack","QuaternionKeyframeTrack","VectorKeyframeTrack","targetName","traverse","isMesh","outputArray","scaled","j","jl","track","createInterpolant","times","getValueSize","isInterpolantFactoryMethodGLTFCubicSpline","AnimationClip","o","nodeName","meshPromise","createNodeMesh","createNodeAttachment","Bone","Object3D","Matrix4","applyMatrix4","quaternion","sceneIndex","sceneDef","nodeIds","buildNodeHierarchy","reducedAssociations","reduceAssociations","nodeId","parentObject","pendingJoints","jointNodes","bones","boneInverses","jointNode","mat","bind","Skeleton","matrixWorld","child","assignAttributeAccessor","gltfAttributeName","setIndex","box","Box3","boxScale","multiplyScalar","maxDisplacement","vector","expandByVector","sphere","Sphere","getCenter","center","radius","distanceTo","boundingSphere","computeBounds","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","morphPositions","morphNormals","morphTargetsRelative","addMorphTargets","drawMode","getIndex","getAttribute","numberOfTriangles","newIndices","getX","newGeometry","InfinityMeshesLoader","meshAsset","onLoadCallBack","_LoadFbx","_LoadGlb","gltfLoader","_SetProbeRecursive","fbxLoader","FBXLoader","InfinityMeshBoard","glft","meshParent","animationMixer","overAllScale","animation_name","automatic_rotation_enabled","automatic_rotation_speed","automatic_rotation_axis_enabled_x","automatic_rotation_axis_enabled_y","automatic_rotation_axis_enabled_z","meshWasAdded","sceneGroup","newPosition","mixer","clipAction","secondaryNotSelectableAndNotRotatableGroup","_loadModel","placeHolder","getMeshAsset","LoadMesh","getDelta","rotationSpeed","rotateZ","DocumentPlayer","BasicMiddleSpinner","OnlySpinner","DocumentPopup","doc","urlToSee","setUrlToSee","GetDocumentSasWithUid","InfinityDocumentBoard","thumbnailMaterial","useThumbnail","showDocumentPopup","getDocumentAsset","fillThumbNail","modifier","modifiedPos","secondaryGroup","LabelPlayer","use_header","use_body","use_image","frameTop","frameBottom","frameRight","frameLeft","linesColor","isLandscape","borderFormat","borderTop","borderBottom","borderRight","borderLeft","getFrameStyle","_HeaderTextImageLabel","titleEnabled","bodyEnabled","imageEnabled","style_common","style_body","style_title","STYLE_IMAGE","minHeight","STYLE_ONLY_IMAGE","overflowY","alignment","dangerouslySetInnerHTML","__html","LinkButton","LineTypes","TOP","BOTTOM","LEFT","RIGHT","SMALL_LINE_SIZE","LabelPlayerComponent","labelData","InfinityInfoBoard","lineColor","frame_left","frame_right","frame_top","frame_bottom","linesEnabled","line_target_enabled","lineTarget","lineCorner","labelGroup","lineGroup","lineMesh","labelPlaneA","labelPlaneB","targetRotatedPoint","getLabelAsset","cornerData","w","includes","hideInWorld","getReactLabelComponent","AddLabelPlane","frontMesh","backMesh","labelAsset","addLine","rotatedPosition","sourceTarget","getWorldPosition","attachedMesh","getHex","createLine","createTargetLine","meshToAttach","meshScale","smallHeight","sizes","scaleDimension","sphereMesh","InfinityOutlineBoard","line_color","content_transparency","line_transparency","line_width","pulse_enabled","line_pulse_included","pulse_speed","activeTween","contentMaterial","startTweenToZero","startTweenToActiveValue","dispose","isControledExternally","secondaryNotSelectableGroup","fillMeshToWorld","getThreeVec3FromPoints","tmpVertices","getVerticesFromPoints","computeVertexNormals","colors","n","addLines","points","aRaw","thisPosition","widthscale","sphereGeometry","pos","cylinderGeometry","tmpLooktAt","meshGroup","nextPos","InfinityClickBoard","onlyClick","click_group_boards","Set","hover_group_boards","isGood","inWorldObject","clickResult","clickedExternaly","geometryGroup","FONTSTYLE","CELLSTYLE","DigitalTwinSectionView","section","assetUid","sectionIndex","sColor","setValue","activeTimeOut","setActiveTimeOut","failedToFetch","setFailedToFetch","failedWhy","setFailedWhy","refreshValue","canFetchAgain","DigitalTwinBoardView","boardName","DigitalTwinBoardPopupView","Alignments","TOP_LEFT","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","CENTER","LEFT_CENTER","RIGHT_CENTER","TwinBuilder","parentGroup","planeWidth","planeHeight","segmentGroup","bg","plG","plM","createStaticText","split","align","sideOffset","InfinityDigitalTwinBoard","getTwinAsset","word","maximalizedPos","InfinityFinishBard","isAreaTranslation","area_pos_x","area_pos_y","area_pos_z","area_scale","wasVisited","rotationMatrixVector","colorOffset","rotationData","spotRotationVector","boardType","loadFromJsonObject","isTranslationToNextArea","brothers","brotherSpot","found","getSearchableText","gamePadButtons","onButtonX","buttonPressedX","theatreModeActive","intersectGroupA","intersectGroupB","filtered","gamepad","checkButtonsStatus","btn","buttons","pressed","InfinityVRAvatar","swapMapVisibleInvisible","worldMapSpawnOrHideRequested","GlobalProgressBarInstance","GlobalProgressBar","now","visuallyHidden","Component","MapTools","pixelConstant","newSizeX","newSizeY","calculateMapSizeFromRatio","mapSizeX","mapSizeY","newX","newY","ActiveSpotVisualization","pointScale","args","AreaPlaneMesh","_area","backgroundTexture","useLoader","VISITED_MATERIAL","VisitedSpotOverlay","extend","GridHelper","AreaMeshGroup","c","groupRef","useRef","current","_AreaLayer","modelLayer","_layer","useGLTF","getMeshPath","primiveRef","Suspense","fallback","AreaSpot","onSpotSelected","namesVisible","_mesh","_spot","setHover","gl","useThree","onPointerDown","onPointerOver","onPointerOut","Html","distanceFactor","occlude","paddingTop","twin","AreaSpots","dimension","activeArea","_Controls","mapControls","MapControls","makeDefault","AreaGrid","gridSize","trunc","MapWorld","gridVisible","Maximap3D","MaximapModes","useCookieBoolean","init_value","valueSetter","booleanValue","setBooleanValue","D2","D3","MaximapControlBar","onItemChanged","onDimensionChanged","activeMode","setGridVisible","setNamesVisible","availableAreas","Container","Dropdown","onSelect","Toggle","Menu","Check","MinimalizeButton","maixmalizeButtonStyle","borderStyle","borderWidth","borderColor","Maximap","onMinimalize","getAreaFromSpot","_activeArea","setActiveArea","setDimension","newArea","newMode","enableRotate","Minimap3D","Minimap","onMaximapActive","isMaximapVisible","setIsMaximapVisible","MAPSTYLE","getMapSizeNoUnit","MaximalizeButton","MyTable","Table","bordered","striped","hover","ActiveSpotBoardsVisibilityOffcanvas","activeSpotZus","categoryView","setCategoryView","resultVector","ControlGroupItem","groupElement","_TableRow","isVisible","setIsVisible","WorldSingleton","INSTANCE","hideIgnoreMap","delete","refreshVisibility","useInterProjectSearch","refreshVariable","markedProjects","setMarkedProjects","IpsSearchTableHeader","searchType","UniversalInterProjectSearchTable","visibleProjectWithResult","_ProjectSubView","showAll","setShowAll","visibleChunk","setVisibleChunk","chunk_size","_ChunkView","ceil","_TagView","Badge","navigate","useNavigate","rows","INDEX","SEARCH_TIME_OUT","AllSearchView","forwardRef","selectedProjects","setVisibleProejctWithResult","isSearching","setIsSearchig","onSearchTyping","searchKey","newResult","createNewOnNameFilter","createNewOnTagFilter","runSearch","useImperativeHandle","FakeLinkButton","UniversalInterProjectTilesView","Row","xs","md","_TileDispatcher","_InfoBoardTile","_UniversalTile","CARD_STYLE","IMAGE_STYLE","_element","Col","InfoCardStyle","textOverflow","ByNameSearchView","viewAs","category","createNewOnNameAndCategory","condition","ViewContainer","_style","SearchView","avlProjects","projectsLoaded","allProjects","realProjects","getSearchCache","tmpProjects","getSearchableProject","_NewInterProjectSearchView","activeProjectUid","dispatcherRef","searchLabelRef","setSearchType","searchedProject","setSearchedProject","setViewAs","setCategory","refreshSearchedProjects","size","projectsSetFromString","_SearchTypeSelectionView","_SearchedProjectSelectionView","_ViewAsSelectionType","activeValue","_CategorySelectionType","searchValue","FormControl","placeholder","_SearchViewDispatcher","whiteSpace","activeViewRef","useLayoutZus","useExperimentalLayout","setUseExperimentalLayout","UsersApi","email","requestFullscreen","mozFullScreen","webkitIsFullScreen","exitFullscreen","ActiveTourRightBar","playInWorldHud","projectZus","guidedZus","useActiveTestTour","layoutZus","spotZus","boardsHidden","setBoardsHidden","ICON_STYLE","canShowHome","task","canUserIterateProjects","setSecondaryGroupVisibility","ActiveProjectOffCanvas","activeSubContent","setActiveSubContent","canUserSearch","_InterProjectSearchButton","ControlListItem","resetCamera","_SpotSettings","setShow","layout","Control","Branding","activeProjecZus","openProjectLink","MeshSpotHandler","loadedScene","MaximapVR","spotsGroup","textureMesh","textureMaterial","_loadPlane","planeGeometry","blackMaterial","backgronudG","ActivateSpot","areaAsset","getMapAsset","xSize","ySize","textureWidth","textureHeight","planeCoefX","planeCoefY","textureScaleX","textureScaleY","_loadMeshes","SPOT_NOTIFIED_TIMEOUT","NewWorld","previewModeEnabled","canvasRef","createRef","onEntered","onTheatreModeForceEnd","getDomElement","onLoaded","boardToLook","loadSpot","setFooter","modalcontent","isTheatreMode","activeBoards","rayCastPointer","oldRotationIndex","activeRotationIndex","boardToLookAfterLoad","drawActive","worldMap","clickEnabled","hidePressed","panoramaLoadingProgress","rightClicked","setCursorGrab","draw","animate","photoDom","vrAvatar","setCursorPointer","setCursorGrabbing","setCursorWait","afterPanoramaLoad","GetBoards","addBoards","saveSpotVisit","primaryGroup","configurator","createRenderer","capabilities","isWebGL2","configurePanoramaRenderer","addPanoramaLightning","initEnviromentEqirectangularMap","reconstructPhotoDom","_log","_onWindowResize","_registerEvents","startAutoRender","createDatGui","onkeydown","evt","keyCode","setVisibilityStatus","clearActiveContent","leaveTheatreModeRequested","myDoom","oncontextmenu","previousMousePos","dragEnd","which","_rayCast","_PointerDown","_LeftClick","_PointerUp","_FingerDown","supportsPassive","isAndroid","_PointerMove","moons","posX","rotationRad","atan2","rotationY","_recalculateMapPosition","rect","getBoundingClientRect","clientWidth","clientHeight","setFromCamera","divisions","CleanUp","panoramaAsset","loadPanorama","getFinalPosition","loadPanoramaAsset","externallyControlledBoards","fillToWorld","worldRotated","lookAtBoardWithId","dir","arrowHelper","radians","cos","sin","ProjectPlayer","expectedSpot","expectedBoard","navLinkingEnabled","generateUUID","reset","getFooterPath","ActivateWelcomeSpot","addSpotToPath","welcomeSpot","initialBoardUid","TimeManager","date","newDate","getTimezoneOffset","hours","getHours","setHours","dateString","GuidedTourRecorder","records","trainee_name","start_time","end_time","success_rate","activeRecordIndex","_project","spotRecord","GuidedTaskRecord","newFromProject","activateStartActions","getResultPercentage","boardParent","activeTask","boardClicked","goOnNextTask","getTourDuration","toUTCString","getJsonResultVector","toLocaleString","record","getPercentage","minutes","getMinutes","seconds","getSeconds","to_json","convertPureUTCDateToLocalDate","newFromJson","_start_actions","_execAction","boardsToDeactivate","activateEndActions","spotRecords","expectedBoards","foundBoards","_end_actions","sumPercentage","_spotUid","spots_data","get_spots_data_to_json","tourTask","GuidedTourSpotRecord","boardRecords","spot_data","BoardRecord","board_type","activeRecord","boards_data","boards_to_json","val","spotTask","newSpotRecord","_tmpBoard","boardRecord","boardData","isPlaying","isFinished","tourRecorded","setTask","newTask","_getTask","_getRecorder","nextTask","AppNavBar","isCollapsed","setisCollapsed","aProject","activeTestZus","float","boxShadow","fontWeight","letterSpacing","overflow","MyNavbarItem","_SettingsNavItem","iconComponent","LanguageSelectionModal","userLanguage","setUserLanguage","Modal","AppNavBarOld","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","Navbar","expand","collapseOnSelect","fluid","Collapse","Nav","NavLink","ActiveUserWrapper","NavDropdown","_UserDropDown","useLocation","Link","pathname","EuropeMap","visibleProjects","_visibleProject","projection","projectionConfig","rotate","stroke","geography","geographies","geo","default","rsmKey","coordinates","strokeWidth","textAnchor","fontFamily","SelectProjectView","setVisibleProjects","viewas","getAllProjectsOfType","filteredProject","TableProjectView","TilesProjectView","tours","trainigns","ProjectThumbnail","sx","gutterBottom","ProjectsView","useAvailableProjectGroups","availableGroups","setAvailableGroups","groups","ProjectGroupsApi","isBlocking","getAllProjectGroups","groupName","project_group","projectGroup","redirectGroup","newName","UploadStreamer","chunkSize","onFinish","webkitRelativePath","upload","lastIndex","xIndex","readFileSlice","sendChunk","reader","FileReader","readAsArrayBuffer","fileName","FILES_TO_BE_UPLOADED","FILES_TO_BE_STREAMED","FILES_TO_BE_STREAMED_COUNT","FILES_TO_BE_UPLOADED_COUNT","FILES_SENT","UploadProjectView","filesMap","onUploadStarted","onUploadEnded","uploadIsStarted","setIsUploadStarted","smallFilesUploaded","setSmallFilesUploaded","progressPercentages","setProgressPercentages","streamFileName","setStreamFileName","streamProgressPercentages","setStreamProgressPercentages","projectName","setProjectName","setProjectJsonString","setProjectGroup","projectExists","setProjectExists","projectIsValid","projectJson","rawString","readAsText","checkProjectExistence","fileStreamEnded","onbeforeunload","streamBigFiles","StartStreaming","bytesAlreadySend","uploadFullPressed","reserveProjectUpload","finishedSlices","startUpload","ProjectUploadInfoView","idUploading","_UploadStrategyBar","uploadPressed","strategy","UPLOAD_STRATEGIES","FULL","NOPANO","keysToRemove","uploadWithoutPanoramas","isTypeCreate","ProgressBar","substring","UploadPieceView","setStrategy","uploadType","setUploadType","setGroupName","_data","group_name","setIsFinished","setProgress","chunkText","setChunkText","setFileName","_uploadFile","postFile","onUploadProgress","progressEvent","ProjectPropertiesTable","setProjectJson","getProjectStats","ProjectPropertiesOffCanvas","fakeProject","activeGroup","_fakeProject","projectGroupsZus","Label","changeProjectGroup","refreshZustand","_RenameProjectEditor","_LonLatEditor","projectNameRef","_fProject","changeProjectName","lanLotInputRef","prevLatLon","latLon","setLanLon","resetLatLon","_lat","parseFloat","at","_lon","isNaN","changeLatLon","InfinityModal","headerChildren","bodyChildren","footerChildren","centered","RemoveProjectModal","availableProjectsZus","isNotNameSame","setIsNotNameSame","required","ProjectAdminThumbnail","route","beeingDeleted","globalPopupZus","IconClickButton","ManageProjectGroupOffCanvas","groupsZus","showAddPopup","setShowAddPopup","modalContent","setModalContent","removeGroupPressed","_RemoveProjectGroupModal","GroupListItem","onRemove","AddGroupModal","onSubmit","renameProjectGroup","str","gName","createProjectGroup","repeatName","setRepeatName","setRedirectGroup","availableGroupsZus","deleteProjectGroup","AreYouSureModal","onYes","onNo","showYesNoModal","ProjectsAdminViewWrapper","projectsLoading","setProjectsLoading","groupsLoading","setGroupsLoading","ProjectsAdminView","tmpMap","recalculateProjectsConfirmed","refreshProjects","_","ProjectsInGroupView","mapPool","_mapPool","health","ManageProjectGroupsButton","offCanvasVisible","setOffCanvasVisible","UploadProjectButton","UploadProjectModal","projectFiles","projectToUpdate","setProjectToUpdate","setCloseEnabled","uploadFinished","setUploadFinished","webkitdirectory","multiple","AddUserToGroupModal","expectedGroup","onRefresh","returnStatus","setReturnStatus","isProcessing","setIsProcessing","setEmail","createUser","Alert","GROUPS","EditUserOffcanvas","setUser","getUserData","UserEditView","_user","user_group","useGroup","setUserGroup","changeUserGroup","_AvailableProjectGroupsView","_AddUserToGroupBar","usePopup","_AddUserModal","asignUserToProjectAndGroup","userAvailableGroups","setUserAvailableGroups","refreshUserAvailableProjects","getUserGroupAsignmentsByGroupNames","removeUserAsignment","UserView","UsersManagementView","superAdminsRef","adminsRef","usersRef","lastVisits","setLastVisits","groupAssignments","setGroupAssignments","refresh","refreshUserGroupsAssigments","refreshUsers","getUsersAndGroupAssignments","users","getAllUsersLastVisit","UsersTableView","projectGroupsEnabled","last_visits","assignmnents","UsersTableHead","STYLE","AddUserToGroup","popup","addDisabled","_lastVisits","setUsers","getAllUsersFromGroup","removeUserPressed","removeUser","removeConfirmed","_UserProjectGroupsView","assignments","_VisitView","lastVisit","userGroupKeys","visit","setVisit","timeString","convertedDate","convertUTCDateToLocalDate","minutesDiff","hoursDiff","daysDiff","yearsDiff","VisitorsStatisticsApi","saveChartData","INNER_DIV_STYLE","INNER_DIV_STYLE_CENTER","DashBoardTile","disableCenter","DashBoardTileNoMiddle","PeriodMUISelect","period","onPeriodChanged","InputLabel","MenuItem","ViewAsMUISelect","ViewAsCustomMUISelect","ProjectsChartComparison","setData","getAllProjectsVisits","convertedData","fillColor","ResponsiveContainer","BarChart","CartesianGrid","strokeDasharray","XAxis","dataKey","tick","CustomizedAxisTick","interval","YAxis","Tooltip","Bar","entry","Cell","payload","dy","AppVisitsView","_AppVisitsView","setPeriod","getAllAppStatistics","day","_ChartView","_TableView","ProjectSelectOffcavnas","onProjectSelected","SelectProjectMUISelect","selectProjectPressed","onOpen","ProjectVisitsView","_ProjectAttendanceView","getAllProjectStatistics","ProjectViewFilter","projectChanged","Legend","ProjectAnalysisView","BasicStateSearchInput","searchTyping","UserSelectOffcavnas","onUserSelected","_UserSelectView","setSearchValue","availableUsers","setAvailableUsers","getAllUsers","useAvailableUsers","visibleUsers","setVisibleUsers","SelectUserMUISelect","disableClearUser","AreaMuiSelect","activeAreaUid","areaChanged","ProjectVisitsFilteringBar","enableChooseArea","activeUserUid","setActiveUserUid","ProjectVisits3DMap","spotsData","_MapWorld","_AreaSpots","visits","_AreaSpot","MATERIALS","_materialCounter","_calculateHeights","zIndexRange","textShadow","ProjectSpotsVisitView","_ProjectSpotsVisitView","setProjectUid","setActiveAreaUid","activeProjectData","setActiveProjectData","getProjectWithUid","getProjectUserSpotsVisits","getProjectSpotsVisits","projectData","_WorldWrapper","getParentAreaName","formatPercentage","formatPercentageToNumber","QuizzesRatingManager","sumMap","ProjectUid","SpotUid","BoardUid","firstOne","tmpResult","sumupStat","Success","answersMap","getQuizFromJsonWithResult","resultVec","sumUp","QuizzesRatingView","calculatedResult","setCalculatedResult","SortQuizzesDueToSuccess","_StatisticsViewList","_QuizRecordResponseTableRow","item","RowKey","BoardName","PartitionKey","_QuizResultViewModal","UsersSelectedAnswer","answerText","selectionCount","UsersSelectedAnswerResult","questionName","lockZus","setResult","getAllSameQuizesWithIdentifiers","quizRecordString","tmpQuestion","tmpAnswersDict","answersCounter","answerVal","answerName","usersSelectedAnswer","_calculateQuizPercentage","_QuizResultViewBody","_ValidityCell","valid","IndividualQuizzesView","_QuizzesStatisticsView","setProject","GetQuizResultsOfProjectAndUser","GetAllQuizResultsOfProject","_QuizzesStatisticsFilteringBar","UserUid","RecordUid","setQuiz","getQuizRecord","nQuiz","_WasSelectedView","selected","BoardsVisitsView","_BoardsVisitsView","setFakeProject","getBoardVisit","_BoardsVisitsTable","SpotName","Visits","milisToHoursAndMinutes","milliseconds","totalSeconds","totalMinutes","ByProjectTypesList","useAvailableProjectsByType","overflowX","paddingBottom","_ProjectView","TrainingStatisticsDashboardView","getUsersTrainingsCount","_TotalTrainingsProjectsCount","_TotalTrainingsCount","_TotalUsersCount","_AverageSuccessRate","_TotalTrainingTime","_AvgTrainingTime","BOARD_STYLE","GetAllProjectsOfType","getAverageSuccessRate","getAverageTrainingDuration","time","getTotalTrainingDuration","BestWorstQuizTables","_QuizzesSubTable","_QuestionSubTable","GetAllQuizDataFilesOfProjectType","ExtractProblematicQuestionsFromJstringArray","_BestQuestionsTable","_WorstQuestionsTable","_FakeTableHeader","_QuizTableView","_QuestionTableView","nextResponse","_BestQuizzesTable","_WorstQuizzesTable","reverse","newData","GlobalQuizzesDashBoard","setQuestionsLoading","setQuestionsPercentage","getTakenQuizCountAndSuccessRate","GetAllQuestionsSuccessRate","_QuizzesPair","_AverageQuizSuccessRate","_AverageQuizSuccessRateChart","_TotalQuizzesTakenCount","totalQuizes","setTotalQuizzes","totalQuestions","setTotalQuestions","getProjectStatsOfProjectOf","totalQuizesCount","totalQuestionsCount","QuizBoard","questionsCount","_TotalQuizzesCount","_TotalQuestionsCount","RED","GREEN","data01","PieChart","Pie","nameKey","cx","cy","outerRadius","GlobalTrainingsView","GlobalToursView","_TotalToursCount","_TotalVisitsView","GetAllVisitsOfProjectOfType","TrainingsViewFiltering","onFiltersReset","StatisticsViewHeader","IndividualTrainingsView","projectsTmp","_IndividualTrainingsView","statisticsRecords","setStatisticsRecords","refreshTrainings","userFetch","getStatsOfProject","_StatisticsTableView","_StatisticsRowItem","statsResult","removeStatisticsItem","datetime_string","StatisticsView","_DemoTabsView","tabValue","setTabValue","TabContext","Box","bgcolor","textColor","_NewGlobalSubView","_TourOrTrainingSubView","scrollButtons","TabPanel","_VisitorsSubView","TrainingPrintView","recorduid","useParams","_TourStatisticsPrintView","setRecord","getStatRecord","_RecordView","getResultIcon","SHADOW","_PostBar","GuidedTourResultsTableView","_TrainingHeader","_TableDefintionHeader","_TablesBody","print","getStartTimeLocal","getEndTimeLocal","spotData","_ResultBoardTypeDispatched","ErrorBoundary","_ErrorView","useEffectOnce","effect","deps","effectFn","destroyFn","effectCalled","rendered","MountProjectWrapper","projectid","projectError","setProjectError","isDevelopment","_SubmitViewModal","onSubmited","isSubmiting","setIsSubmiting","recorderZus","submitPressed","saveGuidedTour","TaskPlayModal","onPlayPressed","cancelEnabled","onCancel","activeTaskZus","_title","replaceAll","_PlayerBody","_body","TaskTourHud","tourZus","submited","_showTaskPopup","__hidePopup","isLast","_TaskView","onNext","nextTaskClicked","onSkip","showPreview","setShowPreview","FONT_COLOR","FONT_SIZE","alignItems","role","_ActiveTaskPreview","WorldPlayer","searchParams","useLayout","worldRef","projectPlayer","orientation","setOrientation","prepared","setIsPrepared","onPopState","activateFromState","onpopstate","tmpBoard","activateFromSearchParams","worldWasLoaded","LoadProject","prepareData","AppRoutes","_ProjectPlayerWrapper","URLSearchParams","_GlobalPopup","Fragment","App","tInstance","setUserJwt","appReady","setAppReady","checkBackendAvailability","authMe","jwt","childrenArray","elementsToRemove","tagName","removeIFrame","_CookiesComponent","flexGrow","_Main","container","createRoot","StrictMode"],"mappings":"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","file":"static/js/main.0405d0cd.chunk.js","sourcesContent":["import i18n from 'i18next';\r\nimport {initReactI18next} from 'react-i18next';\r\n\r\nimport Backend from 'i18next-http-backend';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\n\r\ni18n\r\n .use(Backend)\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n fallbackLng: 'en',\r\n debug: false,\r\n supportedLngs: [\"en\", \"sk\", \"cz\"],\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n\r\n backend: {\r\n loadPath: \"/assets/{{ns}}/{{lng}}.json\",\r\n },\r\n });\r\n\r\n\r\nexport default i18n;","import React from \"react\";\r\n\r\nimport create from \"zustand\"\r\n\r\n\r\ninterface GlobalAppLock {\r\n isAppLocked: boolean,\r\n isFailed: boolean,\r\n failError: number,\r\n failMessage: string,\r\n lock: any\r\n unlock: any\r\n fail: any\r\n\r\n}\r\n\r\nexport const useGlobalAppLock = create((set) => ({\r\n isAppLocked: false,\r\n isFailed: false,\r\n failError: -1,\r\n failMessage: \"\",\r\n lock: () => set((newState) => ({isAppLocked: true})),\r\n unlock: () => set((newState) => ({isAppLocked: false})),\r\n fail: () => set((newState) => ({isFailed: true})),\r\n\r\n}))\r\n\r\n","import {Image, Spinner, Stack} from \"react-bootstrap\";\r\nimport React from \"react\";\r\nimport {useGlobalAppLock} from \"../zustands/globalAppLockZus\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\n\r\nexport default function AppLockSpinner() {\r\n\r\n const locker = useGlobalAppLock()\r\n\r\n const [t] = useTranslation()\r\n\r\n let content: any = null\r\n\r\n if (locker.isFailed === false) {\r\n content = \r\n } else {\r\n content = \r\n \r\n
{t(\"core.somethingiswrong\")} {locker.failError}: {locker.failMessage}
\r\n
\r\n\r\n }\r\n\r\n\r\n return (\r\n
\r\n
\r\n {\r\n content\r\n }\r\n\r\n
\r\n
\r\n )\r\n}","import React from \"react\";\r\n\r\n\r\nimport create from \"zustand\"\r\n\r\n\r\ninterface ActiveUserInterface {\r\n name: string;\r\n type: string;\r\n uid: string;\r\n}\r\n\r\nconst initialUser: ActiveUserInterface = {\r\n name: \"\",\r\n type: \"\",\r\n uid: \"\",\r\n}\r\n\r\ninterface ActiveUserZus {\r\n activeUser: ActiveUserInterface,\r\n setActiveUser: (user: any) => void\r\n}\r\n\r\nexport const useActiveUserZus = create((set) => ({\r\n activeUser: initialUser,\r\n setActiveUser: (user: ActiveUserInterface) => set((newState) => ({activeUser: user})),\r\n}))\r\n\r\n","import axios from \"axios\";\r\nimport {useActiveUserZus} from \"../zustands/activeUserZus\";\r\n\r\nexport default class AuthenticationManager {\r\n\r\n static async authMe() {\r\n\r\n let returnObject = {}\r\n\r\n await axios.get(\"/.auth/me\").then(async (azureResponse) => {\r\n\r\n if (azureResponse.data.length !== 0) {\r\n const response = azureResponse.data[0]\r\n\r\n let auth_provider = response.provider_name\r\n let token = response.id_token\r\n\r\n returnObject[\"jwt\"] = token\r\n\r\n const form = new FormData()\r\n form.set(\"provider_name\", auth_provider)\r\n form.set(\"jwt\", token)\r\n\r\n\r\n await axios.post(`/api/users/getmytypeandactivateme?provider_name=${auth_provider}`, form).then((userResponse) => {\r\n const data = userResponse.data\r\n\r\n returnObject[\"jwt\"] = data[\"encodedToken\"]\r\n\r\n useActiveUserZus.setState({\r\n activeUser: {\r\n \"name\": data[\"name\"],\r\n \"type\": data[\"user_type\"],\r\n }\r\n })\r\n })\r\n\r\n } else {\r\n\r\n console.error(\"Auth me is invalid, running in emergency mode\")\r\n\r\n const emergencyData = await AuthenticationManager.authMeEmergency()\r\n\r\n returnObject[\"jwt\"] = emergencyData[\"jwt\"]\r\n\r\n useActiveUserZus.setState({\r\n activeUser: {\r\n \"name\": emergencyData[\"name\"],\r\n \"type\": emergencyData[\"user_type\"],\r\n }\r\n })\r\n }\r\n\r\n\r\n })\r\n\r\n\r\n return returnObject\r\n }\r\n\r\n\r\n static async authMeEmergency(): Promise {\r\n\r\n const result = await axios.post(`/api/users/activate-emergency-mode`)\r\n\r\n const data = result.data\r\n\r\n useActiveUserZus.setState({\r\n activeUser: {\r\n \"name\": data[\"name\"],\r\n \"type\": data[\"user_type\"],\r\n }\r\n })\r\n return result.data\r\n }\r\n\r\n\r\n}","import axios from \"axios\";\r\n\r\nexport default class AppBackendManager {\r\n\r\n static isBackendAvailable = false\r\n\r\n static async checkBackendAvailability() {\r\n\r\n\r\n await axios.get(\"/api/is_backend_available\").then((response) => {\r\n console.log(\"Backend is available, running in serverside mode\")\r\n AppBackendManager.isBackendAvailable = response.data\r\n }).catch((e) => {\r\n console.log(\"Backend is not available, running in static page mode\")\r\n console.log(e)\r\n AppBackendManager.isBackendAvailable = false\r\n })\r\n\r\n return AppBackendManager.isBackendAvailable\r\n\r\n\r\n }\r\n\r\n}","import {useActiveUserZus} from \"../zustands/activeUserZus\";\r\nimport React from \"react\";\r\n\r\n\r\ninterface _OnlyAdminViewProps {\r\n children?: string | JSX.Element | JSX.Element[] | any\r\n}\r\n\r\n\r\nexport function OnlySuperAdminView({children}: _OnlyAdminViewProps): any {\r\n\r\n const activeUserZus = useActiveUserZus()\r\n const activeUser = activeUserZus.activeUser\r\n\r\n if (activeUser.type === \"superadmin\") {\r\n return (\r\n React.Children.toArray(children)\r\n )\r\n } else {\r\n return <>\r\n }\r\n\r\n}\r\n\r\n\r\nexport function OnlyAdminView({children}: _OnlyAdminViewProps) {\r\n\r\n const activeUserZus = useActiveUserZus()\r\n const activeUser = activeUserZus.activeUser\r\n\r\n if (activeUser.type === \"admin\" || activeUser.type === \"superadmin\") {\r\n return (\r\n React.Children.toArray(children) as any\r\n )\r\n } else {\r\n return <>\r\n }\r\n\r\n}\r\n\r\nexport function isActiveUserSuperAdmin(): boolean {\r\n const activeUser = useActiveUserZus.getState().activeUser\r\n return activeUser.type === \"superadmin\"\r\n}\r\n\r\nexport function isActiveUserAdmin(): boolean {\r\n const activeUser = useActiveUserZus.getState().activeUser\r\n return activeUser.type === \"admin\" || activeUser.type === \"superadmin\"\r\n}","import React from \"react\";\r\n\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nimport {Form} from \"react-bootstrap\";\r\nimport useCookie from \"react-use-cookie\";\r\n\r\n\r\nexport default function LanguageSelectionView({}) {\r\n\r\n const [t, tInsntance] = useTranslation()\r\n\r\n const [language, setLanguage] = useCookie(\"language\", tInsntance.language)\r\n\r\n const langChanged = (e) => {\r\n const value = e.target.value\r\n tInsntance.changeLanguage(value)\r\n setLanguage(value)\r\n }\r\n\r\n return (\r\n\r\n
\r\n {t(\"core.language\")}:\r\n \r\n \r\n \r\n \r\n {/**/}\r\n \r\n
\r\n )\r\n}\r\n\r\n","import React from \"react\";\r\n\r\nimport LanguageSelectionView from \"./general/LanguageSelectionView\";\r\nimport {Stack} from \"react-bootstrap\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nexport default function SettingsGeneral({}) {\r\n\r\n const [t] = useTranslation()\r\n\r\n return (\r\n \r\n \r\n\r\n
\r\n {\r\n window.location = window.location.origin + \"/.auth/logout\"\r\n }}\r\n >\r\n {t(\"core.logout\")}\r\n \r\n\r\n
\r\n\r\n\r\n
\r\n )\r\n}\r\n\r\n\r\n","export default class DeviceDispatcher {\r\n\r\n\r\n static async initImplementation() {\r\n\r\n }\r\n\r\n static isDesktop() {\r\n return window.__TAURI_IPC__\r\n }\r\n\r\n static isWeb() {\r\n return !window.__TAURI_IPC__\r\n }\r\n\r\n static isDevelopment(): boolean {\r\n return process.env.NODE_ENV === \"development\"\r\n }\r\n\r\n\r\n}","import axios from \"axios\";\r\nimport AppBackendManager from \"./AppBackendManager\";\r\n\r\nexport default class LicenceApi {\r\n static async getLicence(): Promise {\r\n console.log(AppBackendManager.isBackendAvailable)\r\n\r\n if (AppBackendManager.isBackendAvailable) {\r\n const response = await axios.get(\"/api/licences/get-licence\")\r\n return response.data\r\n\r\n } else {\r\n const response = await axios.get(\"/license.json\")\r\n return response.data\r\n }\r\n\r\n\r\n }\r\n}","import DeviceDispatcher from \"../devtools/DeviceDispatcher\";\r\nimport LicenceApi from \"./LicenceApi\";\r\n\r\n\r\nclass Player360Functionality {\r\n\r\n hide_boards_selection_enabled = false\r\n spot_visits_monitoring = false\r\n quizzes_monitoring = false\r\n boards_monitoring = false\r\n visited_spot_in_map = false\r\n users_projects_listing = true\r\n can_user_search = true\r\n can_see_hud_icons = true\r\n can_see_minimap = true\r\n\r\n from_json_object(obj: any) {\r\n this.hide_boards_selection_enabled = obj.hide_boards_selection_enabled ?? false\r\n this.spot_visits_monitoring = obj.spot_visits_monitoring ?? false\r\n this.quizzes_monitoring = obj.quizzes_monitoring ?? false\r\n this.boards_monitoring = obj.boards_monitoring ?? false\r\n this.visited_spot_in_map = obj.visited_spot_in_map ?? false\r\n this.users_projects_listing = obj.users_projects_listing ?? true\r\n this.can_user_search = obj.can_user_search ?? true\r\n this.can_see_hud_icons = obj.can_see_hud_icons ?? true\r\n this.can_see_minimap = obj.can_see_minimap ?? true\r\n }\r\n}\r\n\r\n\r\nexport default class LicenceManager {\r\n\r\n static licenseValid = false\r\n\r\n static editor360Valid = false\r\n static editorArValid = false\r\n static editorVrValid = false\r\n static organizationLink = \"\"\r\n\r\n static anyEditorValid = false\r\n static projectsMapEnabled = false\r\n\r\n static usesNewLayoutAsDefault = false\r\n\r\n static f360 = new Player360Functionality()\r\n\r\n static async init() {\r\n const isValid = await LicenceManager.hasValidLicense()\r\n\r\n if (DeviceDispatcher.isDesktop()) {\r\n LicenceManager.licenseValid = isValid\r\n LicenceManager.editor360Valid = isValid\r\n LicenceManager.editorArValid = isValid\r\n\r\n LicenceManager.anyEditorValid = (\r\n LicenceManager.editor360Valid ||\r\n LicenceManager.editorArValid ||\r\n LicenceManager.editorVrValid\r\n )\r\n } else {\r\n LicenceManager.licenseValid = true\r\n\r\n const data = await LicenceApi.getLicence()\r\n\r\n LicenceManager.usesNewLayoutAsDefault = data.usesNewLayoutAsDefault ?? false\r\n\r\n LicenceManager.f360.from_json_object(data.player360functionality ?? {})\r\n\r\n LicenceManager.organizationLink = data.organizationLink ?? \"\"\r\n\r\n LicenceManager.projectsMapEnabled = data.projectsMapEnabled ?? false\r\n LicenceManager.editor360Valid = true\r\n LicenceManager.editorArValid = true\r\n LicenceManager.anyEditorValid = true\r\n\r\n //return result.data\r\n }\r\n\r\n }\r\n\r\n static async hasValidLicense(): Promise {\r\n if (DeviceDispatcher.isDesktop()) {\r\n // return await TauriLicences.isLicenceValid()\r\n return true\r\n } else {\r\n return true\r\n }\r\n }\r\n}\r\n\r\n\r\nclass LicensesType {\r\n static BASIC = \"Basic\"\r\n static PRO = \"Pro\"\r\n static CUSTOM = \"Custom\"\r\n\r\n}","import React from \"react\";\r\n\r\nimport LicenceManager from \"../../api/LicenceManager\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport {Image, Stack} from \"react-bootstrap\";\r\nimport RequestLicenseModal from \"./RequestLicenseModal\";\r\n\r\nexport default function ValidLicenceWrapper({children}) {\r\n\r\n\r\n if (LicenceManager.licenseValid) {\r\n return (\r\n children\r\n )\r\n } else {\r\n return (\r\n <>\r\n {\r\n children\r\n }\r\n\r\n
\r\n
\r\n <_InvalidLicenseOverlay/>\r\n
\r\n
\r\n\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\nfunction _InvalidLicenseOverlay() {\r\n\r\n const [t] = useTranslation()\r\n\r\n const [modalVisible, setModalVisible] = React.useState(false)\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n
\r\n {\r\n t(\"core.handlers.invalid\")\r\n }\r\n
\r\n \r\n
\r\n\r\n\r\n {\r\n modalVisible &&\r\n setModalVisible(false)}/>\r\n }\r\n\r\n
\r\n )\r\n}\r\n\r\nexport function Editor360Only({children}) {\r\n\r\n if (LicenceManager.editor360Valid) {\r\n return (\r\n <>\r\n {\r\n React.Children.toArray(children)\r\n }\r\n \r\n )\r\n } else {\r\n return (<>)\r\n }\r\n\r\n}\r\n\r\nexport function EditorArOnly({children}) {\r\n\r\n if (LicenceManager.editorArValid) {\r\n return (\r\n <>\r\n {\r\n React.Children.toArray(children)\r\n }\r\n \r\n )\r\n } else {\r\n return (<>)\r\n }\r\n\r\n}\r\n\r\n\r\nexport function AnyEditor({children}) {\r\n\r\n if (LicenceManager.anyEditorValid) {\r\n return (\r\n <>\r\n {\r\n React.Children.toArray(children)\r\n }\r\n \r\n )\r\n } else {\r\n return (<>)\r\n }\r\n\r\n}\r\n","import {getCookie, setCookie} from \"react-use-cookie\"\r\n\r\n\r\nconst LAST_RESOLUTION = getCookie(\"panorama_resolution\")\r\n\r\nexport default class PanoramasManager {\r\n\r\n static REALLY_BAD = \"512x256\"\r\n static LOW = \"2048x1024\"\r\n static MEDIUM = \"4096x2048\"\r\n static HIGH = \"8196x4096\"\r\n static ULTRA = \"16384x8192\"\r\n\r\n static ACTIVE_RESOLUTION = LAST_RESOLUTION !== \"\" ? LAST_RESOLUTION : PanoramasManager.HIGH\r\n\r\n static changeResolution(newResolution: string) {\r\n\r\n PanoramasManager.ACTIVE_RESOLUTION = newResolution\r\n setCookie(\"panorama_resolution\", newResolution)\r\n }\r\n\r\n\r\n static adaptToNetwork() {\r\n\r\n }\r\n\r\n static adaptToDevice() {\r\n\r\n }\r\n\r\n}","import React from \"react\";\r\n\r\n\r\nimport {useTranslation} from \"react-i18next\";\r\nimport PanoramasManager from \"../../api/PanoramasManager\";\r\nimport {Form} from \"react-bootstrap\";\r\n\r\nexport default function TourSettings() {\r\n\r\n const [t] = useTranslation()\r\n\r\n const [resolution, setResolution] = React.useState(PanoramasManager.ACTIVE_RESOLUTION)\r\n\r\n const changeResolution = (e) => {\r\n const newResolution = e.target.value\r\n PanoramasManager.changeResolution(newResolution)\r\n setResolution(newResolution)\r\n }\r\n\r\n return (\r\n <>\r\n\r\n
\r\n {t(\"core.photoquality\")}:\r\n \r\n {/**/}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n )\r\n}\r\n","import React from \"react\";\r\nimport {Stack} from \"react-bootstrap\";\r\n// import MinimapSettings from \"./settings360/MinimapSettings\";\r\nimport {Editor360Only} from \"../components/licencing/LicenceWrappers\";\r\n\r\n// import SpotEditorSettings from \"./settings360/SpotEditorSettings\";\r\n// import BrandingSettings from \"./settings360/BrandingSettings\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nimport TourSettings from \"./settings360/TourSettings\";\r\n\r\nexport default function Settings360() {\r\n\r\n const [t] = useTranslation()\r\n\r\n return (\r\n \r\n {/**/}\r\n\r\n \r\n\r\n \r\n {/**/}\r\n {/**/}\r\n \r\n \r\n )\r\n}","import React from \"react\";\r\nimport {Offcanvas} from \"react-bootstrap\";\r\n\r\n\r\ninterface InfinityOffcanvasWrapperProps {\r\n header: any\r\n closeButton?: boolean\r\n onHide?: () => void\r\n body: any\r\n mainStyle?: any\r\n}\r\n\r\nexport function InfinityOffcanvasWrapper({\r\n header,\r\n closeButton,\r\n onHide,\r\n body,\r\n mainStyle,\r\n }: InfinityOffcanvasWrapperProps) {\r\n\r\n const _mstyle = mainStyle ?? {}\r\n\r\n\r\n return (\r\n \r\n\r\n \r\n {\r\n header\r\n }\r\n \r\n\r\n \r\n {\r\n body\r\n }\r\n \r\n\r\n\r\n \r\n )\r\n}","import React from \"react\";\r\nimport {Offcanvas, Tab, Tabs} from \"react-bootstrap\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport SettingsGeneral from \"./SettingsGeneral\";\r\nimport Settings360 from \"./Settings360\";\r\nimport {InfinityOffcanvasWrapper} from \"../components/offcanvas\";\r\n\r\n\r\nexport default function SettingsOffcanvas({onHide}) {\r\n\r\n const [t] = useTranslation()\r\n\r\n return (\r\n {t(\"core.settings\")}}\r\n body={}\r\n />\r\n\r\n )\r\n}\r\n\r\n\r\nexport function SettingsView() {\r\n\r\n const [t] = useTranslation()\r\n\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {/*{*/}\r\n {/* LicenceManager.editorArValid &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/*}*/}\r\n\r\n\r\n \r\n\r\n \r\n )\r\n}\r\n","import create from \"zustand\"\r\n\r\nimport {InfinityProject} from \"../../infinity/InfinityProject\";\r\n\r\ninterface ActiveProjectState {\r\n project: InfinityProject | any,\r\n setActiveProject: (project: InfinityProject | null) => void\r\n}\r\n\r\n\r\nexport class ActiveProjectSingleton {\r\n static activeProject: InfinityProject | null = null\r\n}\r\n\r\n\r\nexport const useActiveProject = create((set) => ({\r\n project: null,\r\n setActiveProject: (newProject) => set((newState) => {\r\n ActiveProjectSingleton.activeProject = newProject\r\n return {project: newProject}\r\n }),\r\n}))\r\n","import {map} from \"react-bootstrap/ElementChildren\";\r\n\r\n\r\nclass CookieManager {\r\n\r\n activeSpotUid = \"\"\r\n\r\n cookiesEnabled = true\r\n map = new Map()\r\n\r\n\r\n put(key: string, value) {\r\n if (this.cookiesEnabled) {\r\n this.map[key] = value\r\n }\r\n\r\n }\r\n\r\n get(key: string, defaultValue: any = null) {\r\n if (this.map.has(key)) {\r\n return this.map[key]\r\n } else {\r\n return defaultValue\r\n }\r\n }\r\n\r\n addSpotToPath(projectId, spotUid) {\r\n const data = {\r\n spot: spotUid,\r\n }\r\n this.activeSpotUid = spotUid\r\n\r\n window.history.pushState(data, `navLink`, `/#/project/${projectId}?spot=${spotUid}`);\r\n }\r\n\r\n addCutomToSpotPath(custom) {\r\n window.history.pushState(custom, `navLink`, custom);\r\n }\r\n\r\n\r\n}\r\n\r\nexport const COOKIE_MANAGER = new CookieManager()","export class AssetParent {\r\n\r\n uid: string = \"\"\r\n file_extension: string = \"\"\r\n name: string = \"\"\r\n projectUid: string = \"\"\r\n url: string = \"\"\r\n description: string = \"\"\r\n folderName: string = \"\"\r\n\r\n fromJsonObject(object: any) {\r\n this.uid = object[\"uid\"]\r\n this.file_extension = object[\"file_extension\"]\r\n this.name = object[\"name\"]\r\n this.url = object[\"url\"]\r\n this.description = object[\"description\"]\r\n }\r\n\r\n getAbsolutePath() {\r\n return `${this.GetStorage()}${this.uid}/default.${this.file_extension}`\r\n }\r\n\r\n GetStorage(): string {\r\n return `/infinity/${this.projectUid}/${this.folderName}/`\r\n }\r\n\r\n getWebPreviewImage(): string {\r\n return `${this.GetStorage()}${this.uid}/preview.png`\r\n }\r\n}\r\n","import {AssetParent} from \"./asset_Parent\";\r\nimport axios from \"axios\";\r\n\r\n\r\nexport class TourTaskAsset extends AssetParent {\r\n folderName = \"Tasks\"\r\n\r\n tour_task = new TourTask()\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getWebPreviewImage(): string {\r\n return \"assets/icons/end_tour.svg\"\r\n }\r\n\r\n async load_from_json_object_async(object: any) {\r\n super.fromJsonObject(object)\r\n\r\n const result = await axios.get(this.getAbsolutePath())\r\n\r\n this.tour_task.from_json_object(result.data)\r\n }\r\n\r\n}\r\n\r\nexport class TourTask {\r\n\r\n header = \"\"\r\n body = \"\"\r\n position = 0\r\n\r\n starting_actions = new Array()\r\n\r\n ending_actions = new Array()\r\n\r\n conditions_boards = new Map()\r\n\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n from_json_object(obj: any) {\r\n this.header = obj.header ?? \"\"\r\n this.body = obj.body ?? \"\"\r\n\r\n this.position = obj.position ?? 0\r\n\r\n this._load_starting_actions(obj.starting_actions ?? [])\r\n this._load_ending_actions(obj.ending_actions ?? [])\r\n this._load_condition_board(obj.conditions_boards ?? [])\r\n\r\n }\r\n\r\n _load_condition_board(jObject: Array) {\r\n\r\n Object.keys(jObject).forEach((value) => {\r\n const _jData = jObject[value]\r\n this.conditions_boards.set(value, new TourTaskCondition(value, _jData))\r\n })\r\n\r\n }\r\n\r\n _load_starting_actions(jObject: []) {\r\n\r\n this.starting_actions = jObject.map((actionData: any) => {\r\n const action = new TourTaskAction()\r\n action.from_json_object(actionData)\r\n return action\r\n })\r\n }\r\n\r\n _load_ending_actions(jObject: []) {\r\n this.ending_actions = jObject.map((actionData: any) => {\r\n const action = new TourTaskAction()\r\n action.from_json_object(actionData)\r\n return action\r\n })\r\n }\r\n}\r\n\r\n\r\nexport class TourTaskActionTypes {\r\n static MOVE_TO_SPOT = \"MoveToSpot\"\r\n static DEACTIVATE_BOARD = \"DeactivateBoard\"\r\n}\r\n\r\n\r\nexport class TourTaskAction {\r\n type = \"\"\r\n typeData = {}\r\n\r\n\r\n from_json_object(jObject: any) {\r\n this.type = jObject.type\r\n\r\n const board_ids = jObject.boards_ids ?? []\r\n\r\n if (this.type === TourTaskActionTypes.MOVE_TO_SPOT) {\r\n this.typeData[\"spot\"] = board_ids[0] ?? \"\"\r\n } else if (this.type === TourTaskActionTypes.DEACTIVATE_BOARD) {\r\n this.typeData[\"spots\"] = jObject.boards_ids ?? []\r\n } else {\r\n console.log(\"Hide boards is not implemented\")\r\n }\r\n }\r\n\r\n}\r\n\r\nexport class TourTaskCondition {\r\n spotUid: string\r\n boards = new Map()\r\n\r\n constructor(spotUid: string, boards: Array) {\r\n this.spotUid = spotUid\r\n\r\n boards.forEach((value) => {\r\n this.boards.set(value, false)\r\n })\r\n }\r\n}\r\n\r\n\r\n","import React from \"react\";\r\n\r\n\r\nimport create from \"zustand\"\r\n\r\nimport {InfinitySpot} from \"../infinity/InfinitySpot\";\r\n\r\ninterface ActiveSpotZus {\r\n activeSpot: any | InfinitySpot\r\n setActiveSpot: (newSpot: InfinitySpot | any) => void\r\n}\r\n\r\nexport const useActiveSpotZus = create((set) => ({\r\n activeSpot: null,\r\n setActiveSpot: (newSpot: InfinitySpot | any) => set((newState) => ({activeSpot: newSpot})),\r\n}))\r\n\r\n","import * as three from \"three\"\r\nimport {Vector2, Vector3} from \"three\"\r\n\r\n\r\nclass PanoramaCameraControl {\r\n\r\n\r\n element: HTMLElement\r\n\r\n constructor(camera: three.Camera, renderer: three.WebGLRenderer) {\r\n\r\n this.clock = new three.Clock();\r\n this.camera = camera\r\n this.element = renderer.domElement\r\n\r\n this.lastZoomDistance = 0\r\n this.lastSmoothCameraTime = 0;\r\n this.cameraMotionSpeed = new Vector2(0, 0);\r\n this.initialCameraMotionSpeed = new Vector2(0, 0);\r\n this.mouseMotion = new Vector2(0, 0);\r\n this.relativeMotion = new Vector2(0, 0);\r\n this.fov = 85;\r\n this.targetFov = 85;\r\n this.maxFov = 85\r\n this.minFov = 10\r\n\r\n this.cameraRotationActive = false;\r\n this.zoomEnabled = true;\r\n this.rotationLocked = false;\r\n this.smoothCameraEnabled = true;\r\n\r\n this.camera.fov = this.fov\r\n this.camera.updateProjectionMatrix()\r\n\r\n this.previousTouch = new three.Vector2(0, 0)\r\n\r\n\r\n }\r\n\r\n\r\n enable = () => {\r\n }\r\n\r\n autoAttachOnRenderer = () => {\r\n this.element.addEventListener(\"pointerdown\", this.onLeftDown)\r\n this.element.addEventListener(\"pointerup\", this.onLeftUp)\r\n this.element.addEventListener(\"pointermove\", this.onPointerMove)\r\n this.element.addEventListener(\"wheel\", this.onWheel)\r\n\r\n\r\n this.element.addEventListener(\"touchend\", this.onFingerUp)\r\n this.element.addEventListener(\"touchstart\", this.onFingerDown)\r\n this.element.addEventListener(\"touchmove\", this.onFingerMove)\r\n }\r\n\r\n autoAttachOnWindow = () => {\r\n window.addEventListener(\"pointerdown\", this.onLeftDown)\r\n window.addEventListener(\"pointerup\", this.onLeftUp)\r\n window.addEventListener(\"pointermove\", this.onPointerMove)\r\n window.addEventListener(\"wheel\", this.onWheel)\r\n\r\n\r\n window.addEventListener(\"touchend\", this.onFingerUp)\r\n window.addEventListener(\"touchstart\", this.onFingerDown)\r\n window.addEventListener(\"touchmove\", this.onFingerMove)\r\n }\r\n\r\n update = () => {\r\n this.StepSmoothCamera()\r\n }\r\n\r\n UpdateLastCameraMotionTime = () => {\r\n this.lastSmoothCameraTime = new Date().getTime() * 0.001\r\n }\r\n\r\n StepSmoothCamera = () => {\r\n\r\n if (this.targetFov !== this.fov) {\r\n this.fov = this.fov + (this.targetFov - this.fov) * 0.15\r\n\r\n if (Math.abs(this.targetFov - this.fov) < 1) {\r\n this.fov = this.targetFov\r\n }\r\n\r\n this.camera.fov = this.fov\r\n this.camera.updateProjectionMatrix()\r\n }\r\n\r\n if (this.cameraRotationActive) {\r\n const timeDif = new Date().getTime() * 0.001 - this.lastSmoothCameraTime;\r\n\r\n if (timeDif === 0) {\r\n // console.log(\"Init smooth camera motion speed skipped!\")\r\n return\r\n }\r\n this.UpdateLastCameraMotionTime();\r\n const pixelToRadians = 2500;\r\n const speed = 0.001 * (this.fov / 50);\r\n const maxSpeed = 10;\r\n\r\n let newSpeedX = this.mouseMotion.x / timeDif / pixelToRadians;\r\n newSpeedX = Math.max(-maxSpeed, Math.min(maxSpeed, newSpeedX));\r\n\r\n let newSpeedY = this.mouseMotion.y / timeDif / pixelToRadians;\r\n newSpeedY = Math.max(-maxSpeed, Math.min(maxSpeed, newSpeedY));\r\n\r\n this.initialCameraMotionSpeed.setX(this.initialCameraMotionSpeed.x * 0.5 + newSpeedX * 0.5)\r\n this.initialCameraMotionSpeed.setY(this.initialCameraMotionSpeed.y * 0.5 + newSpeedY * 0.5)\r\n\r\n let minSpeed = 0;\r\n if (this.initialCameraMotionSpeed.length() < minSpeed) {\r\n this.initialCameraMotionSpeed.set(0, 0);\r\n }\r\n\r\n this.checkVerticalClamp()\r\n\r\n this.camera.rotateOnAxis(new Vector3(1, 0, 0), this.mouseMotion.y * speed)\r\n this.camera.rotateOnWorldAxis(new Vector3(0, 1, 0), this.mouseMotion.x * speed)\r\n\r\n this.mouseMotion.set(0, 0)\r\n }\r\n if (this.cameraRotationActive === false && this.cameraMotionSpeed.length() !== 0 && this.smoothCameraEnabled) {\r\n const timeDif = new Date().getTime() * 0.001 - this.lastSmoothCameraTime;\r\n if (timeDif === 0) {\r\n // console.log(\"Smooth camera motion speed skipped!\")\r\n return;\r\n }\r\n\r\n this.UpdateLastCameraMotionTime();\r\n\r\n this.checkVerticalClamp()\r\n\r\n this.camera.rotateOnAxis(new Vector3(1, 0, 0), this.cameraMotionSpeed.y * timeDif)\r\n this.camera.rotateOnWorldAxis(new Vector3(0, 1, 0), this.cameraMotionSpeed.x * timeDif)\r\n\r\n const speedDif = this.initialCameraMotionSpeed.clone().normalize();\r\n speedDif.setX(speedDif.x * (timeDif * 6))\r\n speedDif.setY(speedDif.y * (timeDif * 6))\r\n\r\n\r\n this.cameraMotionSpeed.setX(this.cameraMotionSpeed.x - speedDif.x)\r\n this.cameraMotionSpeed.setY(this.cameraMotionSpeed.y - speedDif.y)\r\n\r\n const copySign = (x, y) => {\r\n return Math.sign(x) === Math.sign(y) ? x : -x\r\n }\r\n\r\n if (copySign(1, this.cameraMotionSpeed.x) !== copySign(1, this.initialCameraMotionSpeed.x)) {\r\n this.cameraMotionSpeed.setX(0);\r\n }\r\n if (copySign(1, this.cameraMotionSpeed.y) !== copySign(1, this.initialCameraMotionSpeed.y)) {\r\n this.cameraMotionSpeed.setY(0);\r\n }\r\n }\r\n }\r\n\r\n checkVerticalClamp = () => {\r\n const actAngle = this.camera.getWorldDirection(new Vector3(0, 1, 0)).angleTo(new Vector3(0, 1, 0))\r\n if (actAngle < 0.8) {\r\n this.mouseMotion.setY(-2)\r\n this.cameraMotionSpeed.setY(0)\r\n } else if (actAngle > 2.7) {\r\n this.mouseMotion.setY(2)\r\n this.cameraMotionSpeed.setY(0)\r\n }\r\n }\r\n\r\n onLeftDown = (event: MouseEvent) => {\r\n\r\n if (event.isPrimary === false) {\r\n return\r\n }\r\n\r\n this.cameraRotationActive = true\r\n this.initialCameraMotionSpeed.set(0, 0)\r\n this.cameraMotionSpeed.set(0, 0)\r\n\r\n this.UpdateLastCameraMotionTime()\r\n\r\n event.preventDefault()\r\n\r\n }\r\n\r\n onLeftUp = (event: MouseEvent) => {\r\n\r\n if (event.isPrimary === false) {\r\n return\r\n }\r\n\r\n if (this.cameraRotationActive) {\r\n this.cameraMotionSpeed.setX(this.initialCameraMotionSpeed.x)\r\n this.cameraMotionSpeed.setY(this.initialCameraMotionSpeed.y)\r\n this.cameraRotationActive = false;\r\n this.mouseMotion.set(0, 0);\r\n\r\n this.UpdateLastCameraMotionTime();\r\n }\r\n }\r\n\r\n onPointerMove = (event: MouseEvent) => {\r\n\r\n if (event.isPrimary === false) {\r\n return\r\n }\r\n\r\n this.relativeMotion.set(0, 0)\r\n if (this.rotationLocked == false && this.cameraRotationActive) {\r\n\r\n const dif = this.mouseMotion.clone()\r\n dif.add(new Vector2(event.movementX, event.movementY))\r\n this.relativeMotion.set(dif.x, dif.y)\r\n\r\n }\r\n\r\n this.mouseMotion.setX(this.relativeMotion.x)\r\n this.mouseMotion.setY(this.relativeMotion.y)\r\n }\r\n\r\n onFingerMove = (event: TouchEvent) => {\r\n\r\n if (this.isTouchScaling) {\r\n\r\n if (this.cameraRotationActive) {\r\n this.cameraMotionSpeed.setX(this.initialCameraMotionSpeed.x)\r\n this.cameraMotionSpeed.setY(this.initialCameraMotionSpeed.y)\r\n this.cameraRotationActive = false;\r\n this.mouseMotion.set(0, 0);\r\n\r\n this.UpdateLastCameraMotionTime();\r\n }\r\n\r\n if (event.touches.length === 2) {\r\n const distance = Math.hypot(\r\n event.touches[0].pageX - event.touches[1].pageX,\r\n event.touches[0].pageY - event.touches[1].pageY);\r\n\r\n const diff = this.lastZoomDistance - distance\r\n\r\n\r\n if (Math.abs(diff) > 10) {\r\n\r\n if (diff > 0) {\r\n this.targetFov += 5\r\n this.targetFov = three.MathUtils.clamp(this.targetFov, this.minFov, this.maxFov)\r\n } else {\r\n this.targetFov -= 5\r\n this.targetFov = three.MathUtils.clamp(this.targetFov, this.minFov, this.maxFov)\r\n }\r\n\r\n this.lastZoomDistance = distance\r\n\r\n event.preventDefault()\r\n }\r\n\r\n\r\n }\r\n\r\n } else {\r\n\r\n if (event.touches.length === 1) {\r\n if (this.cameraRotationActive) {\r\n const touch = event.touches[0]\r\n\r\n this.relativeMotion.set(0, 0)\r\n\r\n if (this.rotationLocked == false) {\r\n\r\n const motion = this.previousTouch.clone()\r\n motion.sub(new three.Vector2(touch.clientX, touch.clientY))\r\n\r\n const dif = this.mouseMotion.clone()\r\n dif.add(new Vector2(-motion.x, -motion.y))\r\n\r\n this.relativeMotion.set(dif.x, dif.y)\r\n this.previousTouch.set(touch.clientX, touch.clientY)\r\n\r\n }\r\n\r\n\r\n this.mouseMotion.setX(this.relativeMotion.x)\r\n this.mouseMotion.setY(this.relativeMotion.y)\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n onPinchZoomStart = (pinch, event) => {\r\n console.log(\"Here\")\r\n }\r\n\r\n onPinchZoomEnd = (pinch, event) => {\r\n console.log(\"Here\")\r\n }\r\n\r\n onDoubleClick = (pinch, event) => {\r\n console.log(\"Doubpe tap\")\r\n }\r\n\r\n onWheel = (event: MouseEvent) => {\r\n if (event.ctrlKey) {\r\n return\r\n }\r\n\r\n //TODO here naimplementovat rychlost pomocou optimalneho fov\r\n //const rotateSpeed = -(this.camera.fov / this.cameraOptimapFov)\r\n\r\n if (event.deltaY > 0) {\r\n this.targetFov += 20\r\n this.targetFov = three.MathUtils.clamp(this.targetFov, this.minFov, this.maxFov)\r\n } else {\r\n this.targetFov -= 20\r\n this.targetFov = three.MathUtils.clamp(this.targetFov, this.minFov, this.maxFov)\r\n }\r\n\r\n event.preventDefault()\r\n\r\n }\r\n\r\n onFingerDown = (event: TouchEvent) => {\r\n if (event.touches.length === 2) {\r\n this.isTouchScaling = true\r\n } else {\r\n if (event.touches.length == 1) {\r\n this.isTouchScaling = false\r\n const touch = event.touches[0]\r\n\r\n this.previousTouch.set(touch.clientX, touch.clientY)\r\n\r\n this.cameraRotationActive = true;\r\n this.initialCameraMotionSpeed.set(0, 0);\r\n this.cameraMotionSpeed.set(0, 0);\r\n\r\n this.UpdateLastCameraMotionTime()\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n onFingerUp = (event: TouchEvent) => {\r\n if (event.touches.length > 1) {\r\n\r\n } else {\r\n if (this.cameraRotationActive) {\r\n this.cameraMotionSpeed.setX(this.initialCameraMotionSpeed.x)\r\n this.cameraMotionSpeed.setY(this.initialCameraMotionSpeed.y)\r\n this.cameraRotationActive = false;\r\n this.mouseMotion.set(0, 0);\r\n\r\n this.UpdateLastCameraMotionTime();\r\n }\r\n }\r\n }\r\n\r\n resetView() {\r\n this.camera.rotation.set(0, 0, 0)\r\n }\r\n\r\n lookAt(x, y, z) {\r\n this.camera.lookAt(x, y, z)\r\n }\r\n\r\n}\r\n\r\nexport default PanoramaCameraControl","import * as three from \"three\"\r\n\r\nimport {AssetParent} from \"./asset_Parent\";\r\n\r\n\r\nexport class PanoramaAsset extends AssetParent {\r\n\r\n file_lods: number = 1\r\n file_has_moons: boolean = false\r\n is_previewed = false\r\n\r\n folderName = \"Panoramas\"\r\n\r\n firstLod: three.Texture | any = null\r\n\r\n moons_x = 16\r\n moons_y = 4\r\n\r\n constructor() {\r\n super()\r\n }\r\n\r\n fromJsonObject(object: any) {\r\n super.fromJsonObject(object)\r\n\r\n this.file_lods = object[\"file_lods\"]\r\n this.file_has_moons = object[\"file_has_moons\"]\r\n\r\n this.moons_x = object.moons_x\r\n this.moons_y = object.moons_y\r\n }\r\n\r\n getFirstLod(): three.Texture {\r\n return this.firstLod\r\n }\r\n\r\n setFirstLod(lod: three.Texture) {\r\n this.firstLod = lod\r\n }\r\n\r\n getAbsolutePath(lod: number = 0) {\r\n return this.GetStorage() + this.uid + \"/\" + lod.toString() + \".\" + this.file_extension\r\n }\r\n\r\n getMoonUltraAbsolutePath(index: number) {\r\n return this.GetStorage() + this.uid + \"/MOON_ULTRA_\" + index.toString() + \".\" + this.file_extension\r\n }\r\n\r\n getMoonAbsolutePath(index: number) {\r\n return this.GetStorage() + this.uid + \"/MOON_\" + index.toString() + \".\" + this.file_extension\r\n }\r\n\r\n getFooterAbsolutePath() {\r\n return this.GetStorage() + this.uid + \"/MOON_FOOTER.\" + this.file_extension\r\n }\r\n\r\n GetDefaultPath() {\r\n return this.GetStorage() + this.uid + \"/default.\" + this.file_extension\r\n }\r\n\r\n get2048x1024() {\r\n return this.GetStorage() + this.uid + \"/2048x1024.\" + this.file_extension\r\n }\r\n\r\n getHeaderAbsolutePath() {\r\n return this.GetStorage() + this.uid + \"/MOON_HEADER.\" + this.file_extension\r\n }\r\n\r\n\r\n}","import * as three from \"three\"\r\nimport {FontLoader} from \"three/examples/jsm/loaders/FontLoader\";\r\nimport {Texture} from \"three\";\r\n\r\n\r\nclass StaticIncludes {\r\n\r\n static _instnace: StaticIncludes = new StaticIncludes()\r\n\r\n font: any = null\r\n textures: Map\r\n\r\n static Instance(): StaticIncludes {\r\n return StaticIncludes._instnace\r\n }\r\n\r\n constructor() {\r\n this.textures = new Map()\r\n\r\n const textures = [\r\n \"EI.SoundBoard\",\r\n \"Core.Pause\",\r\n\r\n ]\r\n\r\n\r\n const rootPath = \"/assets/icons/\"\r\n\r\n textures.forEach((value: string) => {\r\n this.textures.set(value, new three.TextureLoader().load(rootPath + value + \".png\"))\r\n })\r\n\r\n new FontLoader().load('/font.typeface.json', (font) => {\r\n this.font = font\r\n })\r\n\r\n\r\n }\r\n\r\n GetTexture(textureKey: string) {\r\n\r\n if (this.textures.has(textureKey)) {\r\n return this.textures.get(textureKey)\r\n } else {\r\n console.log(\"Cached icon mismatch: \", textureKey)\r\n const rootPath = \"/assets/icons/\"\r\n this.textures.set(textureKey, new three.TextureLoader().load(rootPath + textureKey + \".png\"))\r\n return this.textures.get(textureKey)\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\nexport {StaticIncludes}\r\n\r\n","export default class MeshElement {\r\n\r\n onSelected: Function\r\n onDeselected: Function\r\n onClicked: Function\r\n\r\n setSelected() {\r\n if (this.onSelected) {\r\n this.onSelected()\r\n }\r\n\r\n }\r\n\r\n setDeselected() {\r\n if (this.onDeselected) {\r\n this.onDeselected()\r\n }\r\n }\r\n\r\n clicked() {\r\n if (this.onClicked) {\r\n this.onClicked()\r\n }\r\n }\r\n}","import MeshElement from \"./MeshElement\";\r\nimport * as three from \"three\";\r\n\r\nimport {TWEEN} from \"three/examples/jsm/libs/tween.module.min\"\r\n\r\n\r\nexport default class IconClickPlane extends MeshElement {\r\n\r\n\r\n material: three.MeshBasicMaterial\r\n mesh: three.Mesh\r\n meshB: three.Mesh\r\n root: three.Group\r\n colorModifier = new three.Color(\"white\")\r\n\r\n\r\n constructor(texture: three.Texture, options = {\r\n transparencySafe: false,\r\n color: new three.Color(\"white\")\r\n }) {\r\n\r\n super()\r\n\r\n if (options.color) {\r\n this.colorModifier = options.color\r\n }\r\n\r\n this.material = new three.MeshBasicMaterial({\r\n map: texture,\r\n transparent: !options.transparencySafe,\r\n depthWrite: false,\r\n depthTest: false,\r\n })\r\n this.material.color.copy(this.colorModifier)\r\n\r\n let geometry = null\r\n\r\n if (options.transparencySafe) {\r\n geometry = new three.CircleGeometry(1, 64)\r\n } else {\r\n geometry = new three.PlaneGeometry(1, 1)\r\n }\r\n this.mesh = new three.Mesh(geometry, this.material)\r\n this.mesh.userData[\"handler\"] = this\r\n this.mesh.renderOrder = 999\r\n\r\n this.meshB = new three.Mesh(geometry, this.material)\r\n this.meshB.userData[\"handler\"] = this\r\n this.meshB.renderOrder = 999\r\n this.meshB.rotateY(Math.PI)\r\n\r\n this.root = new three.Group()\r\n this.root.add(this.mesh)\r\n this.root.add(this.meshB)\r\n\r\n }\r\n\r\n setColorObject(obj: three.Color) {\r\n this.colorModifier = obj\r\n }\r\n\r\n\r\n isSelected(intersection: three.Intersection) {\r\n return true\r\n }\r\n\r\n setSelected() {\r\n this.material.color.set('#9e9e9e');\r\n super.setSelected()\r\n\r\n }\r\n\r\n setDeselected() {\r\n this.material.color.copy(this.colorModifier)\r\n super.setDeselected()\r\n\r\n }\r\n\r\n position_set(x: number, y: number, z: number) {\r\n this.root.position.set(x, y, z)\r\n }\r\n\r\n scale_set(_x: number, _y: number, _z: number) {\r\n this.root.scale.set(_x, _y, _z)\r\n\r\n this.mesh.material.opacity = 0\r\n this.meshB.material.opacity = 0\r\n\r\n new TWEEN.Tween({x: 0}).to({x: 1}, 750).onUpdate((newValue) => {\r\n this.mesh.material.opacity = newValue.x\r\n this.meshB.material.opacity = newValue.x\r\n }).start()\r\n\r\n }\r\n\r\n lookAt(x: number, y: number, z: number) {\r\n this.root.lookAt(x, y, z)\r\n }\r\n\r\n setMatrix(matrix: three.Matrix4) {\r\n this.root.rotation.setFromRotationMatrix(matrix)\r\n this.root.updateMatrixWorld(true)\r\n\r\n }\r\n\r\n getRoot() {\r\n return this.root\r\n }\r\n\r\n\r\n}","import * as three from \"three\"\r\n\r\nexport function ellaMatrixToThreeJs(f: any, t: any, r: any): Matrix4 {\r\n const rotationMatrix = new three.Matrix4()\r\n\r\n rotationMatrix.set(\r\n f.x, t.x, r.x, 0,\r\n f.y, t.y, r.y, 0,\r\n f.z, t.z, r.z, 0,\r\n 0, 0, 0, 1\r\n )\r\n return rotationMatrix\r\n\r\n\r\n}","import create from \"zustand\"\r\n\r\ninterface GlobalPopupZus {\r\n elements: any | HTMLElement\r\n setElement: (element: HTMLElement | any) => void\r\n clear: () => void\r\n popElement: () => void\r\n pushElement: (lement: HTMLElement | any) => void\r\n\r\n}\r\n\r\nexport const useGlobalPopup = create((set) => ({\r\n elements: [],\r\n\r\n setElement: (element: any) => set((newState) => {\r\n return {elements: [element]}\r\n }),\r\n\r\n pushElement: (element: any) => set((oldState) => ({\r\n elements: [...oldState.elements, element]\r\n })),\r\n\r\n clear: () => set((newState) => ({elements: []})),\r\n\r\n popElement: () => set((oldState) => {\r\n oldState.elements.pop()\r\n return {elements: oldState.elements}\r\n })\r\n\r\n}))\r\n\r\n","import axios, {AxiosPromise, AxiosResponse} from \"axios\";\r\nimport GuidedTourRecorder from \"../GuidedTourRecorder\";\r\n\r\n\r\nexport class SaveQuizParams {\r\n project_uid = \"\"\r\n project_name = \"\"\r\n\r\n spot_uid = \"\"\r\n spot_name = \"\"\r\n\r\n board_uid = \"\"\r\n\r\n board_name = \"\"\r\n\r\n success = 0\r\n\r\n project_type = 0\r\n\r\n run_uid = \"\"\r\n\r\n duration = 0\r\n\r\n}\r\n\r\nexport class SaveBoardVisitParams {\r\n project_uid = \"\"\r\n project_name = \"\"\r\n\r\n spot_uid = \"\"\r\n spot_name = \"\"\r\n\r\n board_uid = \"\"\r\n board_name = \"\"\r\n\r\n success = 0\r\n\r\n run_uid = \"\"\r\n\r\n}\r\n\r\nexport interface QuizRecordResponse {\r\n RowKey: string\r\n PartitionKey: string\r\n ProjectName: string\r\n BoardName: string\r\n ProjectUid: string\r\n RunUid: string\r\n TimeStamp: Date\r\n BoardUid: string\r\n SpotUid: string\r\n RecordUid: string\r\n Success: number\r\n UserUid: string\r\n\r\n}\r\n\r\nexport interface GetBoardVisitsResponse {\r\n RowKey: string,\r\n BoardName: string,\r\n BoardUid: string,\r\n SpotName: string,\r\n SpotUid: string,\r\n Visits: number,\r\n}\r\n\r\nexport interface UsersTrainingCountResponse {\r\n TrainingsCount: number\r\n UsersCount: number\r\n}\r\n\r\n\r\nfunction orderTrainingResults(data: Array) {\r\n\r\n data.forEach((tmpRecord) => {\r\n tmpRecord.TimeStamp = new Date(`${tmpRecord.TimeStamp} UTC`)\r\n\r\n })\r\n return data.sort((a, b) => {\r\n return b.TimeStamp - a.TimeStamp\r\n })\r\n\r\n}\r\n\r\nexport default class TourStatisticsApi {\r\n\r\n\r\n static async getStatsOfProject(projectUid: string = \"all\", trainee_uid: string = \"all\"): Promise {\r\n const queryString = `/api/statistics/trainingsof?project_uid=${projectUid}&trainee_uid=${trainee_uid}`\r\n return (await axios.get(queryString)).data.result\r\n }\r\n\r\n static getStatRecord(recordUid: string) {\r\n return axios.get(`/api/statistics/record?record_uid=${recordUid}`)\r\n }\r\n\r\n static async saveGuidedTour(recorder: GuidedTourRecorder) {\r\n const tourDataStr = JSON.stringify(recorder.to_json_object())\r\n const formData = new FormData()\r\n formData.set(\"result\", tourDataStr)\r\n const response = await axios.post(\"/api/statistics/save-training-result\", formData)\r\n }\r\n\r\n static async saveSpotVisit(project_uid: string, spot_uid: string): Promise {\r\n axios.put(`/api/visitors/spot-visited?spot_uid=${spot_uid}&project_uid=${project_uid}`)\r\n }\r\n\r\n static async getProjectSpotsVisits(project_uid: string): Promise> {\r\n const response = await axios.get(`/api/visitors/get-project-spots-visits?project_uid=${project_uid}`)\r\n\r\n return new Map(Object.entries(response.data))\r\n }\r\n\r\n static async getProjectUserSpotsVisits(project_uid: string, user_uid: string): Promise> {\r\n const response = await axios.get(`/api/visitors/get-project-user-spots-visits?project_uid=${project_uid}&user_uid=${user_uid}`)\r\n\r\n return new Map(Object.entries(response.data))\r\n\r\n }\r\n\r\n static async saveQuiz(params: SaveQuizParams, quiz_object: any): Promise {\r\n const formData = new FormData()\r\n\r\n formData.append(\"result\", JSON.stringify(quiz_object))\r\n\r\n axios.post(`/api/statistics/save-quiz-result`, formData, {\r\n params: params\r\n })\r\n\r\n }\r\n\r\n static async GetQuizResultsOfProjectAndUser(projectUid: string, userUid: string): Promise> {\r\n const response = await axios.get(\"/api/statistics/get-quiz-results\", {\r\n params: {\r\n project_uid: projectUid,\r\n user_uid: userUid,\r\n }\r\n })\r\n return orderTrainingResults(response.data.result)\r\n }\r\n\r\n\r\n static async getQuizRecord(recordUid: string): Promise {\r\n const response = await axios.get(\"/api/statistics/get-quiz-record\", {\r\n params: {record_uid: recordUid}\r\n })\r\n\r\n return response.data\r\n }\r\n\r\n\r\n static async saveBoardVisit(params: SaveBoardVisitParams): Promise {\r\n axios.put(`/api/statistics/save-board-visit`, null, {\r\n params: params\r\n })\r\n }\r\n\r\n static async getBoardVisit(project_uid: string): Promise> {\r\n const response = await axios.get(\"/api/visitors/get-boards-visits\", {\r\n params: {project_uid: project_uid}\r\n })\r\n return response.data\r\n }\r\n\r\n static async getAllSameQuizesWithIdentifiers(projectUid: string, spotUid: string, boardUid: string): Promise> {\r\n\r\n const response = await axios.get(\"/api/statistics/get-quiz-records-of\", {\r\n params: {\r\n project_uid: projectUid,\r\n spot_uid: spotUid,\r\n board_uid: boardUid,\r\n }\r\n })\r\n\r\n return response.data\r\n }\r\n\r\n static async getTrainingCountOf(userIdentifier: string): Promise {\r\n const response = await axios.get(\"/api/statistics/get-trainings-count-of\")\r\n return response.data\r\n }\r\n\r\n static async getUsersTrainingsCount(): Promise {\r\n const response = await axios.get(\"/api/statistics/get-trainings-count\")\r\n\r\n const result: UsersTrainingCountResponse = {\r\n TrainingsCount: 0,\r\n UsersCount: 0\r\n }\r\n const arrayData: Array = response.data\r\n\r\n let reduced = 0\r\n\r\n arrayData.forEach((value) => {\r\n result.UsersCount += 1\r\n reduced += value.Count\r\n })\r\n\r\n result.TrainingsCount = reduced\r\n return result\r\n }\r\n\r\n static async getAverageSuccessRate(): Promise {\r\n const data = (await axios.get(\"/api/statistics/get-average-success-rate\")).data.status\r\n return data\r\n }\r\n\r\n static async getTotalTrainingDuration(): Promise {\r\n return (await axios.get(\"/api/statistics/get-total-training-duration\")).data.status\r\n }\r\n\r\n static async getAverageTrainingDuration(): Promise {\r\n return (await axios.get(\"/api/statistics/get-average-training-duration\")).data.status\r\n }\r\n\r\n static async getTakenQuizCountAndSuccessRate(projectType: number): Promise<{ count: number, success_rate: number }> {\r\n return (await axios.get(\"/api/statistics/get-taken-quizzes-count-and-sucrate\", {\r\n params: {\r\n project_type: projectType\r\n }\r\n })).data\r\n }\r\n\r\n static async GetAllQuestionsSuccessRate(projectType: number): Promise {\r\n const data = await TourStatisticsApi.GetAllQuizResultsOfProjectType(projectType)\r\n\r\n let result = 0\r\n return 0\r\n }\r\n\r\n static async GetAllQuizResultsOfProjectType(projectType: number): Promise> {\r\n const response = await axios.get(\"/api/statistics/get-all-quiz-results-of-project-type\", {\r\n params: {\r\n project_type: projectType\r\n }\r\n })\r\n\r\n return orderTrainingResults(response.data.result)\r\n }\r\n\r\n static async GetAllQuizResultsOfProject(projectUid: string): Promise> {\r\n const response = await axios.get(\"/api/statistics/get-all-quiz-results\", {\r\n params: {\r\n project_uid: projectUid\r\n }\r\n })\r\n\r\n return orderTrainingResults(response.data.result)\r\n }\r\n\r\n static async GetAllQuizDataFilesOfProjectType(projectType: number): Promise> {\r\n const response = await axios.get(\"/api/statistics/get-all-quiz-data-of-project-type\", {\r\n params: {\r\n project_type: projectType\r\n }\r\n })\r\n return response.data\r\n }\r\n\r\n}\r\n\r\n","import React from \"react\";\r\n\r\nimport * as three from \"three\"\r\n\r\nimport * as Bs from \"react-bootstrap\"\r\n\r\nimport {StaticIncludes} from \"../../static_includes\";\r\n\r\nimport IconClickPlane from \"../../ela/world/meshgui/IconClickPlane\";\r\nimport {GuidedTourManager} from \"../../zustands/activeTestTourZus\";\r\nimport {ellaMatrixToThreeJs} from \"../math/math\";\r\nimport {useGlobalPopup} from \"../../zustands/globalPopupZus\";\r\nimport LicenceManager from \"../../api/LicenceManager\";\r\nimport TourStatisticsApi, {SaveBoardVisitParams} from \"../../api/TourStatisticsApi\";\r\n\r\n\r\nexport class InfinityBoardParent {\r\n\r\n\r\n static font_material = new three.MeshBasicMaterial({\r\n color: 0xffffff,\r\n side: three.DoubleSide\r\n });\r\n\r\n worldAddPrority = 1\r\n\r\n clickableIcon: IconClickPlane\r\n\r\n type = \"\"\r\n\r\n tags = \"\"\r\n\r\n iconSize = 1\r\n board_header_font_size = 1\r\n position = new three.Vector3(1, 0, 1)\r\n rotation = new three.Vector3(0, 0, 0)\r\n\r\n scale = new three.Vector3(1, 1, 1)\r\n iconColorModifier = new three.Color(1, 1, 1)\r\n\r\n uid: string = \"\"\r\n icon: string = \"Core.Deprecated\"\r\n name: string = \"\"\r\n contentUid: string = \"\"\r\n\r\n autoUnpack: boolean = false\r\n seenOnce: boolean = false\r\n loadedOnce: boolean = false\r\n\r\n showAsPopup: boolean = true\r\n boardNameVisible: boolean = false\r\n boardNameVisibleOnHover: boolean = true\r\n\r\n use_automatic_rotation = true\r\n\r\n parentSpot: {} = null\r\n\r\n isCompleted: boolean = false\r\n\r\n textMesh = null\r\n\r\n webTransparencySafe = false\r\n\r\n searchBuffer = \"\"\r\n\r\n closeEnabled = true\r\n\r\n f: three.Vector3 = null\r\n t: three.Vector3 = null\r\n r: three.Vector3 = null\r\n\r\n board_position_f: three.Vector3 = null\r\n board_position_t: three.Vector3 = null\r\n board_position_r: three.Vector3 = null\r\n\r\n _isEnabled = true\r\n\r\n\r\n constructor(spot) {\r\n this.parentSpot = spot\r\n\r\n }\r\n\r\n\r\n iconRotationEnabled() {\r\n return false\r\n }\r\n\r\n isContentValid() {\r\n return true\r\n }\r\n\r\n getFinalPosition() {\r\n if (this.clickableIcon) {\r\n return this.clickableIcon.getRoot().position\r\n } else {\r\n return new three.Vector3(1, 0, 0)\r\n }\r\n }\r\n\r\n loadFromJsonObject(object: any) {\r\n this.uid = object[\"uid\"]\r\n this.position.set(object[\"pos_x\"], object[\"pos_y\"], object[\"pos_z\"])\r\n this.icon = object[\"icon\"]\r\n this.contentUid = object[\"content_uid\"]\r\n this.autoUnpack = object[\"auto_unpack\"] && !object[\"show_as_popup\"]\r\n this.showAsPopup = object[\"show_as_popup\"]\r\n\r\n\r\n this.boardNameVisible = object[\"board_name_visible\"]\r\n this.boardNameVisibleOnHover = object[\"board_name_visible_on_hover\"]\r\n //Toto je /20 na desktope\r\n this.iconSize = object[\"icon_size\"] * 0.005\r\n this.board_header_font_size = object.board_header_font_size ?? 1\r\n this.name = object[\"name\"]\r\n this.tags = object.search_tags ?? \"\"\r\n this.use_automatic_rotation = object[\"use_automatic_rotation\"]\r\n this.scale.set(object[\"scale_x\"], object[\"scale_y\"], object[\"scale_z\"])\r\n this.closeEnabled = object[\"close_enabled\"]\r\n\r\n if (object.icon_color) {\r\n const color = object.icon_color\r\n this.iconColorModifier = new three.Color(color.x, color.y, color.z)\r\n }\r\n\r\n this.searchBuffer += this.name\r\n\r\n const rotation = object[\"manual_position\"]\r\n this.f = rotation[\"f\"]\r\n this.t = rotation[\"t\"]\r\n this.r = rotation[\"r\"]\r\n\r\n }\r\n\r\n getSearchableText() {\r\n return this.name\r\n }\r\n\r\n\r\n postContruct() {\r\n\r\n }\r\n\r\n isSelected(intersection: three.Intersection) {\r\n return true\r\n }\r\n\r\n clicked() {\r\n GuidedTourManager.taskBoardClicked(this, 1)\r\n }\r\n\r\n\r\n fillBoardVisited(success: number) {\r\n\r\n if (LicenceManager.f360.boards_monitoring) {\r\n if (this.isCompleted === false) {\r\n\r\n const parentProject = this.parentSpot.parentProject\r\n\r\n const params = new SaveBoardVisitParams()\r\n params.board_name = this.name\r\n params.board_uid = this.uid\r\n params.spot_name = this.parentSpot.name\r\n params.spot_uid = this.parentSpot.uid\r\n params.project_name = parentProject.name\r\n params.project_uid = parentProject.uid\r\n\r\n params.success = success\r\n\r\n TourStatisticsApi.saveBoardVisit(params)\r\n }\r\n }\r\n\r\n this.isCompleted = true\r\n\r\n }\r\n\r\n\r\n CleanUp() {\r\n\r\n }\r\n\r\n theatreModeEnded() {\r\n\r\n }\r\n\r\n leaveTheatreModeRequested() {\r\n\r\n }\r\n\r\n setVisibilityStatus(status: boolean) {\r\n if (this.clickableIcon) {\r\n this.clickableIcon.mesh.visible = status\r\n this.clickableIcon.meshB.visible = status\r\n }\r\n\r\n if (this.textMesh) {\r\n if (status === true) {\r\n\r\n if (!this.boardNameVisibleOnHover) {\r\n this.textMesh.visible = status\r\n }\r\n\r\n if (this.boardNameVisible) {\r\n this.textMesh.visible = status\r\n }\r\n\r\n } else {\r\n this.textMesh.visible = status\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n isVisible(): boolean {\r\n if (this.clickableIcon) {\r\n return this.clickableIcon.mesh.visible\r\n }\r\n return false\r\n }\r\n\r\n leaveVr = () => {\r\n const renderer = this.getActivePlayer().worldWrapper.getWorld().renderer\r\n\r\n if (renderer.xr.isPresenting) {\r\n renderer.xr.getSession().end()\r\n }\r\n }\r\n\r\n copyUrlClicked = () => {\r\n\r\n const board = this\r\n\r\n const project = this.getParentProject()\r\n\r\n const spot = this.getActivePlayer().activeSpot\r\n\r\n const data = {\r\n project: project.projectUid,\r\n spot: spot.uid,\r\n board: board.uid\r\n }\r\n\r\n const location = window.location.origin\r\n\r\n const path = location + `/?spot=${data.spot}&board=${data.board}`\r\n\r\n navigator.permissions.query({name: \"clipboard-write\"}).then(result => {\r\n if (result.state === \"granted\" || result.state === \"prompt\") {\r\n navigator.clipboard.writeText(path)\r\n }\r\n })\r\n }\r\n\r\n getRightClickOptions() {\r\n // Open in new window\r\n return <>\r\n Copy board url\r\n \r\n }\r\n\r\n rightClicked(event: MouseEvent) {\r\n\r\n }\r\n\r\n\r\n worldRotated(world) {\r\n\r\n // console.log(\"Rotated\")\r\n //\r\n // if (this.iconRotationEnabled()) {\r\n // const rotationMatrix = ellaMatrixToThreeJs(this.f, this.t, this.r)\r\n // this.clickableIcon.setMatrix(rotationMatrix)\r\n // }\r\n\r\n }\r\n\r\n fillToWorld(world) {\r\n\r\n if (this._isEnabled === false) {\r\n return\r\n }\r\n\r\n const group = world.secondaryNotRotatedGroup\r\n const texture = new three.TextureLoader().load(`/infinity/${this.parentSpot.parentProject.uid}/icons/${this.icon}.png`)\r\n\r\n const tmpColor = new three.Color(1, 1, 1)\r\n\r\n if (this.isContentValid()) {\r\n tmpColor.copy(this.iconColorModifier)\r\n } else {\r\n console.log(\"Setting color red\")\r\n this.iconColorModifier = new three.Color(\"red\")\r\n }\r\n\r\n let clickIcon: IconClickPlane = null\r\n if (this.webTransparencySafe) {\r\n clickIcon = new IconClickPlane(texture, {\r\n transparencySafe: true,\r\n color: this.iconColorModifier\r\n })\r\n } else {\r\n clickIcon = new IconClickPlane(texture, {color: this.iconColorModifier})\r\n }\r\n\r\n this.clickableIcon = clickIcon\r\n\r\n this.createText()\r\n\r\n\r\n const multiplier = 300\r\n const position = new three.Vector3()\r\n position.copy(this.position)\r\n position.multiply(new three.Vector3(multiplier, multiplier, multiplier))\r\n position.applyAxisAngle(new three.Vector3(0, 1, 0), this.parentSpot.spotRotation.y)\r\n\r\n\r\n const newIconSize = this.iconSize * (multiplier + 100)\r\n\r\n clickIcon.scale_set(newIconSize, newIconSize, newIconSize)\r\n clickIcon.position_set(position.x, position.y, position.z)\r\n\r\n if (this.iconRotationEnabled()) {\r\n const rotationMatrix = ellaMatrixToThreeJs(this.f, this.t, this.r)\r\n this.clickableIcon.setMatrix(rotationMatrix)\r\n } else {\r\n clickIcon.lookAt(0, 0, 0)\r\n }\r\n\r\n\r\n clickIcon.onClicked = () => {\r\n this.receiveEvent()\r\n }\r\n\r\n clickIcon.onSelected = () => {\r\n if (this.boardNameVisible == false) {\r\n if (this.boardNameVisibleOnHover) {\r\n if (this.textMesh) {\r\n this.textMesh.visible = true\r\n }\r\n }\r\n }\r\n }\r\n clickIcon.onDeselected = () => {\r\n if (this.boardNameVisible == false) {\r\n if (this.boardNameVisibleOnHover) {\r\n if (this.textMesh) {\r\n this.textMesh.visible = false\r\n }\r\n }\r\n }\r\n }\r\n\r\n group.add(this.clickableIcon.getRoot())\r\n\r\n\r\n }\r\n\r\n receiveEvent() {\r\n this.clicked()\r\n }\r\n\r\n createText() {\r\n\r\n if (this.textMesh) {\r\n //Do nothing\r\n } else {\r\n\r\n if (this.boardNameVisible || this.boardNameVisibleOnHover) {\r\n const font = StaticIncludes._instnace.font\r\n\r\n const fontSize = this.board_header_font_size * 0.25\r\n\r\n const shapes = font.generateShapes(this.name, fontSize);\r\n\r\n const geometry = new three.ShapeGeometry(shapes);\r\n geometry.computeBoundingBox();\r\n const iconX = -(geometry.boundingBox.max.x / 2)\r\n const iconY = +geometry.boundingBox.max.y * 2\r\n\r\n const textMesh = new three.Mesh(geometry, InfinityBoardParent.font_material);\r\n textMesh.position.set(iconX, iconY, 0)\r\n textMesh.renderOrder = 999\r\n textMesh.name = this.name\r\n\r\n this.clickableIcon.getRoot().add(textMesh)\r\n\r\n if (this.boardNameVisible == false) {\r\n textMesh.visible = false\r\n }\r\n\r\n this.textMesh = textMesh\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n refreshVisualization() {\r\n if (this.clickableIcon) {\r\n this.clickableIcon.setColorObject(this.iconColorModifier)\r\n }\r\n }\r\n\r\n getPercentage() {\r\n //Toto je takto, lebo nie vsetky este podporuju auto unpack, cize staci ze sa na ne klikne\r\n if (this.isCompleted) {\r\n return 1\r\n } else {\r\n if (this.autoUnpack) {\r\n if (this.loadedOnce) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n } else {\r\n if (this.seenOnce) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n step() {\r\n\r\n }\r\n\r\n getWebPreviewImage() {\r\n\r\n }\r\n\r\n getIsCompleted() {\r\n return this.isCompleted\r\n }\r\n\r\n setCompletedColor() {\r\n this.iconColorModifier = new three.Color(0.5, 0.5, 0.5)\r\n this.refreshVisualization()\r\n }\r\n\r\n getParentProject() {\r\n return this.parentSpot.parentProject\r\n }\r\n\r\n getActivePlayer() {\r\n return this.getParentProject().activePlayer\r\n }\r\n\r\n playInModalHud(object: HTMLElement) {\r\n\r\n\r\n useGlobalPopup.getState().pushElement(\r\n object\r\n )\r\n\r\n // this.getActivePlayer().worldWrapper.playInModalHud(object)\r\n }\r\n\r\n clickedExternaly() {\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","import * as three from \"three\"\r\n\r\n\r\nexport class SceneFooter extends three.Object3D {\r\n\r\n\r\n constructor(imagePath: string) {\r\n super()\r\n\r\n const material = new three.MeshBasicMaterial({color: 0xFFFFFF, transparent: true});\r\n const geometry = new three.PlaneGeometry(1, 1,);\r\n //const geometry = new three.PlaneGeometry(1, 1, 1, 1);\r\n\r\n const plane = new three.Mesh(geometry, material);\r\n\r\n let loader: three.TextureLoader = new three.TextureLoader()\r\n\r\n loader.load(imagePath, (texture: three.Texture) => {\r\n material.map = texture\r\n material.needsUpdate = true\r\n });\r\n\r\n plane.position.set(0, -200, 0)\r\n plane.scale.set(50, 50, 50)\r\n plane.lookAt(new three.Vector3(0, 0, 0))\r\n\r\n\r\n this.add(plane)\r\n }\r\n\r\n\r\n}","class MyVRButton {\r\n\r\n static createButton(renderer, options) {\r\n\r\n if (options) {\r\n\r\n console.error('THREE.VRButton: The \"options\" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.');\r\n\r\n }\r\n\r\n const button = document.createElement('button');\r\n\r\n function showEnterVR( /*device*/) {\r\n\r\n let currentSession = null;\r\n\r\n async function onSessionStarted(session) {\r\n\r\n session.addEventListener('end', onSessionEnded);\r\n\r\n await renderer.xr.setSession(session);\r\n button.textContent = 'EXIT VR';\r\n\r\n currentSession = session;\r\n\r\n }\r\n\r\n function onSessionEnded( /*event*/) {\r\n\r\n currentSession.removeEventListener('end', onSessionEnded);\r\n\r\n button.textContent = 'ENTER VR';\r\n\r\n currentSession = null;\r\n\r\n }\r\n\r\n //\r\n\r\n button.style.display = '';\r\n\r\n button.style.cursor = 'pointer';\r\n button.style.left = 'calc(50% - 50px)';\r\n button.style.width = '100px';\r\n\r\n button.textContent = 'ENTER VR';\r\n\r\n button.onmouseenter = function () {\r\n\r\n button.style.opacity = '1.0';\r\n\r\n };\r\n\r\n button.onmouseleave = function () {\r\n\r\n button.style.opacity = '0.5';\r\n\r\n };\r\n\r\n button.onclick = function () {\r\n\r\n if (currentSession === null) {\r\n\r\n // WebXR's requestReferenceSpace only works if the corresponding feature\r\n // was requested at session creation time. For simplicity, just ask for\r\n // the interesting ones as optional features, but be aware that the\r\n // requestReferenceSpace call will fail if it turns out to be unavailable.\r\n // ('local' is always available for immersive sessions and doesn't need to\r\n // be requested separately.)\r\n\r\n const sessionInit = {optionalFeatures: ['local-floor', 'bounded-floor', 'hand-tracking', 'layers']};\r\n navigator.xr.requestSession('immersive-vr', sessionInit).then(onSessionStarted);\r\n\r\n } else {\r\n\r\n currentSession.end();\r\n\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n function disableButton() {\r\n\r\n button.style.display = '';\r\n\r\n button.style.cursor = 'auto';\r\n button.style.left = 'calc(50% - 75px)';\r\n button.style.width = '150px';\r\n\r\n button.onmouseenter = null;\r\n button.onmouseleave = null;\r\n\r\n button.onclick = null;\r\n\r\n }\r\n\r\n function showWebXRNotFound() {\r\n\r\n disableButton();\r\n\r\n button.textContent = 'VR NOT SUPPORTED';\r\n\r\n }\r\n\r\n function showVRNotAllowed(exception) {\r\n\r\n disableButton();\r\n\r\n console.warn('Exception when trying to call xr.isSessionSupported', exception);\r\n\r\n button.textContent = 'VR NOT ALLOWED';\r\n\r\n }\r\n\r\n function stylizeElement(element) {\r\n\r\n element.style.position = 'absolute';\r\n element.style.bottom = '20px';\r\n element.style.padding = '12px 6px';\r\n element.style.border = '1px solid #fff';\r\n element.style.borderRadius = '4px';\r\n element.style.background = 'rgba(0,0,0,0.1)';\r\n element.style.color = '#fff';\r\n element.style.font = 'normal 13px sans-serif';\r\n element.style.textAlign = 'center';\r\n element.style.opacity = '0.5';\r\n element.style.outline = 'none';\r\n element.style.zIndex = '999';\r\n\r\n }\r\n\r\n if ('xr' in navigator) {\r\n\r\n button.id = 'VRButton';\r\n button.style.display = 'none';\r\n\r\n stylizeElement(button);\r\n\r\n navigator.xr.isSessionSupported('immersive-vr').then(function (supported) {\r\n\r\n supported ? showEnterVR() : showWebXRNotFound();\r\n\r\n if (supported && MyVRButton.xrSessionIsGranted) {\r\n\r\n button.click();\r\n\r\n }\r\n\r\n }).catch(showVRNotAllowed);\r\n\r\n return button;\r\n\r\n } else {\r\n\r\n const message = document.createElement('a');\r\n\r\n if (window.isSecureContext === false) {\r\n\r\n message.href = document.location.href.replace(/^http:/, 'https:');\r\n message.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message\r\n\r\n } else {\r\n\r\n message.href = 'https://immersiveweb.dev/';\r\n message.innerHTML = 'WEBXR NOT AVAILABLE';\r\n\r\n }\r\n\r\n message.style.left = 'calc(50% - 90px)';\r\n message.style.width = '180px';\r\n message.style.textDecoration = 'none';\r\n\r\n stylizeElement(message);\r\n\r\n return message;\r\n\r\n }\r\n\r\n }\r\n\r\n static xrSessionIsGranted = false;\r\n\r\n static registerSessionGrantedListener() {\r\n\r\n if ('xr' in navigator) {\r\n\r\n // WebXRViewer (based on Firefox) has a bug where addEventListener\r\n // throws a silent exception and aborts execution entirely.\r\n if (/WebXRViewer\\//i.test(navigator.userAgent)) return;\r\n\r\n navigator.xr.addEventListener('sessiongranted', () => {\r\n\r\n MyVRButton.xrSessionIsGranted = true;\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nMyVRButton.registerSessionGrantedListener();\r\n\r\nexport {MyVRButton};\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEtGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjY0IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iNjQiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSI2NCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iNjQiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjMwMC4wIgogICB0aWZmOllSZXNvbHV0aW9uPSIzMDAuMCIKICAgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIKICAgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMi0w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\"","export default class DeviceManager {\r\n static isIOS() {\r\n return false\r\n }\r\n\r\n // return [\r\n // 'iPad Simulator',\r\n // 'iPhone Simulator',\r\n // 'iPod Simulator',\r\n // 'iPad',\r\n // 'iPhone',\r\n // 'iPod'\r\n // ].includes(navigator.platform)\r\n // // iPad on iOS 13 detection\r\n // || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\r\n // }\r\n\r\n static isAndroid() {\r\n const ua = navigator.userAgent;\r\n if (/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n static isOculus() {\r\n return /OculusBrowser/i.test(window.navigator.userAgent);\r\n }\r\n\r\n static isLowPerformance() {\r\n const ua = navigator.userAgent;\r\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\r\n return true\r\n }\r\n if (/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Mobile Safari|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {\r\n return true\r\n }\r\n\r\n return false\r\n }\r\n\r\n}","import * as three from \"three\"\r\n\r\nimport {XRControllerModelFactory} from \"three/examples/jsm/webxr/XRControllerModelFactory\";\r\n\r\nimport {MyVRButton} from \"./MyVRButton\";\r\n\r\nimport vrPointer from \"../resources/vrPointer.png\"\r\nimport lineTexture from \"./guiclickertexture.png\"\r\nimport DeviceManager from \"../../deviceManager\";\r\n\r\nclass VrAvatarHand {\r\n\r\n isTriggerPressed = false\r\n\r\n constructor(index, renderer: three.WebGLRenderer, group: three.Group, intersectGroup) {\r\n const controllerModelFactory = new XRControllerModelFactory()\r\n\r\n const controllerGrip = renderer.xr.getControllerGrip(index)\r\n\r\n const model = controllerModelFactory.createControllerModel(controllerGrip)\r\n model.visible = false\r\n controllerGrip.add(model)\r\n\r\n controllerGrip.addEventListener(\"selectstart\", this.onTriggerPressed)\r\n controllerGrip.addEventListener(\"selectend\", this.onTriggerUnpressed)\r\n controllerGrip.addEventListener(\"squeezestart\", this.onGripPressed)\r\n controllerGrip.addEventListener(\"squeezeend\", this.onGripUnpressed)\r\n\r\n this.intersectGroup = intersectGroup\r\n\r\n this.controller = controllerGrip\r\n\r\n group.add(controllerGrip);\r\n\r\n this.rayLineGroup = new three.Group()\r\n\r\n const lineImage = new three.TextureLoader().load(lineTexture)\r\n lineImage.encoding = three.sRGBEncoding\r\n\r\n const geometry = new three.PlaneGeometry(0.01, 1)\r\n\r\n this.rayLineMaterial = new three.MeshStandardMaterial({\r\n transparent: true,\r\n map: lineImage,\r\n side: three.DoubleSide\r\n })\r\n\r\n const rayLine = new three.Mesh(geometry, this.rayLineMaterial)\r\n rayLine.name = \"RaycasterLine\" + index\r\n rayLine.position.set(0, 0.5, 0)\r\n rayLine.rotateY(Math.PI / 2)\r\n\r\n const lineSubGroup = new three.Group()\r\n lineSubGroup.add(rayLine)\r\n lineSubGroup.rotateX(Math.PI / 2)\r\n lineSubGroup.rotateY((Math.PI / 4))\r\n\r\n //const controller = renderer.xr.getController(index)\r\n\r\n const spriteTexture = new three.TextureLoader().load(vrPointer)\r\n\r\n const spriteMaterial = new three.SpriteMaterial({map: spriteTexture})\r\n this.controllerSprite = new three.Sprite(spriteMaterial)\r\n this.controllerSprite.position.set(0, 0, 10)\r\n this.controllerSprite.scale.set(0.15, 0.15, 1)\r\n\r\n this.rayLineGroup.add(lineSubGroup)\r\n this.rayLineGroup.add(this.controllerSprite)\r\n\r\n // const xRotationValue = Math.PI - Math.PI / 16\r\n //\r\n // if (index == 0) {\r\n // this.rayLineGroup.rotateX(xRotationValue)\r\n // } else {\r\n // this.rayLineGroup.rotateX(-xRotationValue)\r\n // }\r\n //\r\n // this.rayLineGroup.rotateZ(three.MathUtils.degToRad(-60))\r\n // this.rayLineGroup.rotateY(three.MathUtils.degToRad(-45))\r\n this.rayLineGroup.rotateX(Math.PI / 2)\r\n\r\n controllerGrip.add(this.rayLineGroup)\r\n\r\n // lineSubGroup.add(new three.AxesHelper(1))\r\n\r\n\r\n this.selectedObject = null\r\n\r\n this.rayCaster = new three.Raycaster()\r\n\r\n\r\n }\r\n\r\n step() {\r\n this.rayCast()\r\n }\r\n\r\n onTriggerPressed = () => {\r\n this.isTriggerPressed = true\r\n\r\n this.setRayColor(\"lightblue\")\r\n if (this.selectedObject) {\r\n this.selectedObject.clicked()\r\n }\r\n }\r\n\r\n onTriggerUnpressed = () => {\r\n this.isTriggerPressed = false\r\n this.setRayColor(\"white\")\r\n }\r\n\r\n onGripPressed = () => {\r\n\r\n }\r\n\r\n onGripUnpressed = () => {\r\n\r\n }\r\n\r\n rayCast = () => {\r\n const direction = new three.Vector3()\r\n this.rayLineGroup.getWorldDirection(direction)\r\n\r\n\r\n this.rayCaster.set(this.rayLineGroup.position, direction)\r\n\r\n const intersects = this.rayCaster.intersectObject(this.intersectGroup, true)\r\n\r\n if (intersects.length > 0) {\r\n const res = intersects.filter(function (res) {\r\n return res && res.object;\r\n })[0]\r\n\r\n if (res && res.object) {\r\n let component: any = res.object.userData[\"handler\"]\r\n\r\n if (component) {\r\n if (this.selectedObject === component) {\r\n return\r\n } else if (this.selectedObject === null) {\r\n this.onSelectStart()\r\n this.selectedObject = component\r\n this.selectedObject.setSelected()\r\n } else {\r\n this.selectedObject.setDeselected()\r\n this.selectedObject = component\r\n this.selectedObject.setSelected()\r\n }\r\n }\r\n } else {\r\n this.selectedObject = null\r\n this.onSelectEnd()\r\n }\r\n\r\n } else {\r\n if (this.selectedObject != null) {\r\n this.selectedObject.setDeselected()\r\n this.selectedObject = null\r\n }\r\n\r\n this.onSelectEnd()\r\n this.selectedObject = null\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n setRayColor = (colorString: string) => {\r\n const color = new three.Color(colorString)\r\n this.rayLineMaterial.color = color\r\n this.controllerSprite.material.color = color\r\n }\r\n\r\n onSelectStart = () => {\r\n if (this.isTriggerPressed === false) {\r\n this.setRayColor(\"lightgreen\")\r\n }\r\n }\r\n\r\n onSelectEnd = () => {\r\n if (this.isTriggerPressed === false) {\r\n this.setRayColor(\"white\")\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport default class VrAvatar {\r\n\r\n isLoaded = false\r\n teleportEnabled = true\r\n\r\n avatarGroup = new three.Group()\r\n\r\n leftHand: VrAvatarHand = null\r\n rightHand: VrAvatarHand = null\r\n\r\n\r\n //teleportacia link https://immersive-web.github.io/webxr-samples/teleportation.html\r\n //teleportacia link https://medium.com/@darktears/adding-support-for-vr-inputs-with-webxr-and-three-js-235b40beb6f0\r\n constructor(renderer: three.WebGLRenderer, group: three.Group, intersectGroup: three.Group) {\r\n\r\n if ('xr' in navigator) {\r\n\r\n const enabled = (DeviceManager.isLowPerformance() == false)\r\n\r\n if (enabled) {\r\n navigator.xr.isSessionSupported('immersive-vr').then((supported) => {\r\n\r\n if (supported) {\r\n renderer.xr.enabled = true;\r\n document.body.appendChild(MyVRButton.createButton(renderer));\r\n group.add(this.avatarGroup)\r\n\r\n this.leftHand = new VrAvatarHand(0, renderer, this.avatarGroup, intersectGroup)\r\n this.rightHand = new VrAvatarHand(1, renderer, this.avatarGroup, intersectGroup)\r\n\r\n this.isLoaded = true\r\n\r\n } else {\r\n console.log(\"Vr found, not running VR avatar\")\r\n }\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n step() {\r\n if (this.isLoaded) {\r\n //this.leftHand.step()\r\n this.rightHand.step()\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFW2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjY0IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iNjQiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSI2NCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iNjQiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjMwMC4wIgogICB0aWZmOllSZXNvbHV0aW9uPSIzMDAuMCIKICAgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIKICAgcGhvdG9zaG9wOklDQ1Byb2Zp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\"","import * as three from \"three\"\r\nimport * as THREE from \"three\"\r\n\r\nimport {Sky} from \"three/examples/jsm/objects/Sky\";\r\nimport {OrbitControls} from \"three/examples/jsm/controls/OrbitControls\";\r\nimport VrAvatar from \"./vr/VrAvatar\";\r\n\r\n\r\nimport {TWEEN} from \"three/examples/jsm/libs/tween.module.min\";\r\n\r\n\r\nexport default class DefaultSceneConfigurator {\r\n\r\n static STYLE_FULL_WINDOW_CANVAS = {\r\n zIndex: \"-100\",\r\n width: \" 100%\",\r\n height: \"100%\",\r\n position: \"absolute\",\r\n left: \"0px\",\r\n top: \"0px\",\r\n touchAction: \"none\",\r\n }\r\n\r\n constructor() {\r\n\r\n\r\n }\r\n\r\n\r\n attachVrAvatar(renderer, scene) {\r\n return new VrAvatar(renderer, scene, scene)\r\n }\r\n\r\n attachOrbitControls(renderer, camera) {\r\n const controls = new OrbitControls(camera, renderer.domElement);\r\n controls.target.set(0, 1.6, 0);\r\n controls.update();\r\n }\r\n\r\n attachOrbitMiddleControls(renderer, camera) {\r\n const controls = new OrbitControls(camera, renderer.domElement);\r\n controls.maxPolarAngle = Math.PI / 2;\r\n controls.minPolarAngle = Math.PI / 3;\r\n controls.enableDamping = true;\r\n controls.enablePan = false;\r\n controls.dampingFactor = 0.1;\r\n controls.autoRotate = false; // Toggle this if you'd like the chair to automatically rotate\r\n controls.autoRotateSpeed = 0.2; // 30\r\n }\r\n\r\n attachRendererToHtml(renderer, tag: string) {\r\n const container = document.getElementById(tag)\r\n container.appendChild(renderer.domElement);\r\n }\r\n\r\n createRenderer() {\r\n return new three.WebGLRenderer({alpha: false, \"antialias\": true})\r\n }\r\n\r\n createCamera() {\r\n return new three.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)\r\n }\r\n\r\n createScene() {\r\n return new three.Scene()\r\n }\r\n\r\n configureRendererPbr(renderer: three.WebGLRenderer) {\r\n renderer.setPixelRatio(window.devicePixelRatio);\r\n renderer.setSize(window.innerWidth, window.innerHeight);\r\n renderer.setClearColor(0xFFFFFF, 1)\r\n\r\n renderer.physicallyCorrectLights = true\r\n renderer.shadowMap.enabled = true\r\n renderer.shadowMap.type = three.PCFSoftShadowMap\r\n\r\n renderer.outputEncoding = THREE.sRGBEncoding;\r\n renderer.toneMapping = THREE.ReinhardToneMapping\r\n renderer.toneMappingExposure = 1\r\n\r\n }\r\n\r\n configurePanoramaRenderer(renderer: three.WebGLRenderer) {\r\n renderer.setSize(window.innerWidth, window.innerHeight)\r\n renderer.setClearColor(0x000000, 1)\r\n renderer.setPixelRatio(window.devicePixelRatio)\r\n renderer.shadowMap.enabled = true\r\n\r\n renderer.physicallyCorrectLights = true\r\n // renderer.outputEncoding = THREE.sRGBEncoding;\r\n\r\n }\r\n\r\n enableRendererAutoResize(renderer: three.WebGLRenderer, camera: three.PerspectiveCamera) {\r\n window.addEventListener(\"resize\", () => {\r\n const width = window.innerWidth\r\n const height = window.innerHeight\r\n camera.aspect = width / height\r\n camera.updateProjectionMatrix()\r\n renderer.setSize(width, height)\r\n })\r\n }\r\n\r\n enableAutoDraw(renderer: three.WebGLRenderer, scene: three.Scene, camera: three.PerspectiveCamera, beforeRenderUpdate) {\r\n renderer.setAnimationLoop(() => {\r\n TWEEN.update()\r\n if (beforeRenderUpdate) {\r\n beforeRenderUpdate()\r\n }\r\n renderer.render(scene, camera)\r\n })\r\n }\r\n\r\n\r\n configureSky(renderer: three.WebGLRenderer, scene: three.Group) {\r\n const sky = new Sky();\r\n sky.scale.setScalar(450000);\r\n scene.add(sky);\r\n\r\n const uniforms = sky.material.uniforms\r\n uniforms[\"turbidity\"].value = 10\r\n uniforms[\"rayleigh\"].value = 3\r\n uniforms[\"mieCoefficient\"].value = 0.005\r\n uniforms[\"mieDirectionalG\"].value = 0.7\r\n\r\n const phi = THREE.MathUtils.degToRad(-90 - 2);\r\n const theta = THREE.MathUtils.degToRad(180);\r\n\r\n const sun = new THREE.Vector3()\r\n sun.setFromSphericalCoords(1, phi, theta);\r\n\r\n uniforms[\"sunPosition\"].value.copy(sun)\r\n }\r\n\r\n\r\n initVignete = () => {\r\n // const bgColor1 = '#ffffff'\r\n // const bgColor2 = '#353535'\r\n //\r\n // this.vignette = createBackground({\r\n // aspect: this.camera.aspect,\r\n // grainScale: false ? 0 : 0.001,\r\n // colors: [bgColor1, bgColor2]\r\n // });\r\n // this.vignette.name = 'Vignette';\r\n }\r\n\r\n configureStudioLighting(scene: three.Group) {\r\n const ambientColor = 0xFFFFFF\r\n const ambientIntensity = 0.3\r\n const directIntensity = 0.8 * Math.PI\r\n const directColor = 0xFFFFFF\r\n\r\n const light1 = new three.AmbientLight(ambientColor, ambientIntensity);\r\n light1.name = 'ambient_light';\r\n scene.add(light1);\r\n\r\n const light2 = new three.DirectionalLight(directColor, directIntensity);\r\n light2.position.set(0.5, 0, 0.866); // ~60º\r\n light2.name = 'main_light'\r\n light2.castShadow = true\r\n light2.shadow.mapSize.width = 1024\r\n light2.shadow.mapSize.height = 1024\r\n\r\n scene.add(light2);\r\n }\r\n\r\n\r\n addPanoramaLightning(scene: three.Group) {\r\n const ambientIntensity = 1\r\n const directIntensity = 2\r\n\r\n const light1 = new three.AmbientLight(0xFFFFFF, ambientIntensity);\r\n light1.name = 'ambient_light';\r\n scene.add(light1);\r\n\r\n const light2 = new three.DirectionalLight(0xFFFFFF, directIntensity);\r\n light2.position.set(0.5, 0, 0.866); // ~60º\r\n light2.name = 'main_light'\r\n scene.add(light2);\r\n\r\n }\r\n\r\n // addPanoramaLightning(scene: three.Scene) {\r\n // const hemiLight = new three.HemisphereLight(0xffffff, 0xffffff, 1);\r\n // hemiLight.lookAt(0, 0, 0)\r\n // hemiLight.position.y = 50\r\n // hemiLight.position.x = 50\r\n // hemiLight.intensity = 5\r\n // scene.add(hemiLight)\r\n //\r\n // const ambientLight = new three.AmbientLight(0x404040);\r\n // ambientLight.intensity = 1\r\n // scene.add(scene)\r\n // }\r\n\r\n\r\n initEnviromentEqirectangularMap(scene: three.Scene, photoPath) {\r\n const texture = new THREE.TextureLoader().load(photoPath)\r\n texture.mapping = THREE.EquirectangularReflectionMapping\r\n texture.encoding = THREE.sRGBEncoding\r\n\r\n scene.background = texture\r\n scene.environment = texture\r\n }\r\n\r\n attachDefaultFloor(group: three.Group) {\r\n const floorGometry = new THREE.PlaneGeometry(4, 4);\r\n const floorMaterial = new THREE.MeshStandardMaterial({\r\n color: 0x222222,\r\n roughness: 1.0,\r\n metalness: 0.0\r\n });\r\n const floor = new THREE.Mesh(floorGometry, floorMaterial);\r\n floor.rotation.x = -Math.PI / 2;\r\n group.add(floor);\r\n\r\n const grid = new THREE.GridHelper(10, 20, 0x111111, 0x111111);\r\n grid.position.y = -0.05\r\n group.add(grid);\r\n\r\n return floor\r\n\r\n }\r\n\r\n}","import * as three from \"three\"\r\nimport {TWEEN} from \"three/examples/jsm/libs/tween.module.min\"\r\n\r\n\r\nimport {PanoramaAsset} from \"../assets/asset_Panorama\";\r\nimport DeviceManager from \"../deviceManager\";\r\nimport PanoramasManager from \"../../api/PanoramasManager\";\r\n\r\nimport {shuffle} from \"../../devtools/Arrays\";\r\n\r\n\r\nexport default class PhotoDom {\r\n\r\n theatreEndColor = 0.3\r\n moonsCount = 32\r\n frontPanoramaMaterials: Array = []\r\n\r\n\r\n constructor(renderer: three.Renderer, camera: three.PerspectiveCamera, parent: three.Group, options = {}) {\r\n\r\n if (options.moonsCount) {\r\n this.moonsCount = options.moonsCount\r\n }\r\n this.onLoadingProgress = options[\"onLoadingProgress\"]\r\n\r\n this.renderer = renderer\r\n this.camera = camera\r\n\r\n this.oldPanoramaTexture = new three.Texture()\r\n\r\n this.backPanoramaTexture = new three.TextureLoader().load(\"assets/textures/default_dark.png\")\r\n\r\n this.backPanoramaMaterial = new three.MeshBasicMaterial({\r\n map: this.backPanoramaTexture,\r\n transparent: true,\r\n side: three.DoubleSide,\r\n color: new three.Color(\"red\"),\r\n });\r\n\r\n this.oldPanoramaMaterial = new three.MeshBasicMaterial({\r\n map: this.oldPanoramaTexture,\r\n side: three.DoubleSide,\r\n });\r\n\r\n const oldSphereGeometry = new three.SphereGeometry(1020, 64, 64)\r\n oldSphereGeometry.scale(-1, 1, 1)\r\n\r\n this.oldSphereMesh = new three.Mesh(oldSphereGeometry, this.oldPanoramaMaterial)\r\n this.oldSphereMesh.rotateY(-Math.PI / 2)\r\n\r\n this.oldSphereWrapper = new three.Group()\r\n this.oldSphereWrapper.add(this.oldSphereMesh)\r\n\r\n const backSphereGeometry = new three.SphereGeometry(980, 64, 64)\r\n backSphereGeometry.scale(-1, 1, 1)\r\n\r\n this.backSphereMesh = new three.Mesh(backSphereGeometry, this.backPanoramaMaterial)\r\n this.backSphereWrapper = new three.Group()\r\n this.backSphereWrapper.add(this.backSphereMesh)\r\n\r\n\r\n this.frontPanoramasGroup = new three.Group()\r\n\r\n this.frontPanoramaGroupWrapper = new three.Group()\r\n this.frontPanoramaGroupWrapper.add(this.frontPanoramasGroup)\r\n\r\n\r\n for (let i = 0; i < this.moonsCount; i++) {\r\n const frontPanoramaMaterial = new three.MeshBasicMaterial({\r\n transparent: false,\r\n side: three.DoubleSide,\r\n //color: new three.Color(Math.random(), Math.random(), Math.random())\r\n });\r\n\r\n const frontSphereGeometry = new three.SphereGeometry(960, 64, 64, 0, (Math.PI * 2) / this.moonsCount)\r\n frontSphereGeometry.scale(-1, 1, 1)\r\n const frontSphereMesh = new three.Mesh(frontSphereGeometry, frontPanoramaMaterial)\r\n frontSphereMesh.rotateY(((-Math.PI * 2) / this.moonsCount) * i)\r\n\r\n this.frontPanoramasGroup.add(frontSphereMesh)\r\n this.frontPanoramaMaterials.push(frontPanoramaMaterial)\r\n\r\n }\r\n\r\n this.backSphereMesh.rotateY(-Math.PI / 2)\r\n this.frontPanoramasGroup.rotateY(-Math.PI / 2)\r\n\r\n\r\n this.oldSphereWrapper.name = \"Old sphere\"\r\n this.backSphereWrapper.name = \"Back sphere\"\r\n this.frontPanoramaGroupWrapper.name = \"Moons sphere\"\r\n\r\n const photoDomGroup = new three.Group()\r\n photoDomGroup.name = \"PhotoDomGroup\"\r\n\r\n photoDomGroup.add(this.oldSphereWrapper)\r\n photoDomGroup.add(this.backSphereWrapper)\r\n photoDomGroup.add(this.frontPanoramaGroupWrapper)\r\n\r\n parent.add(photoDomGroup)\r\n\r\n this.onAfterPanoramaLoad = null\r\n this.isloading = false\r\n this.isTweening = false\r\n\r\n this.scaleDirection = new three.Vector3(0, 0, 0)\r\n this.moonLoadedIndex = 0\r\n\r\n this.colorCorrection = new three.Color(1, 1, 1)\r\n\r\n }\r\n\r\n /**\r\n * options = {\r\n * newPanoramaRotation: number,\r\n * onPanoramaFullyLoaded: Function,\r\n * rotationVector: number[],\r\n * }\r\n */\r\n loadPanoramaAsset(panorama: PanoramaAsset, options = {}) {\r\n\r\n\r\n const newPanoramaRotation = options.newPanoramaRotation\r\n this.onAfterPanoramaLoad = options.onPanoramaFullyLoaded\r\n\r\n\r\n if (options) {\r\n this.colorCorrection = options.colorCorrection\r\n } else {\r\n this.colorCorrection = new three.Color(1, 1, 1)\r\n }\r\n\r\n // this.colorCorrection.r -= 0.5\r\n // this.colorCorrection.g -= 0.5\r\n // this.colorCorrection.b -= 0.5\r\n\r\n this.moonLoadedIndex = 0\r\n\r\n this.isloading = true\r\n\r\n this.oldSphereMesh.visible = true\r\n this.backSphereMesh.visible = false\r\n\r\n this.frontPanoramasGroup.visible = false\r\n\r\n this.frontPanoramasGroup.children.forEach((mesh: three.Mesh) => {\r\n mesh.visible = false\r\n })\r\n\r\n this.backPanoramaMaterial.opacity = 1\r\n this.backPanoramaMaterial.transparent = true\r\n\r\n this.splitsLoaded = false\r\n\r\n this.oldSphereMesh.scale.set(1, 1, 1)\r\n\r\n\r\n const rotatable = [this.backSphereMesh, this.frontPanoramasGroup]\r\n\r\n\r\n rotatable.forEach((value) => {\r\n value.rotation.set(0, 0, 0)\r\n value.rotateY(-Math.PI / 2)\r\n\r\n const matrixVector = options.rotationVector\r\n\r\n if (true) {\r\n const rotationMatrix = new three.Matrix4()\r\n rotationMatrix.set(\r\n ...matrixVector\r\n )\r\n\r\n value.rotation.setFromRotationMatrix(rotationMatrix)\r\n value.updateMatrixWorld(true)\r\n } else {\r\n //value.rotateX(newPanoramaRotation.x)\r\n value.rotateY(newPanoramaRotation.y)\r\n //value.rotateZ(newPanoramaRotation.z)\r\n }\r\n\r\n\r\n })\r\n\r\n this.backSphereWrapper.rotation.set(0, 0, 0)\r\n this.backSphereWrapper.rotateY(-Math.PI / 2)\r\n\r\n this.frontPanoramaGroupWrapper.rotation.set(0, 0, 0)\r\n this.frontPanoramaGroupWrapper.rotateY(-Math.PI / 2)\r\n\r\n\r\n const newColor = this.colorCorrection\r\n //const newColor = new three.Color(0.1, 0.1, 0.1)\r\n\r\n this.backPanoramaMaterial.color = newColor\r\n\r\n this.loadBackTextures(panorama)\r\n\r\n\r\n if (DeviceManager.isOculus()) {\r\n this.loadDefaultPanorama(panorama)\r\n } else {\r\n\r\n if (panorama.file_has_moons && ((PanoramasManager.ACTIVE_RESOLUTION !== PanoramasManager.REALLY_BAD) &&\r\n (PanoramasManager.ACTIVE_RESOLUTION !== PanoramasManager.LOW))) {\r\n this.loadMoons(panorama)\r\n } else {\r\n this.loadDefaultPanorama(panorama)\r\n }\r\n }\r\n\r\n\r\n this.isTweening = true\r\n new TWEEN.Tween({x: 0}).to({x: 1}, 1500).onUpdate(this.tweenOpacity).onComplete(this.tweenEnded).start()\r\n\r\n if (this.renderer.xr.isPresenting) {\r\n console.log(\"Unimplemented\")\r\n this.renderer.xr.getCamera()\r\n } else {\r\n this.camera.getWorldDirection(this.scaleDirection)\r\n }\r\n\r\n\r\n }\r\n\r\n tweenOpacity = (something) => {\r\n this.backPanoramaMaterial.opacity = something.x\r\n\r\n const finalScale = new three.Vector3(1, 1, 1)\r\n finalScale.copy(this.scaleDirection)\r\n\r\n //this.oldSphereMesh.scale.set((finalScale.x + something.x), finalScale.y, finalScale.z)\r\n //this.oldSphereMesh.scale.x = finalScale.x + something.x\r\n\r\n }\r\n\r\n tweenEnded = (something) => {\r\n this.isTweening = false\r\n\r\n this.frontPanoramasGroup.visible = true\r\n\r\n this.updateFrontFullyLoaded()\r\n\r\n this.backPanoramaMaterial.opacity = 1\r\n this.backPanoramaMaterial.transparent = false\r\n\r\n this.isloading = false\r\n\r\n if (this.onAfterPanoramaLoad) {\r\n setTimeout(this.onAfterPanoramaLoad, 1)\r\n }\r\n }\r\n\r\n loadBackTextures(panorama: PanoramaAsset) {\r\n let startIndex = 0\r\n let endIndex = panorama.file_lods\r\n\r\n if (panorama.getFirstLod()) {\r\n this.backPanoramaMaterial.map = panorama.getFirstLod()\r\n this.backPanoramaMaterial.map.needsUpdate = true\r\n startIndex = 1\r\n this.backSphereMesh.visible = true\r\n }\r\n\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const pathToLoad = panorama.getAbsolutePath(i)\r\n //\r\n // console.log(\"Loading:\")\r\n // console.log(pathToLoad)\r\n\r\n new three.TextureLoader().loadAsync(pathToLoad).then((texture: three.Texture) => {\r\n //texture.encoding = three.sRGBEncoding\r\n if (panorama.is_previewed) {\r\n this.backPanoramaMaterial.map = texture\r\n this.backPanoramaMaterial.map.needsUpdate = true\r\n if (i === 0) {\r\n panorama.setFirstLod(texture)\r\n }\r\n }\r\n\r\n this.backSphereMesh.visible = true\r\n\r\n if (i == endIndex - 1) {\r\n this.updateFrontFullyLoaded()\r\n }\r\n })\r\n }\r\n }\r\n\r\n //TODO toto switchovanie treba dat dokopy\r\n loadDefaultPanorama(panorama: PanoramaAsset) {\r\n this.backPanoramaMaterial.opacity = 0\r\n\r\n let path = \"\"\r\n\r\n if (DeviceManager.isOculus()) {\r\n path = panorama.GetDefaultPath()\r\n } else {\r\n if (PanoramasManager.ACTIVE_RESOLUTION === PanoramasManager.LOW) {\r\n path = panorama.get2048x1024()\r\n } else if (PanoramasManager.ACTIVE_RESOLUTION === PanoramasManager.REALLY_BAD) {\r\n path = panorama.getFirstLod()\r\n } else {\r\n path = panorama.GetDefaultPath()\r\n }\r\n }\r\n\r\n\r\n new three.TextureLoader().loadAsync(path, (progress) => {\r\n\r\n }).then((texture: three.Texture) => {\r\n //texture.encoding = three.sRGBEncoding\r\n if (panorama.is_previewed) {\r\n this.backPanoramaMaterial.map = texture\r\n this.backPanoramaMaterial.needsUpdate = true\r\n\r\n console.log(\"------------x----------------\")\r\n console.log(\"Loaded default sphere\")\r\n\r\n this.splitsLoaded = true\r\n this.updateFrontFullyLoaded()\r\n }\r\n })\r\n }\r\n\r\n loadMoons(panorama: PanoramaAsset) {\r\n this.backPanoramaMaterial.opacity = 0\r\n\r\n this.frontPanoramaMaterials.forEach((material) => {\r\n material.color = this.colorCorrection\r\n })\r\n\r\n\r\n if (panorama.file_has_moons) {\r\n const moonsCount = this.moonsCount\r\n\r\n\r\n let indexes = []\r\n\r\n for (let moonIndex = 0; moonIndex < moonsCount; moonIndex++) {\r\n indexes[moonIndex] = moonIndex\r\n }\r\n\r\n indexes = shuffle(indexes)\r\n\r\n\r\n for (let rndIndex = 0; rndIndex < moonsCount; rndIndex++) {\r\n\r\n const moonIndex = indexes[rndIndex]\r\n\r\n let pathToLoad = \"\"\r\n\r\n if (DeviceManager.isOculus()) {\r\n pathToLoad = panorama.getMoonAbsolutePath(moonIndex)\r\n } else {\r\n\r\n const active = PanoramasManager.ACTIVE_RESOLUTION\r\n\r\n if (active === PanoramasManager.MEDIUM) {\r\n pathToLoad = panorama.getMoonAbsolutePath(moonIndex)\r\n } else if (active === PanoramasManager.HIGH) {\r\n pathToLoad = panorama.getMoonUltraAbsolutePath(moonIndex)\r\n }\r\n\r\n //!DeviceManager.isLowPerformance()\r\n }\r\n\r\n new three.TextureLoader().loadAsync(pathToLoad).then((texture: three.Texture) => {\r\n if (panorama.is_previewed) {\r\n //console.log(texture.encoding)\r\n //texture.encoding = three.sRGBEncoding\r\n\r\n const material = this.frontPanoramaMaterials[moonIndex]\r\n material.map = texture\r\n material.needsUpdate = true\r\n\r\n this.frontPanoramasGroup.children[moonIndex].visible = true\r\n\r\n // console.log(\"------------\")\r\n // console.log(this.frontPanoramasGroup.visible)\r\n // console.log(this.frontPanoramasGroup.children[moonIndex].visible)\r\n\r\n this.moonLoadedIndex++\r\n\r\n if (this.onLoadingProgress) {\r\n const progress = (this.moonLoadedIndex / moonsCount) * 100\r\n\r\n this.onLoadingProgress(progress)\r\n\r\n }\r\n\r\n if (this.moonLoadedIndex == moonsCount) {\r\n\r\n this.splitsLoaded = true\r\n\r\n if (this.onLoadingProgress) {\r\n this.onLoadingProgress(0)\r\n }\r\n\r\n this.updateFrontFullyLoaded()\r\n }\r\n }\r\n })\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n updateFrontFullyLoaded = () => {\r\n\r\n if (this.splitsLoaded && !this.isTweening) {\r\n setTimeout(this.frontFullyLoaded, 5)\r\n }\r\n }\r\n\r\n backFullyLoaded = () => {\r\n this.isloading = false\r\n this.oldSphereMesh.visible = false\r\n this.backSphereMesh.visible = true\r\n this.frontPanoramasGroup.visible = true\r\n\r\n\r\n if (this.onAfterPanoramaLoad) {\r\n this.onAfterPanoramaLoad()\r\n }\r\n }\r\n\r\n frontFullyLoaded = () => {\r\n this.isloading = false\r\n this.oldSphereMesh.visible = false\r\n this.backSphereMesh.visible = true //Debug\r\n\r\n // this.frontPanoramasGroup.visible = true\r\n\r\n this.splitsLoaded = false\r\n\r\n this.oldPanoramaMaterial.map = this.backPanoramaMaterial.map\r\n this.oldPanoramaMaterial.needsUpdate = true\r\n\r\n this.oldSphereMesh.rotation.copy(this.backSphereMesh.rotation)\r\n\r\n this.oldSphereWrapper.rotation.set(0, 0, 0)\r\n this.oldSphereWrapper.rotateY(-Math.PI / 2)\r\n\r\n }\r\n\r\n startFading = (onFadeFinished: Function) => {\r\n const tween = new TWEEN.Tween({\r\n r: this.colorCorrection.r,\r\n g: this.colorCorrection.g,\r\n b: this.colorCorrection.b\r\n }).to({\r\n r: this.theatreEndColor,\r\n g: this.theatreEndColor,\r\n b: this.theatreEndColor,\r\n }, 500).onUpdate(this._tweenFade)\r\n\r\n if (onFadeFinished) {\r\n tween.onComplete(onFadeFinished)\r\n }\r\n\r\n tween.start()\r\n }\r\n\r\n endFade = (onFadeFinished) => {\r\n const tween = new TWEEN.Tween({\r\n r: this.theatreEndColor,\r\n g: this.theatreEndColor,\r\n b: this.theatreEndColor,\r\n }).to({\r\n r: this.colorCorrection.r,\r\n g: this.colorCorrection.g,\r\n b: this.colorCorrection.b\r\n }, 1500).onUpdate(this._tweenFade)\r\n\r\n if (onFadeFinished) {\r\n tween.onComplete(onFadeFinished)\r\n }\r\n\r\n tween.start()\r\n }\r\n\r\n _tweenFade = (newValue) => {\r\n const color = new three.Color()\r\n color.r = newValue.r\r\n color.g = newValue.g\r\n color.b = newValue.b\r\n\r\n\r\n this.frontPanoramaMaterials.forEach((material) => {\r\n material.color = color\r\n })\r\n }\r\n\r\n\r\n step() {\r\n // const elements = this.camera.matrix.elements\r\n //\r\n // const fx = elements[0]\r\n // const fy = elements[4]\r\n // const fz = elements[8]\r\n //\r\n // const angle = Math.sin(fz / (Math.sqrt(\r\n // (Math.pow(fx, 2) + Math.pow(fz, 2))\r\n // )))\r\n //\r\n\r\n\r\n }\r\n\r\n\r\n}","export function elementSwap(array: Array, element: any, direction) {\r\n const index = array.findIndex(val => element === val)\r\n\r\n let c: any = null\r\n\r\n if ((index + direction) >= array.length) {\r\n c = array[0]\r\n array[0] = element\r\n array[array.length - 1] = c\r\n } else if ((index + direction) < 0) {\r\n c = array[array.length - 1]\r\n array[array.length - 1] = element\r\n array[0] = c\r\n } else {\r\n c = array[index]\r\n array[index] = array[index + direction]\r\n array[index + direction] = c\r\n }\r\n}\r\n\r\nexport function insertToArray(array: Array, element: any, toIndex: number) {\r\n array.splice(toIndex, 0, element);\r\n}\r\n\r\nexport function shuffle(array: Array) {\r\n let currentIndex = array.length, randomIndex;\r\n\r\n // While there remain elements to shuffle.\r\n while (currentIndex != 0) {\r\n\r\n // Pick a remaining element.\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex--;\r\n\r\n // And swap it with the current element.\r\n [array[currentIndex], array[randomIndex]] = [\r\n array[randomIndex], array[currentIndex]];\r\n }\r\n\r\n return array;\r\n}","import {InfinityBoardParent} from \"./board_Parent\";\r\nimport {GuidedTourManager} from \"../../zustands/activeTestTourZus\";\r\n\r\n\r\nexport class InfinityGateBoard extends InfinityBoardParent {\r\n type = \"gate\"\r\n\r\n\r\n constructor(spot) {\r\n super(spot)\r\n this.icon = \"EI.Gate\"\r\n\r\n }\r\n\r\n iconRotationEnabled() {\r\n return true && (this.use_automatic_rotation === false)\r\n }\r\n\r\n loadFromJsonObject(object) {\r\n super.loadFromJsonObject(object)\r\n }\r\n\r\n fillToWorld(world) {\r\n super.fillToWorld(world)\r\n\r\n const spot = this.getParentProject().spots.get(this.contentUid)\r\n\r\n if (spot.wasCompleted) {\r\n this.setCompletedColor()\r\n }\r\n }\r\n\r\n clicked = () => {\r\n GuidedTourManager.taskBoardClicked(this, 1)\r\n this.getActivePlayer().ActivateSpotWithId(this.contentUid)\r\n }\r\n\r\n\r\n}","import React from \"react\";\r\nimport * as Bs from \"react-bootstrap\";\r\n\r\n\r\nimport \"./icon_click_buttons.css\"\r\n\r\nexport {\r\n SearchClickButton,\r\n HideToggleButton,\r\n CrossButton,\r\n UniversalButton,\r\n UniversalRoundButton,\r\n CloseButton\r\n}\r\n\r\nconst SearchClickButton = (props) => {\r\n const style = {\r\n width: \"35px\", height: \"35px\", ...props.style\r\n }\r\n return (\r\n \r\n )\r\n\r\n}\r\n\r\nconst HideToggleButton = () => {\r\n const style = {\r\n width: \"25px\", height: \"25px\"\r\n }\r\n return (\r\n \r\n )\r\n\r\n}\r\n\r\n\r\nconst CrossButton = (props) => {\r\n const css = {\r\n position: \"absolute\",\r\n width: \"15px\",\r\n height: \"15px\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n cursor: \"pointer\",\r\n\r\n }\r\n return (\r\n \r\n )\r\n}\r\n\r\n\r\nconst UniversalButton = (props) => {\r\n const customStyle = {\r\n // width: \"45px\",\r\n // height: \"45px\",\r\n ...props.style,\r\n cursor: \"pointer\",\r\n textAlign: \"center\",\r\n display: \"block\",\r\n\r\n\r\n }\r\n\r\n const imageStyle = {\r\n objectFit: \"fill \",\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n )\r\n}\r\n\r\nconst UniversalRoundButton = (props) => {\r\n const customStyle = {\r\n backgroundColor: \"rgba(0, 0, 0, 0.9)\",\r\n borderRadius: \"50%\",\r\n cursor: \"pointer\",\r\n justifyContent: \"center\",\r\n display: \"flex\",\r\n width: props.width ? props.width : \"25px\",\r\n height: props.height ? props.height : \"25px\",\r\n ...props.style,\r\n }\r\n\r\n const imageStyle = {\r\n //objectFit: \"fill\",\r\n width: \"50%\",\r\n height: \"50%\",\r\n margin: \"25% 25% 25% 25%\"\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n\r\n}\r\n\r\nconst CloseButton = (props) => {\r\n const style = {\r\n position: \"absolute\",\r\n top: \"0px\",\r\n right: \"0px\",\r\n marginRight: \"-10px\",\r\n marginTop: \"-10px\",\r\n }\r\n return (\r\n \r\n )\r\n}\r\n","import React from 'react';\r\n\r\nimport \"./VideoPlayer.css\"\r\nimport {CloseButton} from \"../../icon_click_buttons\";\r\n\r\n//Youtube videos tutorial\r\n//https://www.youtube.com/watch?v=Rq5SEhs9lws\r\n\r\nexport function VideoPlayer({uid, videoPath, onEnded, onClose}) {\r\n\r\n if (videoPath === \"\") {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n
);\r\n\r\n\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n );\r\n\r\n\r\n}\r\n","import {AssetParent} from \"./asset_Parent\";\r\n\r\nexport class VideoAsset extends AssetParent {\r\n\r\n folderName = \"Videos\"\r\n\r\n video_ratio_x = 1\r\n video_ratio_y = 1\r\n\r\n fromJsonObject(object: any) {\r\n super.fromJsonObject(object)\r\n\r\n this.video_ratio_x = object[\"video_ratio_x\"]\r\n this.video_ratio_y = object[\"video_ratio_y\"]\r\n\r\n }\r\n\r\n}","import {useGlobalAppLock} from \"../zustands/globalAppLockZus\";\r\nimport {AxiosResponse} from \"axios\";\r\n\r\n\r\nexport const lockAppBeforeResponse = () => {\r\n useGlobalAppLock.setState({isAppLocked: true})\r\n}\r\n\r\nexport const unlockAppOnResponse = () => {\r\n useGlobalAppLock.setState({isAppLocked: false})\r\n}\r\n\r\n\r\nexport const handleGlobalAppFail = (e: AxiosResponse) => {\r\n console.error(e)\r\n\r\n let stateToSet = {\r\n failError: e.status,\r\n failMessage: \"\",\r\n sFailed: true\r\n }\r\n\r\n if (e.status === 403) {\r\n stateToSet.failMessage = \"Access denied\"\r\n }\r\n\r\n useGlobalAppLock.setState(stateToSet)\r\n\r\n\r\n}\r\n\r\n\r\n","import React from \"react\";\r\n\r\n\r\nimport create from \"zustand\"\r\nimport {InfinityProject} from \"../infinity/InfinityProject\";\r\n\r\n\r\n\r\n\r\nexport const useAvailableProjectsZus = create((set) => ({\r\n availableProjects: [],\r\n setAvailableProjects: (projects: Array) => set((newState) => {\r\n return {availableProjects: projects}\r\n }),\r\n}))\r\n\r\n","const ASSETS_TRANSITION_MAP = {\r\n \"GateBoard\": \"Panoramas\",\r\n \"VideoBoard\": \"Videos\",\r\n \"SoundBoard\": \"Sounds\",\r\n \"QuizBoard\": \"Quizzes\",\r\n \"MeshBoard\": \"Meshes\",\r\n \"DocumentationBoard\": \"Documents\",\r\n \"OutlineBoard\": \"\",\r\n \"InfoBoard\": \"Images\",\r\n \"DigitalTwinBoard\": \"DigitalTwins\",\r\n \"ClickBoard\": \"\",\r\n}\r\nconst BOARDS_EMPTY_PLACEHOLDER_ICONS = {\r\n \"GateBoard\": \"EI.Gate.png\",\r\n \"VideoBoard\": \"EI.Video.png\",\r\n \"SoundBoard\": \"EI.SoundBoard.png\",\r\n \"QuizBoard\": \"EI.QuizBoard.png\",\r\n \"MeshBoard\": \"EI.MeshBoard.png\",\r\n \"DocumentationBoard\": \"EI.DocumentBoard.png\",\r\n \"OutlineBoard\": \"EI.OutlineBoard.png\",\r\n \"InfoBoard\": \"EI.InfoBoard.png\",\r\n \"DigitalTwinBoard\": \"EI.DigitalTwin.png\",\r\n \"ClickBoard\": \"Core.ClickOn.png\",\r\n}\r\n\r\nexport class FakeProject {\r\n\r\n uid = \"\"\r\n name = \"\"\r\n welcome_panorama = \"\"\r\n welcome_spot = \"\"\r\n\r\n spots: Map = new Map()\r\n\r\n areas: Map = new Map()\r\n videos: Map = new Map()\r\n sounds: Map = new Map()\r\n panoramas: Map = new Map()\r\n meshes: Map = new Map()\r\n labels: Map = new Map()\r\n images: Map = new Map()\r\n\r\n lon: number = 0\r\n lat: number = 0\r\n\r\n type: number = 0\r\n\r\n searchCache: Array = new Array()\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n _getNewOnFilter(filter: string, variable: string) {\r\n const results = new Array()\r\n this.searchCache.forEach((value) => {\r\n const nameLower = value[variable].toLowerCase()\r\n if (nameLower.search(filter) != -1) {\r\n results.push(value)\r\n }\r\n })\r\n\r\n if (results.length > 0) {\r\n const project = new FakeProject()\r\n project.uid = this.uid\r\n project.name = this.name\r\n project.searchCache = results\r\n return project\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n _getNewOnTagFilter(filter: string) {\r\n // console.log(filter)\r\n // const filterSet = new Set(filter.split(\" \"))\r\n\r\n const results = new Array()\r\n\r\n this.searchCache.forEach((value) => {\r\n const nameLower = value.tags.toLowerCase()\r\n if (nameLower.search(filter) != -1) {\r\n results.push(value)\r\n }\r\n })\r\n\r\n if (results.length > 0) {\r\n const project = new FakeProject()\r\n project.uid = this.uid\r\n project.name = this.name\r\n project.searchCache = results\r\n return project\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n createNewOnNameFilter(nameFilter: string) {\r\n return this._getNewOnFilter(nameFilter, \"name\")\r\n }\r\n\r\n createNewOnNameAndCategory(nameFilter: string, categoryFilter: string) {\r\n const results = new Array()\r\n\r\n this.searchCache.forEach((value) => {\r\n const nameLower = value.name.toLowerCase()\r\n if (nameFilter === \"\") {\r\n if (value.type == categoryFilter || categoryFilter === \"\") {\r\n results.push(value)\r\n }\r\n } else {\r\n if ((value.type == categoryFilter || categoryFilter === \"\") && nameLower.search(nameFilter) != -1) {\r\n results.push(value)\r\n }\r\n }\r\n })\r\n\r\n if (results.length > 0) {\r\n const project = new FakeProject()\r\n project.uid = this.uid\r\n project.name = this.name\r\n project.searchCache = results\r\n return project\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n createNewOnTagFilter(tagFilter: string) {\r\n return this._getNewOnTagFilter(tagFilter)\r\n }\r\n\r\n getBoardsOnFilters(type: string, filter: string) {\r\n let boards = []\r\n\r\n this.spots.forEach((value) => {\r\n boards = boards.concat(value.getBoardsOfType(type, filter))\r\n })\r\n\r\n return boards\r\n }\r\n\r\n load_from_json(jObject: FakeProject) {\r\n this.uid = jObject.uid ?? \"\"\r\n this.name = jObject.name ?? \"\"\r\n this.welcome_panorama = jObject.welcome_panorama ?? \"\"\r\n this.welcome_spot = jObject.welcome_spot ?? \"\"\r\n\r\n //\r\n\r\n this._load_asset_from_json(\"areas\", jObject.areas ?? [])\r\n\r\n const fakeArea = new FakeAsset()\r\n fakeArea.name = \"\"\r\n this.areas.set(\"\", fakeArea)\r\n\r\n this._load_asset_from_json(\"videos\", jObject.videos ?? [])\r\n this._load_asset_from_json(\"sounds\", jObject.sounds ?? [])\r\n this._load_asset_from_json(\"panoramas\", jObject.panoramas ?? [])\r\n this._load_asset_from_json(\"meshes\", jObject.meshes ?? [])\r\n this._load_asset_from_json(\"labels\", jObject.labels ?? [])\r\n this._load_asset_from_json(\"images\", jObject.images ?? [])\r\n\r\n\r\n this._load_spots_from_json(jObject.spots ?? [])\r\n\r\n this._bake_search_cache()\r\n }\r\n\r\n _bake_search_cache() {\r\n\r\n this.spots.forEach((value) => {\r\n this.searchCache.push(value)\r\n\r\n Array.from(value.boards.values()).forEach((board: FakeBoard) => {\r\n if (board.type !== \"GateBoard\") {\r\n this.searchCache.push(board)\r\n }\r\n\r\n })\r\n })\r\n\r\n }\r\n\r\n _load_spots_from_json(jsonObject: Array) {\r\n const spots = new Map()\r\n\r\n jsonObject.map((value) => {\r\n const fakeSpot = new FakeSpot()\r\n fakeSpot.parentProject = this\r\n fakeSpot.parentProjectUid = this.uid\r\n fakeSpot.load_from_json(value)\r\n\r\n\r\n const area = this.areas.get(fakeSpot.areaId)\r\n\r\n if (area) {\r\n fakeSpot.areaName = area.name\r\n }\r\n\r\n\r\n fakeSpot.urlPath = `/project/${this.uid}?spot=${fakeSpot.uid}`\r\n fakeSpot.navigationPath = `${fakeSpot.areaName}`\r\n fakeSpot.previewPath = `/infinity/${this.uid}/Panoramas/${fakeSpot.panorama_uid}/preview.png`\r\n\r\n fakeSpot.boards.forEach((board: FakeBoard) => {\r\n board.urlPath = `/project/${this.uid}?spot=${fakeSpot.uid}`\r\n\r\n board.navigationPath = `${this.areas.get(fakeSpot.areaId).name}/${fakeSpot.name}`\r\n\r\n if (board.type === \"OutlineBoard\") {\r\n board.previewPath = \"/assets/icons/EI.OutlineBoard.png\"\r\n } else if (board.type === \"QuizBoard\") {\r\n board.previewPath = \"/assets/icons/EI.QuizBoard.png\"\r\n } else if (board.type === \"SoundBoard\") {\r\n board.previewPath = \"/assets/icons/EI.SoundBoard.png\"\r\n } else if (board.type === \"InfoBoard\") {\r\n const label = this.labels.get(board.content_uid)\r\n if (label) {\r\n board.header = label.header\r\n board.body = label.body\r\n\r\n if (label.image_uid !== \"\") {\r\n const image = this.images.get(label.image_uid)\r\n if (image) {\r\n board.previewPath = `/infinity/${this.uid}/Images/${label.image_uid}/default.${image.file_extension}`\r\n }\r\n }\r\n\r\n }\r\n } else {\r\n\r\n if (board.content_uid === \"\") {\r\n board.previewPath = `/assets/icons/${BOARDS_EMPTY_PLACEHOLDER_ICONS[board.type]}`\r\n } else {\r\n board.previewPath = `/infinity/${this.uid}/${ASSETS_TRANSITION_MAP[board.type]}/${board.content_uid}/preview.png`\r\n }\r\n\r\n\r\n }\r\n })\r\n\r\n spots.set(fakeSpot.uid, fakeSpot)\r\n })\r\n\r\n this.spots = spots\r\n\r\n\r\n }\r\n\r\n _load_asset_from_json(assetName: string, jsonObject: Array | any) {\r\n const assets = new Map()\r\n jsonObject.map((value) => {\r\n const fakeAsset = new FakeAsset()\r\n if (assetName == \"labels\") {\r\n fakeAsset.load_from_json_as_label(value)\r\n } else {\r\n fakeAsset.load_from_json(value)\r\n }\r\n\r\n assets.set(fakeAsset.uid, fakeAsset)\r\n })\r\n\r\n this[assetName] = assets\r\n }\r\n\r\n getWebPreviewImage() {\r\n return `infinity/${this.uid}/Panoramas/${this.welcome_panorama}/preview.png`\r\n }\r\n}\r\n\r\n\r\nexport class FakeAsset {\r\n\r\n uid = \"\"\r\n name = \"\"\r\n file_extension = \"\"\r\n\r\n constructor() {\r\n }\r\n\r\n load_from_json(jObject: FakeAsset) {\r\n this.uid = jObject.uid ?? \"\"\r\n this.name = jObject.name ?? \"\"\r\n this.file_extension = jObject.file_extension ?? \"\"\r\n\r\n }\r\n\r\n load_from_json_as_label(jObject: FakeAsset) {\r\n\r\n this.load_from_json(jObject)\r\n\r\n this.body = jObject.body ?? \"\"\r\n this.header = jObject.header ?? \"\"\r\n this.image_uid = jObject.image_uid ?? \"\"\r\n this.url = jObject.url ?? \"\"\r\n }\r\n\r\n getWebPreviewImage(): string {\r\n return `infinity/${this.parentProjectUid}/Panoramas/${this.panorama_uid}/preview.png`\r\n }\r\n}\r\n\r\nexport class FakeSpot {\r\n\r\n uid = \"\"\r\n name = \"\"\r\n type = \"Spot\"\r\n panorama_uid = \"\"\r\n areaId = \"\"\r\n areaName = \"\"\r\n tags = \"\"\r\n\r\n urlPath = \"\"\r\n navigationPath = \"\"\r\n previewPath = \"\"\r\n\r\n parentProjectUid = \"\"\r\n parentProject = null\r\n boards: Map = new Map()\r\n\r\n constructor() {\r\n }\r\n\r\n\r\n load_from_json(jObject: FakeSpot) {\r\n this.uid = jObject.uid ?? \"\"\r\n this.name = jObject.name ?? \"\"\r\n this.panorama_uid = jObject.panorama_uid ?? \"\"\r\n this.areaId = jObject.area_id ?? \"\"\r\n this.tags = jObject.search_tags ?? \"\"\r\n this.boards = this.get_boards_from_jobject(jObject.boards ?? [])\r\n }\r\n\r\n get_boards_from_jobject(jObject: Array): Map {\r\n const boards = new Map()\r\n\r\n jObject.map((value) => {\r\n const fakeBoard = new FakeBoard()\r\n fakeBoard.load_from_json(value)\r\n fakeBoard.parentSpotUid = this.uid\r\n fakeBoard.parentSpot = this\r\n boards.set(fakeBoard.uid, fakeBoard)\r\n })\r\n return boards\r\n }\r\n\r\n}\r\n\r\n\r\nexport class FakeBoard {\r\n\r\n uid = \"\"\r\n name = \"\"\r\n tags = \"\"\r\n type = \"\"\r\n content_uid = \"\"\r\n parentSpotUid = \"\"\r\n urlPath = \"\"\r\n navigationPath = \"\"\r\n previewPath = \"\"\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n load_from_json(jObject: FakeBoard) {\r\n this.uid = jObject.uid ?? \"\"\r\n this.name = jObject.name ?? \"\"\r\n this.tags = jObject.search_tags ?? \"\"\r\n this.type = jObject.type\r\n this.content_uid = jObject.content_uid ?? \"\"\r\n\r\n }\r\n\r\n}\r\n\r\n","import {AssetParent} from \"./asset_Parent\";\r\n\r\n\r\nexport class MeshAsset extends AssetParent {\r\n folderName = \"Meshes\"\r\n\r\n exists = false\r\n\r\n fromJsonObject(object: any) {\r\n super.fromJsonObject(object);\r\n this.exists = object.custom_data[\"mesh_exists\"]\r\n\r\n // console.log(\"----------x--------------\")\r\n // console.log(this.exists)\r\n\r\n\r\n }\r\n}","import {AssetParent} from \"./asset_Parent\";\r\n\r\nexport class SoundAsset extends AssetParent {\r\n folderName = \"Sounds\"\r\n\r\n\r\n getWebPreviewImage(): string {\r\n return \"assets/icons/EI.SoundBoard.png\"\r\n }\r\n}","import {AssetParent} from \"./asset_Parent\";\r\n\r\n\r\n\r\nexport class DocumentAsset extends AssetParent {\r\n folderName = \"Documents\"\r\n\r\n thumbnailRatioX = 1\r\n thumbnailRatioY = 1\r\n\r\n fromJsonObject(object: any) {\r\n super.fromJsonObject(object);\r\n\r\n\r\n const tmpX = object.first_page_ratio_x\r\n const tmpY = object.first_page_ratio_y\r\n\r\n if (tmpX && tmpY) {\r\n this.thumbnailRatioX = tmpX\r\n this.thumbnailRatioY = tmpY\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n}","export default class AnswerBase {\r\n text = \"\"\r\n validity = false\r\n isSelected = false\r\n\r\n getCopy() {\r\n const new_answer = new AnswerBase()\r\n new_answer.text = this.text\r\n new_answer.validity = this.validity\r\n new_answer.isSelected = this.isSelected\r\n return new_answer\r\n\r\n }\r\n\r\n to_json_result(): any {\r\n return {\r\n AnswerText: this.text,\r\n Validity: this.validity,\r\n IsSelected: this.isSelected\r\n }\r\n }\r\n\r\n from_json(answer_data: any) {\r\n\r\n this.text = answer_data.AnswerText ?? \"\"\r\n this.validity = answer_data.Validity ?? false\r\n }\r\n\r\n from_json_with_result(answer_data: any) {\r\n this.from_json(answer_data)\r\n this.isSelected = answer_data.IsSelected ?? false\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport class QuestionBase {\r\n name = \"\"\r\n isMultiAnswer = false\r\n answers: Array = []\r\n\r\n\r\n GetSuccessRate(): number {\r\n let successRate = 0\r\n\r\n if (this.isMultiAnswer) {\r\n let shouldBeGood = 0\r\n let goodSelected = 0\r\n\r\n this.answers.forEach((value: AnswerBase) => {\r\n if (value.validity) {\r\n ++shouldBeGood\r\n }\r\n if (value.validity && value.isSelected) {\r\n ++goodSelected\r\n }\r\n })\r\n\r\n if (shouldBeGood !== 0) {\r\n return goodSelected / shouldBeGood\r\n } else {\r\n return 0\r\n }\r\n\r\n\r\n } else {\r\n this.answers.forEach((value: AnswerBase) => {\r\n if ((value.validity === true) && (value.isSelected === true)) {\r\n successRate = 1\r\n return\r\n }\r\n })\r\n\r\n return successRate\r\n }\r\n\r\n }\r\n\r\n getCopy() {\r\n const new_question = new QuestionBase()\r\n new_question.name = this.name\r\n new_question.isMultiAnswer = this.isMultiAnswer\r\n\r\n this.answers.forEach((answer) => {\r\n new_question.answers.push(answer.getCopy())\r\n })\r\n return new_question\r\n }\r\n\r\n to_json_result(): any {\r\n\r\n const answers = this.answers.map((value) => {\r\n return value.to_json_result()\r\n })\r\n\r\n return {\r\n Name: this.name,\r\n Answers: answers\r\n }\r\n }\r\n\r\n from_json_base(question_data: any) {\r\n this.name = question_data.Name ?? \"\"\r\n this.isMultiAnswer = question_data.IsMultiAnswer ?? \"\"\r\n }\r\n\r\n from_json(question_data) {\r\n this.from_json_base(question_data)\r\n\r\n }\r\n\r\n from_json_with_result(question_data) {\r\n this.from_json_base(question_data)\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n","import AnswerBase, {QuestionBase} from \"./QuestionBase\";\r\n\r\n\r\nexport class TextAnswer extends AnswerBase {\r\n\r\n getCopy() {\r\n const new_answer = new TextAnswer()\r\n new_answer.text = this.text\r\n new_answer.validity = this.validity\r\n new_answer.isSelected = this.isSelected\r\n return new_answer\r\n\r\n }\r\n\r\n}\r\n\r\nexport class ImageAnswer extends AnswerBase {\r\n image = \"\"\r\n\r\n getCopy() {\r\n const new_answer = new ImageAnswer()\r\n new_answer.text = this.text\r\n new_answer.validity = this.validity\r\n new_answer.isSelected = this.isSelected\r\n new_answer.image = this.image\r\n return new_answer\r\n }\r\n\r\n to_json_result(): any {\r\n return {\r\n ...super.to_json_result(),\r\n Image: this.image\r\n }\r\n }\r\n\r\n from_json(answer_data: any) {\r\n super.from_json(answer_data)\r\n this.image = answer_data.ImagePath ?? \"\"\r\n }\r\n\r\n from_json_with_result(answer_data: any) {\r\n this.from_json(answer_data)\r\n super.from_json_with_result(answer_data)\r\n }\r\n\r\n}\r\n\r\n\r\nexport class TextQuestion extends QuestionBase {\r\n\r\n getCopy() {\r\n const new_question = new TextQuestion()\r\n new_question.name = this.name\r\n new_question.isMultiAnswer = this.isMultiAnswer\r\n\r\n this.answers.forEach((answer) => {\r\n new_question.answers.push(answer.getCopy())\r\n })\r\n return new_question\r\n }\r\n\r\n to_json_result(): any {\r\n\r\n return {\r\n ...super.to_json_result(),\r\n Type: \"text\"\r\n }\r\n }\r\n\r\n from_json(question_data) {\r\n super.from_json(question_data)\r\n\r\n const answers = question_data.Answers ?? []\r\n\r\n answers.forEach((answer_data: any) => {\r\n const answer = new TextAnswer()\r\n answer.from_json(answer_data)\r\n this.answers.push(answer)\r\n })\r\n\r\n }\r\n\r\n from_json_with_result(question_data) {\r\n super.from_json_with_result(question_data)\r\n\r\n const answers = question_data.Answers ?? []\r\n\r\n answers.forEach((answer_data: any) => {\r\n const answer = new TextAnswer()\r\n answer.from_json_with_result(answer_data)\r\n this.answers.push(answer)\r\n })\r\n\r\n }\r\n}\r\n","import {QuestionBase} from \"./QuestionBase\";\r\nimport {ImageAnswer} from \"./TextQuestion\";\r\n\r\n\r\nexport class ImageQuestion extends QuestionBase {\r\n getCopy() {\r\n const new_question = new ImageQuestion()\r\n new_question.name = this.name\r\n new_question.isMultiAnswer = this.isMultiAnswer\r\n\r\n this.answers.forEach((answer) => {\r\n new_question.answers.push(answer.getCopy())\r\n })\r\n return new_question\r\n }\r\n\r\n to_json_result(): any {\r\n\r\n return {\r\n ...super.to_json_result(),\r\n Type: \"image\"\r\n }\r\n }\r\n\r\n from_json(question_data) {\r\n // super.from_json(question_data)\r\n super.from_json(question_data)\r\n\r\n const answers = question_data.Answers ?? []\r\n\r\n answers.forEach((answer_data: any) => {\r\n\r\n if (!answer_data.IsLocked) {\r\n const answer = new ImageAnswer()\r\n answer.from_json(answer_data)\r\n this.answers.push(answer)\r\n }\r\n })\r\n\r\n\r\n }\r\n\r\n from_json_with_result(question_data) {\r\n super.from_json_with_result(question_data)\r\n\r\n const answers = question_data.Answers ?? []\r\n\r\n answers.forEach((answer_data: any) => {\r\n\r\n if (!answer_data.IsLocked) {\r\n const answer = new ImageAnswer()\r\n answer.from_json_with_result(answer_data)\r\n this.answers.push(answer)\r\n }\r\n })\r\n }\r\n}\r\n","import {QuestionBase} from \"./QuestionBase\";\r\nimport {ImageQuestion} from \"./ImageQuestion\";\r\nimport {TextQuestion} from \"./TextQuestion\";\r\n\r\n\r\nexport class Quiz {\r\n name = \"\"\r\n questions: Array = []\r\n isEvaluated = false\r\n\r\n\r\n getCopy() {\r\n const tmp = new Quiz()\r\n tmp.name = this.name\r\n tmp.isEvaluated = this.isEvaluated\r\n\r\n this.questions.forEach((question) => {\r\n tmp.questions.push(question.getCopy())\r\n })\r\n\r\n return tmp\r\n\r\n\r\n }\r\n\r\n getSuccessRate() {\r\n const questionsLength = this.questions.length\r\n var result = 0\r\n\r\n this.questions.forEach((question) => {\r\n result += question.GetSuccessRate()\r\n })\r\n\r\n if (questionsLength > 0) {\r\n return result / questionsLength\r\n } else {\r\n return 0\r\n }\r\n\r\n }\r\n\r\n to_json_result() {\r\n return {\r\n Name: this.name,\r\n success: this.getSuccessRate(),\r\n Questions: this.questions_to_array()\r\n }\r\n }\r\n\r\n questions_to_array(): any {\r\n\r\n const array = this.questions.map((value) => {\r\n return value.to_json_result()\r\n })\r\n\r\n return array\r\n }\r\n\r\n\r\n from_json(quiz_data: any) {\r\n this.name = quiz_data.Name ?? \"\"\r\n\r\n const questions = quiz_data.Questions ?? []\r\n\r\n questions.forEach((question_data: any) => {\r\n const questionType = question_data.Type ?? \"text\"\r\n\r\n if (questionType === \"image\") {\r\n let tmp = new ImageQuestion()\r\n tmp.from_json(question_data)\r\n this.questions.push(tmp)\r\n\r\n } else if (questionType === \"text\") {\r\n let tmp = new TextQuestion()\r\n tmp.from_json(question_data)\r\n this.questions.push(tmp)\r\n }\r\n\r\n })\r\n\r\n }\r\n\r\n from_json_with_result(quiz_data: any) {\r\n this.name = quiz_data.Name ?? \"\"\r\n\r\n const questions = quiz_data.Questions ?? []\r\n\r\n questions.forEach((question_data: any) => {\r\n const questionType = question_data.Type ?? \"text\"\r\n\r\n if (questionType === \"image\") {\r\n let tmp = new ImageQuestion()\r\n tmp.from_json_with_result(question_data)\r\n this.questions.push(tmp)\r\n\r\n } else if (questionType === \"text\") {\r\n let tmp = new TextQuestion()\r\n tmp.from_json_with_result(question_data)\r\n this.questions.push(tmp)\r\n }\r\n\r\n })\r\n }\r\n\r\n}","import {AssetParent} from \"./asset_Parent\";\r\nimport axios from \"axios\";\r\n\r\nimport {Quiz} from \"../quiz/Quiz\";\r\n\r\n\r\nexport class QuizAsset extends AssetParent {\r\n\r\n quiz = new Quiz()\r\n folderName = \"Quizzes\"\r\n\r\n isLoaded = false\r\n\r\n load_from_json(object: any) {\r\n super.fromJsonObject(object)\r\n }\r\n\r\n async sub_load_async() {\r\n if (this.uid !== \"\") {\r\n const quizLoadPath = this.getAbsolutePath()\r\n\r\n if (quizLoadPath !== \"\") {\r\n const response = await axios.get(quizLoadPath)\r\n this.PostLoad(response.data)\r\n }\r\n }\r\n this.isLoaded = true\r\n }\r\n\r\n PostLoad(quiz_data: any) {\r\n this.quiz = QuizAsset.getQuizFromJson(quiz_data)\r\n this.quiz.name = quiz_data[\"Name\"]\r\n }\r\n\r\n\r\n static getQuizFromJson(quiz_data: any) {\r\n\r\n\r\n const quiz = new Quiz()\r\n quiz.from_json(quiz_data)\r\n\r\n\r\n return quiz\r\n }\r\n\r\n static getQuizFromJsonWithResult(quiz_data: any) {\r\n\r\n const quiz = new Quiz()\r\n quiz.from_json_with_result(quiz_data)\r\n\r\n return quiz\r\n }\r\n\r\n\r\n}","import {AssetParent} from \"./asset_Parent\";\r\n\r\nexport class LabelAsset extends AssetParent {\r\n\r\n\r\n header = \"\"\r\n body = \"\"\r\n image_uid = \"\"\r\n url = \"\"\r\n\r\n\r\n getAbsolutePath() {\r\n return \"Labels/\" + this.uid + \"/\" + this.name + \".\" + this.file_extension\r\n }\r\n\r\n fromJsonObject(object: any) {\r\n super.fromJsonObject(object)\r\n this.header = object[\"header\"]\r\n this.body = object[\"body\"]\r\n this.image_uid = object[\"image_uid\"]\r\n this.url = object[\"url\"]\r\n }\r\n}","import {AssetParent} from \"./asset_Parent\";\r\nimport axios from \"axios\";\r\n\r\n\r\nexport class AreaAssetModelLayer {\r\n\r\n name = \"\"\r\n filePath = \"\"\r\n local_position = null\r\n scale = null\r\n id = \"layer_0\"\r\n\r\n static NewFromJson(jObject: {}, assetPath) {\r\n const layer = new AreaAssetModelLayer()\r\n layer.id = jObject[\"id\"]\r\n layer.filePath = assetPath + layer.id + \".glb\"\r\n layer.name = jObject[\"name\"]\r\n layer.local_position = jObject[\"local_position\"]\r\n layer.scale = jObject[\"scale\"]\r\n\r\n\r\n return layer\r\n\r\n }\r\n\r\n getMeshPath(): string {\r\n return this.filePath\r\n }\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n}\r\n\r\nexport class AreaAsset extends AssetParent {\r\n\r\n scale_x = 277\r\n scale_y = 208\r\n floor = 0\r\n\r\n folderName = \"Areas\"\r\n fileExists = false\r\n\r\n meshExists = false\r\n mesh_object_pose = null\r\n mesh_object_scale = null\r\n\r\n spots_color = {x: 1, y: 1, z: 1}\r\n spots_color_selected = {x: 0, y: 1, z: 0}\r\n area_pose = {x: 0, y: 0, z: 0}\r\n\r\n layers: Array = []\r\n\r\n\r\n getAbsolutePath(): string {\r\n return this.getMaximapPath()\r\n }\r\n\r\n getMinimapPath() {\r\n return `${this.GetStorage()}${this.uid}/minimap.${this.file_extension}`\r\n }\r\n\r\n getMaximapPath() {\r\n return `${this.GetStorage()}${this.uid}/maximap.${this.file_extension}`\r\n }\r\n\r\n getMeshPath() {\r\n return `${this.GetStorage()}${this.uid}/model.glb`\r\n }\r\n\r\n getWebPreviewImage(): string {\r\n return this.getMinimapPath()\r\n }\r\n\r\n fromJsonObject(object: any) {\r\n super.fromJsonObject(object)\r\n this.floor = object[\"floor\"]\r\n this.scale_x = object[\"scale_x\"]\r\n this.scale_y = object[\"scale_z\"]\r\n\r\n const cData = object[\"custom_data\"]\r\n\r\n this.fileExists = cData[\"map_exists\"]\r\n this.meshExists = cData[\"mesh_exists\"]\r\n\r\n this.spots_color = object[\"spots_color\"] ?? this.spots_color\r\n this.spots_color_selected = object[\"spots_color_selected\"] ?? this.spots_color_selected\r\n\r\n this.area_pose = object.area_pose ?? this.area_pose\r\n\r\n if (this.meshExists) {\r\n\r\n\r\n this.mesh_object_pose = object[\"mesh_object_pose\"]\r\n this.mesh_object_scale = object[\"mesh_object_scale\"]\r\n\r\n\r\n axios.get(`${this.GetStorage()}${this.uid}/model_layers.json`).then((value) => {\r\n value.data[\"model_layers\"].forEach((layerData) => {\r\n this.layers.push(AreaAssetModelLayer.NewFromJson(layerData, `${this.GetStorage()}${this.uid}/`))\r\n\r\n })\r\n\r\n }).catch((e) => {\r\n console.error(e)\r\n })\r\n }\r\n\r\n }\r\n\r\n}","import {AssetParent} from \"./asset_Parent\";\r\n\r\nexport class ImageAsset extends AssetParent {\r\n\r\n folderName = \"Images\"\r\n\r\n\r\n}","import {AssetParent} from \"./asset_Parent\";\r\n\r\n\r\nexport class OutlineAsset extends AssetParent {\r\n folderName = \"Outlines\"\r\n vertices = new Array()\r\n\r\n fromJsonObject(object: any) {\r\n super.fromJsonObject(object)\r\n\r\n object[\"vertices\"].forEach((vrtx) => {\r\n this.vertices.push(vrtx)\r\n // this.vertices.push(vrtx[\"x\"])\r\n // this.vertices.push(vrtx[\"y\"])\r\n // this.vertices.push(vrtx[\"z\"])\r\n\r\n })\r\n\r\n }\r\n\r\n}","import {AssetParent} from \"./asset_Parent\"\r\nimport * as three from \"three\"\r\nimport {JSONObject} from \"three/examples/jsm/loaders/IFCLoader\"\r\n\r\n\r\nexport class DigitalTwinDataSectionTypesProperty {\r\n\r\n\r\n uid = \"\"\r\n key = \"\"\r\n lang = \"\"\r\n icon = \"\"\r\n value = null\r\n unit = \"\"\r\n isStatic = true\r\n externalLink = \"\"\r\n fileType = \"\"\r\n updateInterval = 1\r\n externalFilterValue = \"\"\r\n color = new three.Color(0, 0, 0)\r\n\r\n static CreateFromJsonObject(object) {\r\n const tmp = new DigitalTwinDataSectionTypesProperty()\r\n\r\n tmp.key = object[\"key\"]\r\n tmp.lang = object[\"name\"]\r\n tmp.icon = object[\"icon\"]\r\n tmp.value = object[\"value\"]\r\n tmp.unit = object[\"unit\"]\r\n\r\n tmp.isStatic = object[\"is_static\"]\r\n tmp.externalLink = object[\"external_link\"]\r\n tmp.fileType = object[\"file_type\"]\r\n tmp.updateInterval = object[\"update_interval\"]\r\n tmp.externalFilterValue = object[\"external_filter_value\"]\r\n\r\n const color = object[\"color\"]\r\n\r\n tmp.color.r = color.x\r\n tmp.color.g = color.y\r\n tmp.color.b = color.z\r\n // tmp.color.a = color.w\r\n\r\n return tmp\r\n }\r\n\r\n\r\n}\r\n\r\nexport class DigitalTwinAsset extends AssetParent {\r\n folderName = \"DigitalTwin\"\r\n\r\n data: Array = new Array()\r\n\r\n fromJsonObject(object) {\r\n super.fromJsonObject(object);\r\n\r\n const fetchPath = `/infinity/${this.projectUid}/DigitalTwin/${this.uid}/default.json`\r\n\r\n fetch(fetchPath).then(response => response.json()).then((jResponse) => {\r\n const data_sections = jResponse[\"data_sections\"]\r\n\r\n data_sections.forEach((data: JSONObject) => {\r\n this.data.push(DigitalTwinDataSectionTypesProperty.CreateFromJsonObject(data))\r\n })\r\n\r\n\r\n })\r\n\r\n }\r\n}","import {PanoramaAsset} from \"../ela/assets/asset_Panorama\";\r\nimport {MeshAsset} from \"../ela/assets/asset_Mesh\";\r\nimport {SoundAsset} from \"../ela/assets/asset_Sound\";\r\nimport {VideoAsset} from \"../ela/assets/asset_Video\";\r\nimport {DocumentAsset} from \"../ela/assets/asset_Document\";\r\nimport {QuizAsset} from \"../ela/assets/asset_Quiz\";\r\nimport {LabelAsset} from \"../ela/assets/asset_Label\";\r\n\r\nimport {InfinitySpot} from \"./InfinitySpot\";\r\nimport {AreaAsset} from \"../ela/assets/asset_Area\";\r\nimport {ImageAsset} from \"../ela/assets/asset_Image\";\r\nimport {OutlineAsset} from \"../ela/assets/asset_Outline\";\r\nimport {DigitalTwinAsset} from \"../ela/assets/asset_DigitalTwin\";\r\nimport {TourTaskAsset} from \"../ela/assets/asset_TourTask\";\r\n\r\n\r\nexport class InfinityProjectStatus {\r\n static STATUS_NOT_LOADED = 0\r\n static STATUS_LOADED = 1\r\n static STATUS_LOADING = 2\r\n static STATUS_LOAD_FAILED = 3\r\n}\r\n\r\nexport interface InfinityProjectFetch {\r\n name: string;\r\n uid: string;\r\n description: string;\r\n url_link: string;\r\n welcome_panorama: string;\r\n ProjectType: number;\r\n}\r\n\r\n\r\nexport const INFINITY_PROJECT_TYPES = {\r\n BASIC: 0,\r\n GUIDED: 1\r\n}\r\n\r\nexport class InfinityProject {\r\n\r\n name: string\r\n description: string\r\n uid: string\r\n link: string\r\n type: number = INFINITY_PROJECT_TYPES.BASIC\r\n\r\n status: number = InfinityProjectStatus.STATUS_NOT_LOADED\r\n\r\n spots: Map = new Map()\r\n\r\n sounds: Map = new Map()\r\n videos: Map = new Map()\r\n meshes: Map = new Map()\r\n quizzes: Map = new Map()\r\n documents: Map = new Map()\r\n panoramas: Map = new Map()\r\n labels: Map = new Map()\r\n areas: Map = new Map()\r\n images: Map = new Map()\r\n outlines: Map = new Map()\r\n twins: Map = new Map()\r\n\r\n tasks: Map = new Map()\r\n tasks_list: Array = new Array()\r\n\r\n run_token = \"\"\r\n\r\n multimap = new Map([\r\n [\"sounds\", this.sounds],\r\n [\"videos\", this.videos],\r\n [\"meshes\", this.meshes],\r\n [\"quizzes\", this.quizzes],\r\n [\"documents\", this.documents],\r\n [\"panoramas\", this.panoramas],\r\n [\"labels\", this.labels],\r\n [\"areas\", this.areas],\r\n [\"spots\", this.spots],\r\n [\"images\", this.images],\r\n [\"outlines\", this.outlines],\r\n [\"twins\", this.twins],\r\n [\"tasks\", this.tasks],\r\n ])\r\n\r\n welcomeSpotUid: string = \"\"\r\n welcomePanoramaUid: string = \"\"\r\n footerEnabled: boolean = true\r\n\r\n activePlayer = null\r\n\r\n constructor() {\r\n this.name = \"\"\r\n this.uid = \"\"\r\n this.link = \"\"\r\n this.description = \"\"\r\n }\r\n\r\n GetStatus(): number {\r\n return this.status\r\n }\r\n\r\n getAbsolutePath(): string {\r\n return \"/infinity/\" + this.uid + \"/\"\r\n\r\n }\r\n\r\n\r\n async load_from_json_async(data: any) {\r\n this.status = InfinityProjectStatus.STATUS_LOADING\r\n\r\n this.name = data[\"name\"]\r\n this.description = data[\"description\"]\r\n this.uid = data[\"uid\"]\r\n this.type = data.type ?? INFINITY_PROJECT_TYPES.BASIC\r\n\r\n await this._LoadFromDictInternal_Full(data);\r\n\r\n this.status = InfinityProjectStatus.STATUS_LOADED\r\n\r\n }\r\n\r\n\r\n async _LoadFromDictInternal_Full(data: any) {\r\n this.welcomeSpotUid = data[\"welcome_spot\"]\r\n this.welcomePanoramaUid = data[\"welcome_panorama\"]\r\n\r\n await Promise.all([\r\n this.Load_PanoramasFromJsonObject(data[\"panoramas\"] ?? []),\r\n this.Load_DocumentsFromJsonObject(data[\"documents\"] ?? []),\r\n this.Load_VideosFromJsonObject(data[\"videos\"] ?? []),\r\n this.Load_SoundsFromJsonObject(data[\"sounds\"] ?? []),\r\n this.Load_MeshesFromJsonObject(data[\"meshes\"] ?? []),\r\n this.Load_LabelsFromJsonObject(data[\"labels\"] ?? []),\r\n this.Load_AreasFromJsonObject(data[\"areas\"] ?? []),\r\n this.Load_ImagesFromJsonObject(data[\"images\"] ?? []),\r\n this.Load_OutlinesFromJsonObject(data[\"outlines\"] ?? []),\r\n this.Load_TwinsFromJsonObject(data[\"digital_twin\"] ?? []),\r\n this.Load_TourTasksFromJsonObject(data[\"tasks\"] ?? []),\r\n ])\r\n\r\n this.Load_QuizzesFromJsonObject(data[\"quizzes\"] ?? [])\r\n\r\n const spots = data[\"spots\"]\r\n\r\n if (spots) {\r\n spots.forEach((value: any) => {\r\n const tmpSpot = new InfinitySpot(this)\r\n tmpSpot.LoadFromJsonObject(value)\r\n this.spots.set(tmpSpot.uid, tmpSpot)\r\n })\r\n }\r\n\r\n this.spots.forEach((value) => {\r\n value.PostLoad()\r\n })\r\n\r\n\r\n }\r\n\r\n getFooterPath(): string {\r\n return \"/infinity/\" + this.uid + \"/footer.png\"\r\n }\r\n\r\n Load_QuizzesFromJsonObject(quizData: []) {\r\n for (let i = 0; i < quizData.length; i++) {\r\n const tmpQuiz = new QuizAsset()\r\n tmpQuiz.projectUid = this.uid\r\n tmpQuiz.load_from_json(quizData[i])\r\n this.quizzes.set(tmpQuiz.uid, tmpQuiz)\r\n }\r\n }\r\n\r\n async Load_OutlinesFromJsonObject(outlinesData: []) {\r\n outlinesData.forEach((value) => {\r\n const tmpOutline = new OutlineAsset()\r\n tmpOutline.projectUid = this.uid\r\n tmpOutline.fromJsonObject(value)\r\n this.outlines.set(tmpOutline.uid, tmpOutline)\r\n })\r\n }\r\n\r\n async Load_TourTasksFromJsonObject(tasksData: []) {\r\n\r\n if (this.type === INFINITY_PROJECT_TYPES.GUIDED) {\r\n\r\n for (let i = 0; i < tasksData.length; i++) {\r\n const tmpTask = new TourTaskAsset()\r\n tmpTask.projectUid = this.uid\r\n await tmpTask.load_from_json_object_async(tasksData[i])\r\n this.tasks.set(tmpTask.uid, tmpTask)\r\n this.tasks_list.push(tmpTask)\r\n }\r\n\r\n }\r\n }\r\n\r\n async Load_TwinsFromJsonObject(twinData: []) {\r\n twinData.forEach((value) => {\r\n const tmpTwin = new DigitalTwinAsset()\r\n tmpTwin.projectUid = this.uid\r\n tmpTwin.uid = value.uid\r\n tmpTwin.fromJsonObject(value)\r\n this.twins.set(tmpTwin.uid, tmpTwin)\r\n })\r\n }\r\n\r\n\r\n async Load_AreasFromJsonObject(areasData: []) {\r\n areasData.forEach((value) => {\r\n const tmpArea = new AreaAsset()\r\n tmpArea.projectUid = this.uid\r\n tmpArea.fromJsonObject(value)\r\n this.areas.set(tmpArea.uid, tmpArea)\r\n })\r\n\r\n }\r\n\r\n async Load_VideosFromJsonObject(videosData: Array) {\r\n videosData.forEach((value) => {\r\n const tmpVideo = new VideoAsset()\r\n tmpVideo.projectUid = this.uid\r\n tmpVideo.fromJsonObject(value)\r\n this.videos.set(tmpVideo.uid, tmpVideo)\r\n })\r\n }\r\n\r\n async Load_ImagesFromJsonObject(videosData: Array) {\r\n videosData.forEach((value) => {\r\n const tmpVideo = new ImageAsset()\r\n tmpVideo.projectUid = this.uid\r\n tmpVideo.fromJsonObject(value)\r\n this.images.set(tmpVideo.uid, tmpVideo)\r\n })\r\n }\r\n\r\n async Load_SoundsFromJsonObject(soundsData: Array) {\r\n soundsData.forEach((value) => {\r\n const tmpSound = new SoundAsset()\r\n tmpSound.projectUid = this.uid\r\n tmpSound.fromJsonObject(value)\r\n this.sounds.set(tmpSound.uid, tmpSound)\r\n })\r\n }\r\n\r\n async Load_DocumentsFromJsonObject(documentsData: Array) {\r\n documentsData.forEach((value) => {\r\n const tmpDocument = new DocumentAsset()\r\n tmpDocument.projectUid = this.uid\r\n tmpDocument.fromJsonObject(value)\r\n this.documents.set(tmpDocument.uid, tmpDocument)\r\n })\r\n }\r\n\r\n async Load_MeshesFromJsonObject(meshesData: Array) {\r\n meshesData.forEach((value) => {\r\n const tmpMesh = new MeshAsset()\r\n tmpMesh.projectUid = this.uid\r\n tmpMesh.fromJsonObject(value)\r\n this.meshes.set(tmpMesh.uid, tmpMesh)\r\n })\r\n }\r\n\r\n async Load_LabelsFromJsonObject(labelsData: Array) {\r\n labelsData.forEach((value) => {\r\n const tmpLabel = new LabelAsset()\r\n tmpLabel.projectUid = this.uid\r\n tmpLabel.fromJsonObject(value)\r\n this.labels.set(tmpLabel.uid, tmpLabel)\r\n })\r\n }\r\n\r\n\r\n async Load_PanoramasFromJsonObject(panoramasData: Array) {\r\n panoramasData.forEach((value) => {\r\n const tmpPanorama = new PanoramaAsset()\r\n tmpPanorama.fromJsonObject(value)\r\n tmpPanorama.projectUid = this.uid\r\n this.panoramas.set(tmpPanorama.uid, tmpPanorama)\r\n })\r\n }\r\n\r\n getSpotsJsonData() {\r\n const result = new Array()\r\n this.spots.forEach((spot) => {\r\n result.push({\r\n uid: spot.uid,\r\n name: spot.name,\r\n picture: spot.GetPanoramaAsset().getWebPreviewImage(),\r\n isActive: spot.is_previewed\r\n })\r\n })\r\n\r\n return result\r\n }\r\n\r\n getWebPreviewImage() {\r\n return `infinity/${this.uid}/Panoramas/${this.welcomePanoramaUid}/preview.png`\r\n if (this.spots.has(this.welcomeSpotUid)) {\r\n return this.spots.get(this.welcomeSpotUid).getWebPreviewImage()\r\n } else {\r\n return \"\"\r\n }\r\n\r\n }\r\n\r\n getBoardsOnFilters(type: string, filter: string) {\r\n let boards = []\r\n\r\n this.spots.forEach((value) => {\r\n boards = boards.concat(value.getBoardsOfType(type, filter))\r\n })\r\n\r\n return boards\r\n }\r\n\r\n getBoardsOnTagFilters(type: string, tag: string) {\r\n let boards = []\r\n\r\n this.spots.forEach((value) => {\r\n boards = boards.concat(value.getBoardsOnTagFilter(type, tag))\r\n })\r\n\r\n return boards\r\n }\r\n\r\n getBoardsCountOnType(type: string, filter: string) {\r\n let count = 0;\r\n\r\n this.spots.forEach((value) => {\r\n count += value.getBoardTypeCount(type)\r\n })\r\n\r\n return count\r\n }\r\n\r\n\r\n getAssetsOnFilters(filters: string[]) {\r\n let result = []\r\n filters.forEach((value) => {\r\n result = result.concat(Array.from(this.multimap.get(value).values()\r\n ))\r\n })\r\n\r\n return result\r\n }\r\n\r\n getWorld() {\r\n return this.activePlayer.worldWrapper.getWorld()\r\n }\r\n\r\n}\r\n\r\n","import axios, {AxiosRequestConfig, AxiosResponse} from \"axios\";\r\n\r\n\r\nimport {handleGlobalAppFail, lockAppBeforeResponse, unlockAppOnResponse} from \"./GlobalAppLockHelper\";\r\nimport AppBackendManager from \"./AppBackendManager\";\r\nimport {useAvailableProjectsZus} from \"../zustands/availableProjectsZus\";\r\nimport {VideoAsset} from \"../ela/assets/asset_Video\";\r\nimport {FakeProject} from \"../routes/inter_project_search_new/lightdata\";\r\nimport {INFINITY_PROJECT_TYPES, InfinityProject, InfinityProjectFetch} from \"../infinity/InfinityProject\";\r\nimport React from \"react\";\r\n\r\nexport default class ProjectsApi {\r\n\r\n static async refreshZustand() {\r\n const response = await ProjectsApi.getAllProjects()\r\n\r\n useAvailableProjectsZus.setState({availableProjects: response})\r\n\r\n return null\r\n\r\n }\r\n\r\n static async GetDocumentSasWithUid(project_uid: string, document_uid: string, extension: string): Promise {\r\n return (await axios.get(`/api/project/document-link/${project_uid}?document_uid=${document_uid}&document_ext=${extension}`)).data\r\n }\r\n\r\n static async getProjectWithUid(project_uid: string): Promise {\r\n const projectPath = \"/infinity/\" + project_uid + \"/project_data.json\"\r\n\r\n const response = await axios.get(projectPath)\r\n\r\n const project = new InfinityProject()\r\n\r\n await project.load_from_json_async(response.data)\r\n\r\n return project\r\n\r\n\r\n }\r\n\r\n static async refreshProjects(autoAppLock = false) {\r\n\r\n const request = axios.put(\"/api/projects/refreshprojectstable\")\r\n\r\n request.catch(handleGlobalAppFail)\r\n\r\n if (autoAppLock) {\r\n lockAppBeforeResponse()\r\n\r\n request.then(unlockAppOnResponse)\r\n }\r\n\r\n return await request\r\n\r\n }\r\n\r\n static async getSearchableProject(project_id): Promise {\r\n if (AppBackendManager.isBackendAvailable) {\r\n const response = await axios.get(`/search/search_cache.json?project_uid=${project_id}`)\r\n const project = new FakeProject()\r\n project.load_from_json(response.data)\r\n return project\r\n } else {\r\n const response = await axios.get(`/infinity/${project_id}/search_cache.json`)\r\n const project = new FakeProject()\r\n project.load_from_json(response.data)\r\n return project\r\n\r\n }\r\n }\r\n\r\n static async getSearchCache(): Promise> {\r\n const response = await axios.get(`/api/search/search_all_cache`)\r\n\r\n const projects = []\r\n\r\n response.data.projects.map((data) => {\r\n const project = new FakeProject()\r\n project.load_from_json(data)\r\n projects.push(project)\r\n })\r\n\r\n return projects\r\n }\r\n\r\n static async getProjectStats(project_id: string): Promise {\r\n return await axios.get(`/search/project_stats.json?project_uid=${project_id}`)\r\n }\r\n\r\n static async getProjectStatsOfProjectOf(project_type: number): Promise> {\r\n return (await axios.get(`/search/projects-stats?type=${project_type}`)).data.projects\r\n }\r\n\r\n static async getVideoSas(videoAsset: VideoAsset) {\r\n return await axios.get(`/api/project/video-link/${videoAsset.projectUid}?video_uid=${videoAsset.uid}&video_extension=${videoAsset.file_extension}`)\r\n }\r\n\r\n static async getAllProjects(): Promise> {\r\n const response = await axios.get(\"/infinity/projects.json\")\r\n\r\n\r\n const projects = response.data.projects ?? []\r\n\r\n projects.forEach((value) => {\r\n if (!value.ProjectType) {\r\n value.ProjectType = INFINITY_PROJECT_TYPES.BASIC\r\n }\r\n })\r\n\r\n return projects\r\n }\r\n\r\n static async getAllProjectsOfType(type: number): Promise> {\r\n const response = await axios.get(`/api/project/get-all-projects-of-type?type=${type}`)\r\n\r\n return response.data.projects ?? []\r\n }\r\n\r\n\r\n static async changeProjectGroup(projectId: string, groupId: string) {\r\n\r\n const formData = new FormData()\r\n formData.set(\"project_id\", projectId)\r\n formData.set(\"group_id\", groupId)\r\n\r\n return await axios.put(\"/api/projects/change_project_group\", formData).catch(handleGlobalAppFail)\r\n\r\n }\r\n\r\n static async checkProjectExistence(projectId: string): Promise> {\r\n return await axios.get(`/api/projects/checkprojectexistence?project_id=${projectId}`)\r\n\r\n }\r\n\r\n static async postFile(file: File, options) {\r\n const formData = new FormData()\r\n formData.append(\"file\", file)\r\n return await axios.post(\"/api/projects/uploadprojectfile\", formData, options)\r\n }\r\n\r\n static async PrepareFileChunk(file: File, chunkOffset: number, chunk: any) {\r\n const formData = new FormData()\r\n\r\n formData.append(\"file\", new Blob([chunk]))\r\n\r\n const config: AxiosRequestConfig = {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n \"X-Offset\": chunkOffset\r\n }\r\n }\r\n\r\n\r\n return await axios.post(\"/api/projects/upload-file-chunk\", formData, config)\r\n }\r\n\r\n\r\n static async reserveProjectUpload(file: File, group: string) {\r\n const _group = group !== \"\" ? `group=${group}` : \"\"\r\n const formData = new FormData()\r\n formData.append(\"file\", file)\r\n return await axios.post(`/api/projects/preprare-project-upload?${_group}`, formData)\r\n }\r\n\r\n static async getFilesDif(projectUid: string, files: Array): Promise> {\r\n const form = new FormData()\r\n form.set(\"files_list\", files)\r\n const response = await axios.put(`/api/projects/remove-existing-files?project_id=${projectUid}`, form)\r\n return response.data.to_remove\r\n }\r\n\r\n static async changeLatLon(project_uid: string, lat: number, lot: number) {\r\n return await axios.put(`/api/projects/changelatlon?project_id=${project_uid}&lat=${lat}&lon=${lot}`)\r\n }\r\n\r\n static async changeProjectName(project_uid: string, name: string) {\r\n return await axios.put(`/api/projects/change-project-name?project_id=${project_uid}&new_name=${name}`)\r\n }\r\n\r\n static async GetAllProjectsOfType(type: number): Promise> {\r\n const data = await axios.get(`/api/project/get-all-projects-of-type?type=${type}`)\r\n return data.data.projects\r\n }\r\n\r\n static async GetProjectJson(projectUid: string) {\r\n await axios.get(`/api/project/get-project-data?project_uid=${projectUid}`)\r\n }\r\n\r\n}\r\n\r\nexport function useAvailableProjects(): [Array, boolean] {\r\n\r\n const [isLoading, setIsLoading] = React.useState(true)\r\n\r\n const [projects, setProjects] = React.useState>([])\r\n\r\n React.useEffect(() => {\r\n setIsLoading(true)\r\n ProjectsApi.getAllProjects().then((value) => {\r\n setProjects(value)\r\n setIsLoading(false)\r\n })\r\n }, [])\r\n\r\n return [projects, isLoading]\r\n\r\n}\r\n\r\nexport function useAvailableProjectsByType(type: number): [Array, boolean] {\r\n\r\n const [isLoading, setIsLoading] = React.useState(true)\r\n\r\n const [projects, setProjects] = React.useState>([])\r\n\r\n React.useEffect(() => {\r\n setIsLoading(true)\r\n ProjectsApi.getAllProjectsOfType(type).then((value) => {\r\n setProjects(value)\r\n setIsLoading(false)\r\n })\r\n }, [])\r\n\r\n return [projects, isLoading]\r\n\r\n}","import React from \"react\";\r\n\r\nimport * as three from \"three\";\r\n\r\nimport {ListGroup} from \"react-bootstrap\";\r\n\r\n\r\nimport {InfinityBoardParent} from \"./board_Parent\";\r\n\r\nimport {VideoPlayer} from \"../../gui/content_players/video/VideoPlayer\";\r\n\r\n\r\nimport {VideoAsset} from \"../../ela/assets/asset_Video\";\r\n\r\nimport {TWEEN} from \"three/examples/jsm/libs/tween.module.min\";\r\n\r\nimport ProjectsApi from \"../../api/ProjectsApi\";\r\n\r\nimport AppBackendManager from \"../../api/AppBackendManager\";\r\n\r\nimport {GuidedTourManager} from \"../../zustands/activeTestTourZus\";\r\n\r\n\r\nclass InWorldVideoController {\r\n\r\n\r\n constructor(videoPlane: three.Mesh,\r\n videoBoard: InfinityVideoBoard,\r\n aspect_x, aspect_y,\r\n close_btn_color,\r\n onRewind: number,\r\n onClose) {\r\n this.onRewind = onRewind\r\n\r\n const posY = -0.55\r\n\r\n this.allgroup = new three.Group()\r\n videoPlane.add(this.allgroup)\r\n\r\n if (videoBoard.controls_enabled) {\r\n\r\n const backgroundMaterial = new three.MeshBasicMaterial({\r\n color: new three.Color(\"black\"),\r\n transparent: true,\r\n opacity: 0.5,\r\n })\r\n const backgroundGeometry = new three.PlaneGeometry()\r\n\r\n const backgroundMesh = new three.Mesh(backgroundGeometry, backgroundMaterial)\r\n backgroundMesh.scale.set(1, 0.05, 0.0015)\r\n backgroundMesh.position.y = posY\r\n backgroundMesh.userData[\"handler\"] = this\r\n\r\n this.allgroup.add(backgroundMesh)\r\n\r\n const sliderMaterial = new three.MeshBasicMaterial({color: new three.Color(\"gray\")})\r\n\r\n const sliderGeometry = new three.BoxGeometry()\r\n const sliderMesh = new three.Mesh(sliderGeometry, sliderMaterial)\r\n sliderMesh.scale.set(1, 0.005, 0.0025)\r\n sliderMesh.position.y = posY\r\n this.allgroup.add(sliderMesh)\r\n\r\n this.handleMaterial = new three.MeshBasicMaterial({\r\n color: new three.Color(\"gray\")\r\n })\r\n\r\n const handleGeometry = new three.SphereGeometry()\r\n this.handleMesh = new three.Mesh(handleGeometry, this.handleMaterial)\r\n this.handleMesh.scale.set(0.01, 0.01, 0.01)\r\n this.handleMesh.position.y = posY\r\n //handleMesh.position.x = (-aspect_x + (aspect_x * 0.97)) / 2\r\n this.handleMesh.position.x = (-aspect_x) / 2\r\n\r\n this.handleStartReference = new three.Object3D()\r\n this.handleStartReference.position.x = (-aspect_x) / 2\r\n\r\n this.handleEndReference = new three.Object3D()\r\n this.handleEndReference.position.x = (aspect_x) / 2\r\n\r\n this.allgroup.add(this.handleEndReference)\r\n\r\n this.allgroup.add(this.handleEndReference)\r\n\r\n this.allgroup.add(this.handleMesh)\r\n\r\n const progressGroup = new three.Group()\r\n\r\n const progressGeometry = new three.BoxGeometry()\r\n const progressMesh = new three.Mesh(progressGeometry, this.handleMaterial)\r\n progressMesh.position.x = 0.5\r\n\r\n progressGroup.add(progressMesh)\r\n\r\n\r\n progressMesh.scale.set(1, 0.005, 0.0025)\r\n progressMesh.position.x = -aspect_x / 2\r\n progressMesh.position.y = progressMesh\r\n\r\n\r\n this.allgroup.add(progressGroup)\r\n this.allgroup.visible = false\r\n\r\n }\r\n\r\n if (videoBoard.closeEnabled) {\r\n\r\n const closeBtn = this.createCloseButton(onClose, close_btn_color)\r\n\r\n const closeBtnSize = 0.05\r\n\r\n closeBtn.root.scale.set(closeBtnSize, closeBtnSize, closeBtnSize)\r\n closeBtn.root.position.x = (aspect_x * 0.5) - (closeBtnSize * 0.5)\r\n closeBtn.root.position.z = 0.0015\r\n closeBtn.root.position.y = -posY - (closeBtnSize * 1.5)\r\n\r\n\r\n this.allgroup.add(closeBtn.root)\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n unhide() {\r\n this.allgroup.visible = true\r\n }\r\n\r\n hide() {\r\n this.allgroup.visible = false\r\n }\r\n\r\n updateSlideHandle(percentage: number) {\r\n if (this.handleMesh) {\r\n this.handleMesh.position.x = percentage - 0.5\r\n }\r\n\r\n }\r\n\r\n isSelected(intersection: three.Intersection) {\r\n return true\r\n }\r\n\r\n setSelected() {\r\n this.handleMaterial.color = new three.Color(\"blue\")\r\n }\r\n\r\n setDeselected() {\r\n this.handleMaterial.color = new three.Color(\"gray\")\r\n }\r\n\r\n clicked(intersection: three.Intersection) {\r\n GuidedTourManager.taskBoardClicked(this, 1)\r\n const uvIntersection = intersection.uv\r\n this.onRewind(uvIntersection.x)\r\n\r\n }\r\n\r\n\r\n createCloseButton(onClicked, close_btn_color: three.Vector3) {\r\n class CloseButton {\r\n constructor() {\r\n this.btnColor = new three.Color(close_btn_color.x * 255, close_btn_color.y * 255, close_btn_color.z * 255)\r\n this.material = new three.MeshBasicMaterial({\r\n color: this.btnColor,\r\n side: three.DoubleSide,\r\n transparent: true,\r\n depthWrite: false,\r\n map: new three.TextureLoader().load(\"/assets/icons/Core.Close.png\")\r\n })\r\n\r\n const planeG = new three.PlaneGeometry()\r\n const planeM = new three.Mesh(planeG, this.material)\r\n planeM.userData[\"handler\"] = this\r\n\r\n this.root = new three.Group()\r\n this.root.add(planeM)\r\n\r\n }\r\n\r\n\r\n isSelected(intersection: three.Intersection) {\r\n return true\r\n }\r\n\r\n setSelected() {\r\n this.material.color = new three.Color(\"blue\")\r\n }\r\n\r\n setDeselected() {\r\n this.material.color = this.btnColor\r\n }\r\n\r\n clicked(intersection: three.Intersection) {\r\n if (onClicked) {\r\n onClicked()\r\n }\r\n }\r\n }\r\n\r\n const closeButton = new CloseButton()\r\n\r\n\r\n return closeButton\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nconst VideoPlayerComponent = ({asset, onEnded, onclose}) => {\r\n\r\n const _asset: VideoAsset = asset\r\n\r\n const [visible, setVisible] = React.useState(true)\r\n\r\n const [src, setSrc] = React.useState(\"\")\r\n\r\n React.useEffect(() => {\r\n if (AppBackendManager.isBackendAvailable) {\r\n\r\n ProjectsApi.getVideoSas(_asset.projectUid, _asset.uid, _asset.file_extension)\r\n } else {\r\n setSrc(_asset.getAbsolutePath())\r\n }\r\n }\r\n )\r\n\r\n React.useEffect(() => {\r\n ProjectsApi.getVideoSas(_asset).then((result) => {\r\n setSrc(result.data)\r\n })\r\n }, [])\r\n\r\n\r\n return (\r\n <>\r\n {\r\n visible && \r\n {\r\n src !== \"\" &&\r\n {\r\n setVisible(false)\r\n onclose()\r\n }}\r\n videoPath={src}\r\n onEnded={onEnded}\r\n />\r\n }\r\n\r\n\r\n \r\n }\r\n \r\n\r\n )\r\n\r\n}\r\n\r\nexport class InfinityVideoBoard extends InfinityBoardParent {\r\n\r\n type = \"video\"\r\n\r\n f: three.Vector3 = null\r\n t: three.Vector3 = null\r\n r: three.Vector3 = null\r\n\r\n activeVideoGroup: three.Group = null\r\n activeVideoPlane: three.Mesh = null\r\n\r\n\r\n videoController: InWorldVideoController = null\r\n\r\n controls_enabled: boolean = false\r\n\r\n loopingEnabled: boolean = false\r\n\r\n constructor(spot) {\r\n super(spot)\r\n this.icon = \"EI.Video\"\r\n\r\n this.maximalizedPosition = new three.Vector3()\r\n this.maximalizedScale = new three.Vector3(0, 0, 0)\r\n\r\n\r\n this.theatreModeEnabled = false\r\n\r\n // super.webTransparencySafe = true\r\n }\r\n\r\n\r\n loadFromJsonObject(object) {\r\n super.loadFromJsonObject(object)\r\n const multiplyScale = new three.Vector3(300, 300, 300)\r\n\r\n const pose = object[\"manual_position\"]\r\n this.f = pose[\"f\"]\r\n this.t = pose[\"t\"]\r\n this.r = pose[\"r\"]\r\n\r\n\r\n this.close_button_color = object[\"close_button_color\"] ?? {x: 1, y: 1, z: 1}\r\n\r\n this.maximalizedPosition.copy(this.position)\r\n this.maximalizedPosition.multiply(multiplyScale)\r\n\r\n this.maximalizedPosition.applyAxisAngle(new three.Vector3(0, 1, 0), this.parentSpot.spotRotation.y)\r\n\r\n this.maximalizedScale.copy(this.scale)\r\n this.maximalizedScale.multiply(multiplyScale)\r\n\r\n this.theatreModeEnabled = object[\"theatre_mode\"]\r\n this.controls_enabled = object[\"controls_enabled\"]\r\n\r\n this.loopingEnabled = object[\"looping_enabled\"]\r\n }\r\n\r\n isContentValid(): boolean {\r\n return this.getVideoAsset()\r\n }\r\n\r\n\r\n videoPlayEnded() {\r\n\r\n\r\n super.fillBoardVisited(1)\r\n\r\n if (this.activeVideoGroup) {\r\n\r\n const aScale = this.activeVideoGroup.scale\r\n\r\n if (this.videoController) {\r\n this.videoController.hide()\r\n }\r\n\r\n new TWEEN.Tween({\r\n x: aScale.x, y: aScale.y, z: aScale.z\r\n }).to({x: 0.05, y: 0.05, z: 0.05}, 1000).onUpdate((newValue) => {\r\n\r\n if (newValue.x < this.maximalizedScale.x) {\r\n this.activeVideoPlane.visible = false\r\n }\r\n\r\n this.activeVideoGroup.scale.copy(newValue)\r\n }).onComplete(() => {\r\n\r\n if (this.autoUnpack === false) {\r\n this.clickableIcon.getRoot().visible = true\r\n } else {\r\n super.fillToWorld(this.parentSpot.parentProject.getWorld())\r\n }\r\n\r\n }).start()\r\n }\r\n }\r\n\r\n setVisibilityStatus(status: boolean) {\r\n if (this.isOpenedInWorld) {\r\n this.activeVideoGroup.visible = status\r\n } else {\r\n super.setVisibilityStatus(status)\r\n }\r\n }\r\n\r\n\r\n isVisible(): boolean {\r\n if (this.isOpenedInWorld) {\r\n return this.activeVideoGroup.visible\r\n } else {\r\n return super.isVisible();\r\n }\r\n }\r\n\r\n\r\n step() {\r\n if (this.videoController) {\r\n const videoElement = this.getVideoElement()\r\n\r\n if (videoElement) {\r\n if (videoElement.duration != 0) {\r\n this.videoController.updateSlideHandle(videoElement.currentTime / videoElement.duration)\r\n }\r\n }\r\n }\r\n }\r\n\r\n clicked() {\r\n\r\n\r\n const world = this.getActivePlayer().worldWrapper.getWorld()\r\n if (world.renderer.xr.isPresenting) {\r\n world.enterTheatreMode()\r\n world.activeTheatreController = this\r\n\r\n this.clickableIcon.getRoot().visible = false\r\n this.fillInWorldPanel(world.theatreGroup, () => {\r\n if (this.loopingEnabled) {\r\n this.getVideoElement().play()\r\n\r\n } else {\r\n this.getVideoElement().pause()\r\n this.videoPlayEnded()\r\n world.leaveTheatreMode()\r\n }\r\n\r\n })\r\n } else {\r\n if (this.showAsPopup) {\r\n const videoComponent = this.getPlayerComponent()\r\n if (videoComponent) {\r\n this.playInModalHud(videoComponent)\r\n }\r\n } else {\r\n if (this.theatreModeEnabled) {\r\n world.enterTheatreMode(() => {\r\n this.fillInWorldPanel(world.theatreGroup, () => {\r\n if (this.loopingEnabled) {\r\n this.getVideoElement().play()\r\n } else {\r\n this.videoPlayEnded()\r\n world.leaveTheatreMode()\r\n }\r\n\r\n\r\n })\r\n })\r\n world.activeTheatreController = this\r\n } else {\r\n this.clickableIcon.getRoot().visible = false\r\n this.fillInWorldPanel(world.secondaryNotRotatedGroup, () => {\r\n\r\n this.getVideoElement().pause()\r\n this.videoPlayEnded()\r\n })\r\n }\r\n }\r\n }\r\n }\r\n\r\n CleanUp() {\r\n this.getVideoElement().pause()\r\n this.removeVideoElement()\r\n }\r\n\r\n leaveTheatreModeRequested() {\r\n const element = this.getVideoElement()\r\n\r\n if (element) {\r\n this.getVideoElement().pause()\r\n this.videoPlayEnded()\r\n }\r\n\r\n }\r\n\r\n fillToWorld(world: World) {\r\n this.createVideoElement()\r\n\r\n if (this.autoUnpack) {\r\n\r\n this.fillInWorldPanel(world.secondaryNotRotatedGroup, () => {\r\n\r\n if (this.loopingEnabled) {\r\n this.getVideoElement().play()\r\n } else {\r\n this.videoPlayEnded()\r\n }\r\n })\r\n } else {\r\n super.fillToWorld(world)\r\n }\r\n }\r\n\r\n removeVideoElement() {\r\n this.getVideoElement().remove()\r\n }\r\n\r\n createVideoElement() {\r\n\r\n const myVideoElement = document.getElementById(`video-${this.uid}`)\r\n\r\n if (myVideoElement) {\r\n\r\n } else {\r\n const videosRoot = document.getElementById(\"videosroot\")\r\n\r\n const video: HTMLVideoElement = document.createElement(\"video\")\r\n video.id = `video-${this.uid}`\r\n video.crossOrigin = true\r\n video.playsInline = true\r\n video.preload = \"auto\"\r\n video.muted = true\r\n video.style.display = \"none\"\r\n\r\n const source = document.createElement(\"source\")\r\n source.id = `video-source-${this.uid}`\r\n\r\n video.appendChild(source)\r\n\r\n videosRoot.appendChild(video)\r\n }\r\n }\r\n\r\n getVideoElement(): HTMLVideoElement {\r\n return document.getElementById(`video-${this.uid}`)\r\n }\r\n\r\n getVideoSource(): HTMLElement {\r\n return document.getElementById(`video-source-${this.uid}`)\r\n }\r\n\r\n fillInWorldPanel(group: three.Group, onEnded) {\r\n\r\n const videoAsset: VideoAsset = this.getParentProject().videos.get(this.contentUid)\r\n\r\n if (videoAsset) {\r\n\r\n const videoElement = this.getVideoElement()\r\n const videoSource = this.getVideoSource()\r\n\r\n\r\n //Nezabudnut nastavi http://localhost:3000 na CORS storagu\r\n // if (false) {\r\n if (AppBackendManager.isBackendAvailable) {\r\n ProjectsApi.getVideoSas(videoAsset).then((value) => {\r\n videoSource.setAttribute(\"src\", value.data)\r\n videoSource.setAttribute(\"type\", `video/${videoAsset.file_extension}`)\r\n\r\n try {\r\n videoElement.load()\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n\r\n })\r\n } else {\r\n videoSource.setAttribute(\"src\", videoAsset.getAbsolutePath())\r\n videoSource.setAttribute(\"type\", `video/${videoAsset.file_extension}`)\r\n\r\n try {\r\n videoElement.load()\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n\r\n if (this.activeVideoGroup) {\r\n this.activeVideoGroup.scale.set(0, 0, 0)\r\n\r\n } else {\r\n\r\n const videoGroup = new three.Group()\r\n\r\n if (onEnded) {\r\n videoElement.addEventListener('ended', onEnded)\r\n }\r\n\r\n const videoTexture = new three.VideoTexture(videoElement)\r\n //videoTexture.encoding = three.sRGBEncoding\r\n const material = new three.MeshBasicMaterial({\r\n map: videoTexture,\r\n side: three.DoubleSide,\r\n });\r\n\r\n const backgroundGeometry = new three.PlaneGeometry(1, 1);\r\n\r\n const backgroundMesh = new three.Mesh(backgroundGeometry, new three.MeshBasicMaterial({\r\n color: new three.Color(\"black\"),\r\n transparent: true,\r\n opacity: 0.25,\r\n side: three.DoubleSide,\r\n }))\r\n backgroundMesh.position.z = -0.0015\r\n\r\n const geometry = new three.PlaneGeometry();\r\n\r\n const videoPlane = new three.Mesh(geometry, material);\r\n videoPlane.visible = false\r\n\r\n this.activeVideoPlane = videoPlane\r\n\r\n if (this.controls_enabled || this.closeEnabled) {\r\n\r\n this.videoController = new InWorldVideoController(\r\n videoGroup,\r\n this,\r\n videoAsset.video_ratio_x,\r\n videoAsset.video_ratio_y,\r\n this.close_button_color,\r\n\r\n (newDuration) => {\r\n videoElement.currentTime = videoElement.duration * newDuration\r\n },\r\n () => {\r\n\r\n this.getVideoElement().pause()\r\n this.videoPlayEnded()\r\n if (this.theatreModeEnabled) {\r\n this.getActivePlayer().worldWrapper.leaveTheatreMode()\r\n }\r\n })\r\n }\r\n\r\n videoGroup.add(backgroundMesh)\r\n\r\n videoPlane.position.copy(this.maximalizedPosition)\r\n videoGroup.position.copy(this.maximalizedPosition)\r\n\r\n if (this.use_automatic_rotation) {\r\n videoGroup.lookAt(new three.Vector3(0, this.maximalizedPosition.y, 0))\r\n videoPlane.lookAt(new three.Vector3(0, this.maximalizedPosition.y, 0))\r\n } else {\r\n const rotationMatrix = new three.Matrix4()\r\n\r\n rotationMatrix.set(\r\n this.f.x, this.t.x, this.r.x, 0,\r\n this.f.y, this.t.y, this.r.y, 0,\r\n this.f.z, this.t.z, this.r.z, 0,\r\n 0, 0, 0, 1\r\n )\r\n\r\n videoPlane.rotation.setFromRotationMatrix(rotationMatrix)\r\n videoGroup.rotation.setFromRotationMatrix(rotationMatrix)\r\n videoGroup.updateMatrixWorld(true)\r\n videoPlane.updateMatrixWorld(true)\r\n\r\n }\r\n\r\n this.activeVideoGroup = videoGroup\r\n\r\n }\r\n\r\n group.add(this.activeVideoGroup)\r\n group.add(this.activeVideoPlane)\r\n\r\n\r\n const mscale = this.maximalizedScale\r\n\r\n\r\n this.activeVideoPlane.visible = true\r\n\r\n new TWEEN.Tween({x: 0.05, y: 0.05, z: 0.05}).to({\r\n x: mscale.x,\r\n y: mscale.y,\r\n z: mscale.z\r\n }, 1000).onUpdate((newValue) => {\r\n\r\n this.activeVideoGroup.scale.copy(newValue)\r\n }).onComplete(() => {\r\n\r\n let finalScaleX = 1\r\n let finalScaleY = 1\r\n\r\n const scaleX = this.maximalizedScale.x\r\n const scaleY = this.maximalizedScale.y\r\n\r\n const aspectX = videoAsset.video_ratio_x\r\n const aspectY = videoAsset.video_ratio_y\r\n\r\n if (aspectX > aspectY) {\r\n if (scaleX > scaleY) {\r\n if ((scaleX * 0.575) > scaleY) {\r\n finalScaleX = scaleY / aspectY\r\n finalScaleY = scaleY\r\n } else {\r\n finalScaleX = scaleX\r\n finalScaleY = scaleX * aspectY\r\n }\r\n } else if (scaleX < scaleY) {\r\n finalScaleX = scaleX\r\n finalScaleY = scaleX * aspectY\r\n } else {\r\n finalScaleX = scaleX * aspectX\r\n finalScaleY = scaleY * aspectY\r\n }\r\n\r\n\r\n } else if (aspectX === aspectY) {\r\n //Video je stvorec\r\n if (scaleX > scaleY) {\r\n finalScaleX = scaleY\r\n finalScaleY = scaleY\r\n } else if (scaleX < scaleY) {\r\n finalScaleX = scaleX\r\n finalScaleY = scaleX\r\n } else {\r\n finalScaleX = scaleX\r\n finalScaleY = scaleX\r\n }\r\n\r\n } else if (aspectX < aspectY) {\r\n //Video je na vysku\r\n if (scaleX > scaleY) {\r\n finalScaleX = scaleY * aspectX\r\n finalScaleY = scaleY\r\n } else if (scaleX < scaleY) {\r\n finalScaleX = scaleX\r\n finalScaleY = scaleX * aspectY\r\n } else {\r\n finalScaleX = scaleY * aspectX\r\n finalScaleY = scaleY\r\n }\r\n }\r\n\r\n\r\n this.activeVideoPlane.scale.x = finalScaleX\r\n this.activeVideoPlane.scale.y = finalScaleY\r\n\r\n this.activeVideoPlane.visible = true\r\n\r\n if (this.videoController) {\r\n this.videoController.unhide()\r\n }\r\n\r\n try {\r\n this.getVideoElement().play()\r\n } catch (e) {\r\n console.error(\"Failed to play video because of:\")\r\n console.error(e)\r\n }\r\n\r\n\r\n }).start()\r\n\r\n\r\n }\r\n }\r\n\r\n setVideoProgressPercentages(percentages: number) {\r\n\r\n }\r\n\r\n getPlayerComponent() {\r\n const asset = this.getParentProject().videos.get(this.contentUid)\r\n\r\n if (asset) {\r\n return {\r\n this.playInModalHud(null)\r\n }}\r\n onEnded={() => {\r\n super.fillBoardVisited(1)\r\n }}\r\n\r\n />\r\n } else {\r\n return null\r\n }\r\n\r\n }\r\n\r\n getRightClickOptions() {\r\n return <>\r\n {\r\n super.getRightClickOptions()\r\n }\r\n Open in new window\r\n \r\n }\r\n\r\n getVideoAsset(): VideoAsset {\r\n return this.getParentProject().videos.get(this.contentUid)\r\n }\r\n\r\n openInNewWindow = () => {\r\n const video = this.getVideoAsset()\r\n if (video) {\r\n window.open(video.getAbsolutePath(), \"_blank\")\r\n }\r\n }\r\n\r\n getWebPreviewImage() {\r\n const video = this.getVideoAsset()\r\n if (video) {\r\n return video.getWebPreviewImage()\r\n } else {\r\n return \"\"\r\n }\r\n }\r\n}\r\n\r\n","import {InfinityBoardParent} from \"./board_Parent\";\r\n\r\nimport * as three from \"three\"\r\nimport {StaticIncludes} from \"../../static_includes\";\r\nimport * as Bs from \"react-bootstrap\";\r\nimport React from \"react\";\r\nimport {SoundAsset} from \"../../ela/assets/asset_Sound\";\r\nimport {GuidedTourManager} from \"../../zustands/activeTestTourZus\";\r\n\r\nexport class InfinitySoundBoard extends InfinityBoardParent {\r\n\r\n static ACTIVE_SOUND: three.Audio | any = null\r\n\r\n type = \"sound\"\r\n\r\n constructor(spot) {\r\n super(spot)\r\n this.icon = \"EI.SoundBoard\"\r\n\r\n this.activeTimeout = null\r\n }\r\n\r\n loadFromJsonObject(object) {\r\n super.loadFromJsonObject(object)\r\n }\r\n\r\n\r\n clicked() {\r\n\r\n GuidedTourManager.taskBoardClicked(this, 1)\r\n\r\n\r\n if (InfinitySoundBoard.ACTIVE_SOUND) {\r\n this.iconPlane.material.map = StaticIncludes._instnace.GetTexture(this.icon)\r\n InfinitySoundBoard.ACTIVE_SOUND.stop()\r\n InfinitySoundBoard.ACTIVE_SOUND = null\r\n\r\n if (this.activeTimeout) {\r\n clearTimeout(this.activeTimeout)\r\n this.activeTimeout = null\r\n }\r\n\r\n } else {\r\n super.clicked()\r\n super.fillBoardVisited(1)\r\n\r\n const soundAsset = this.getSoundAsset()\r\n\r\n if (soundAsset) {\r\n\r\n const listener = new three.AudioListener();\r\n InfinitySoundBoard.ACTIVE_SOUND = new three.Audio(listener);\r\n\r\n\r\n this.iconPlane.material.map = StaticIncludes._instnace.GetTexture(\"Core.Pause\")\r\n\r\n const soundPath = soundAsset.getAbsolutePath()\r\n\r\n const audioLoader = new three.AudioLoader();\r\n audioLoader.load(soundPath, (buffer) => {\r\n const activeSound = InfinitySoundBoard.ACTIVE_SOUND\r\n\r\n activeSound.setBuffer(buffer);\r\n activeSound.setLoop(false);\r\n activeSound.setVolume(1);\r\n activeSound.play();\r\n activeSound.onAfterRender()\r\n\r\n this.activeTimeout = setTimeout(() => {\r\n this.iconPlane.material.map = StaticIncludes._instnace.GetTexture(this.icon)\r\n }, 1000 * buffer.duration)\r\n\r\n })\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n CleanUp() {\r\n if (InfinitySoundBoard.ACTIVE_SOUND) {\r\n InfinitySoundBoard.ACTIVE_SOUND.stop()\r\n InfinitySoundBoard.ACTIVE_SOUND = null\r\n }\r\n }\r\n\r\n isContentValid(): boolean {\r\n return this.getSoundAsset()\r\n }\r\n\r\n getSoundAsset(): SoundAsset {\r\n return this.getParentProject().sounds.get(this.contentUid)\r\n }\r\n\r\n\r\n getRightClickOptions() {\r\n return <>\r\n {\r\n super.getRightClickOptions()\r\n }\r\n Open in new window\r\n \r\n }\r\n\r\n openInNewWindow = () => {\r\n const sound = this.getParentProject().sounds.get(this.contentUid)\r\n if (sound) {\r\n window.open(sound.getAbsolutePath(), \"_blank\")\r\n }\r\n }\r\n\r\n\r\n}","import Card from \"@mui/material/Card\";\r\nimport CardMedia from \"@mui/material/CardMedia\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport {Button} from \"react-bootstrap\";\r\nimport CardContent from \"@mui/material/CardContent\";\r\n\r\nimport {CardActions, Typography} from \"@mui/material\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport {InfinityButton} from \"./InfinityButton\";\r\nimport {ButtonProps} from \"react-bootstrap/Button\";\r\n\r\nconst IGui = {\r\n T: useTranslation,\r\n Card: Card,\r\n CardHeader: CardHeader,\r\n CardMedia: CardMedia,\r\n CardContent: CardContent,\r\n CardActions: CardActions,\r\n Typography: Typography,\r\n Button: InfinityButton,\r\n BButton: Button as React.FC\r\n\r\n}\r\n\r\n\r\nexport default IGui","import {ButtonProps} from \"@mui/material\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport Button from \"@mui/material/Button\";\r\n\r\ninterface _InfinityButtonProps extends ButtonProps {\r\n label?: string\r\n}\r\n\r\n\r\nexport function InfinityButton(props: _InfinityButtonProps | any) {\r\n\r\n const [t] = useTranslation()\r\n\r\n const _label = props.label ? props.label : \"\"\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import React from \"react\";\r\nimport * as Bs from \"react-bootstrap\";\r\n\r\n\r\nimport \"./QuizView.css\"\r\n\r\nimport IGui from \"../../../components/IGui\";\r\nimport {TextAnswer} from \"../../../ela/quiz/TextQuestion\";\r\n\r\n\r\nconst EvaluatedButton = (props) => {\r\n\r\n const answer: TextAnswer = props.answer\r\n\r\n let color = \"black\"\r\n\r\n if (answer.isSelected && answer.validity) {\r\n color = \"lightgreen\"\r\n //color = \"#CAFFCA\"\r\n } else if (answer.isSelected && (answer.validity == false)) {\r\n color = \"red\"\r\n //color = \"#FFB3A0\"\r\n } else if ((answer.isSelected == false) && answer.validity) {\r\n color = \"lightgreen\"\r\n //color = \"#FFCC00\"\r\n }\r\n\r\n const type = props.isSingle ? \"radio\" : \"checkbox\"\r\n\r\n return (\r\n \r\n
\r\n \r\n {props.index + 1}. {props.answer.text}\r\n
\r\n
\r\n )\r\n}\r\n\r\n\r\nconst MultiAnswerButton = (props) => {\r\n\r\n const [checked, setChecked] = React.useState(props.answer.isSelected)\r\n\r\n const swapPressed = () => {\r\n const finalStatus = !props.answer.isSelected\r\n props.answer.isSelected = finalStatus\r\n setChecked(finalStatus)\r\n }\r\n const isEvaluationMode = props.isEvaluationMode\r\n\r\n if (isEvaluationMode) {\r\n return \r\n } else {\r\n return \r\n \r\n {props.index + 1}. {props.answer.text}\r\n \r\n }\r\n}\r\n\r\nconst SingleAnswerButton = (props) => {\r\n if (props.isEvaluationMode) {\r\n return \r\n } else {\r\n return (\r\n {\r\n props.onClick(props.answer)\r\n }}\r\n value={props.index}>\r\n {\r\n props.onClick(props.answer)\r\n }}\r\n />\r\n\r\n {props.index + 1}. {props.answer.text}\r\n\r\n \r\n )\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport function TextQuestionView(props: any) {\r\n\r\n\r\n const [answers, setAnswers] = React.useState(props.activeQuestion.answers)\r\n\r\n function singleAnswerClicked(answer) {\r\n answers.forEach((value) => {\r\n value.isSelected = false\r\n answer.isSelected = true\r\n })\r\n\r\n setAnswers({answers: answers})\r\n }\r\n\r\n\r\n const isMultiAnswer = props.activeQuestion.isMultiAnswer\r\n const isInEvaluationMode = props.isEvaluationMode\r\n\r\n return (\r\n
\r\n {\r\n props.activeQuestion.answers.map((answer: TextAnswer, index) => {\r\n return (\r\n \r\n \r\n {isMultiAnswer ?\r\n \r\n : \r\n }\r\n \r\n\r\n \r\n )\r\n })\r\n }\r\n
\r\n )\r\n\r\n\r\n}","import React, {useState} from 'react';\r\n\r\nimport \"./ImagePopup.css\"\r\n\r\nfunction ImageZoom({src, onClick}) {\r\n const [zoomed, setZoomed] = useState(true);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ImageZoom;","import React from \"react\";\r\nimport * as Bs from \"react-bootstrap\";\r\nimport {ImageAnswer, ImageQuestion} from \"../../../ela/assets/asset_Quiz\";\r\n\r\n\r\nimport \"./QuizPlayer.css\"\r\nimport {InfinityProject} from \"../../../infinity/InfinityProject\";\r\nimport {useGlobalPopup} from \"../../../zustands/globalPopupZus\";\r\nimport {InfinityModal} from \"../../../components/modals\";\r\nimport ImageZoom from \"./ImagePopup\";\r\nimport IGui from \"../../../components/IGui\";\r\n\r\n\r\nconst ImageStyle = {\r\n maxHeight: \"150px\",\r\n maxWidth: \"150px\",\r\n display: \"block\",\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n marginTop: \"5px\",\r\n marginBottom: \"5px\",\r\n}\r\n\r\n\r\nfunction getImage(assetId, project: InfinityProject): ImageAsset {\r\n const projectImages = project.images\r\n\r\n if (projectImages.has(assetId)) {\r\n const path = projectImages.get(assetId).getAbsolutePath()\r\n return path\r\n }\r\n\r\n}\r\n\r\n\r\nfunction EvaluatedAnswer(props) {\r\n\r\n const answer: ImageAnswer = props.answer\r\n\r\n let color = \"black\"\r\n\r\n if (answer.isSelected && answer.validity) {\r\n color = \"lightgreen\"\r\n //color = \"#CAFFCA\"\r\n } else if (answer.isSelected && (answer.validity == false)) {\r\n color = \"red\"\r\n //color = \"#FFB3A0\"\r\n } else if ((answer.isSelected == false) && answer.validity) {\r\n color = \"orange\"\r\n //color = \"#FFCC00\"\r\n }\r\n\r\n const type = props.isSingle ? \"radio\" : \"checkbox\"\r\n\r\n return (\r\n
\r\n \r\n <_CardImage\r\n imgPath={getImage(answer.image, props.project)}\r\n />\r\n\r\n\r\n
\r\n \r\n {props.index + 1}. {props.answer.text}\r\n
\r\n\r\n
\r\n\r\n
\r\n )\r\n}\r\n\r\nfunction _MultiAnswerElement({answer, project, index}) {\r\n\r\n const bgColor = \"white\"\r\n const [isSelected, setSeleted] = React.useState(false)\r\n\r\n const onClick = () => {\r\n if (answer.isSelected) {\r\n // setBgColor(\"white\")\r\n // setFontColor(\"black\")\r\n answer.isSelected = false\r\n setSeleted(false)\r\n } else {\r\n // setBgColor(\"#0B5ED7\")\r\n // setFontColor(\"white\")\r\n answer.isSelected = true\r\n setSeleted(true)\r\n }\r\n\r\n }\r\n\r\n React.useEffect(() => {\r\n setSeleted(answer.isSelected)\r\n }, [answer])\r\n\r\n return (\r\n
\r\n \r\n\r\n <_CardImage\r\n imgPath={getImage(answer.image, project)}\r\n />\r\n\r\n \r\n \r\n {index + 1}. {answer.text}\r\n \r\n\r\n\r\n \r\n\r\n
\r\n )\r\n}\r\n\r\n\r\nconst SingleAnswerElement = ({answer, project, index, onClick}) => {\r\n\r\n const imgPath = getImage(answer.image, project)\r\n\r\n return (\r\n
\r\n {\r\n onClick(answer)\r\n }}>\r\n\r\n <_CardImage\r\n imgPath={imgPath}\r\n />\r\n\r\n {\r\n onClick(answer)\r\n }}\r\n style={{\r\n marginLeft: \"15px\",\r\n marginRight: \"15px\",\r\n cursor: \"pointer\",\r\n }}\r\n\r\n >\r\n {\r\n onClick(answer)\r\n }}\r\n checked={answer.isSelected}/>\r\n {index + 1}. {answer.text}\r\n \r\n\r\n \r\n\r\n
\r\n )\r\n}\r\n\r\n\r\nfunction _CardImage({imgPath}) {\r\n\r\n const popupZus = useGlobalPopup()\r\n\r\n\r\n const showPopup = () => {\r\n\r\n popupZus.pushElement()\r\n\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport function ImageQuestionView({activeQuestion, isEvaluationMode, project}) {\r\n const question: ImageQuestion = activeQuestion\r\n\r\n const [answers, setAnswers] = React.useState([])\r\n\r\n const singleAnswerClicked = (answer) => {\r\n const tmpAnswers = answers.map((value) => {\r\n return value\r\n })\r\n\r\n tmpAnswers.forEach((value) => {\r\n value.isSelected = false\r\n answer.isSelected = true\r\n })\r\n\r\n setAnswers(tmpAnswers)\r\n }\r\n\r\n\r\n const getAnswerView = (id: number) => {\r\n if (answers.length > id) {\r\n if (isEvaluationMode) {\r\n return \r\n } else {\r\n if (question.isMultiAnswer) {\r\n return (\r\n <_MultiAnswerElement project={project}\r\n index={id}\r\n answer={answers[id]}\r\n\r\n />\r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n } else {\r\n return <>\r\n }\r\n }\r\n\r\n const aLength = question.answers.length\r\n\r\n React.useEffect(() => {\r\n setAnswers(question.answers)\r\n }, [activeQuestion])\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n {getAnswerView(0)}\r\n \r\n \r\n {getAnswerView(1)}\r\n \r\n \r\n\r\n \r\n {\r\n aLength > 2 &&\r\n \r\n {getAnswerView(2)}\r\n \r\n }\r\n\r\n {\r\n aLength > 3 ?\r\n \r\n {getAnswerView(3)}\r\n : \r\n }\r\n\r\n\r\n \r\n\r\n \r\n )\r\n}","import React from \"react\"\r\nimport {ButtonGroup, Card, ToggleButton, ToggleButtonGroup} from \"react-bootstrap\";\r\n\r\n\r\nimport \"./QuizView.css\"\r\n\r\n\r\nimport {TextQuestionView} from \"./TextQuestionView\";\r\nimport {ImageQuestionView} from \"./ImageQuestionView\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport {Quiz} from \"../../../ela/quiz/Quiz\";\r\nimport {QuestionBase} from \"../../../ela/quiz/QuestionBase\";\r\nimport {ImageQuestion} from \"../../../ela/quiz/ImageQuestion\";\r\n\r\nexport function QuizView({activeQuiz, onQuizFinished, project}) {\r\n\r\n const [activeQuestion, setActiveQuestion] = React.useState(activeQuiz.questions[0])\r\n const [activeQuestionIndex, setActiveQuestionIndex] = React.useState(0)\r\n const [isEvaluationMode, setIsEvaluationMode] = React.useState(activeQuiz.isEvaluated)\r\n\r\n const getActiveQuestion = () => {\r\n return activeQuiz.questions[activeQuestionIndex]\r\n }\r\n\r\n const activateQuestion = (questionId: number) => {\r\n setActiveQuestionIndex(questionId)\r\n setActiveQuestion(activeQuiz.questions[questionId])\r\n }\r\n\r\n const question = getActiveQuestion()\r\n\r\n return (\r\n \r\n \r\n\r\n {question.name}\r\n \r\n\r\n \r\n {\r\n question instanceof ImageQuestion\r\n ?\r\n \r\n :\r\n \r\n }\r\n\r\n\r\n \r\n <_QuizFooter\r\n\r\n activeQuiz={activeQuiz}\r\n activeQuestionIndex={activeQuestionIndex}\r\n onEvaluatePressed={() => {\r\n setIsEvaluationMode(true)\r\n }}\r\n\r\n onQuizFinished={onQuizFinished}\r\n\r\n onQuestionActivate={activateQuestion}\r\n onNextPressed={() => {\r\n activateQuestion(activeQuestionIndex + 1)\r\n }}\r\n\r\n />\r\n \r\n )\r\n\r\n}\r\n\r\n\r\ninterface FooterProps {\r\n activeQuiz: Quiz\r\n onEvaluatePressed: () => void\r\n onQuizFinished: () => void\r\n onQuestionActivate: (questionIndex: number) => void\r\n activeQuestionIndex: number\r\n onNextPressed: () => void\r\n}\r\n\r\nfunction _QuizFooter({\r\n activeQuiz,\r\n activeQuestionIndex,\r\n onEvaluatePressed,\r\n onQuestionActivate,\r\n onQuizFinished,\r\n onNextPressed\r\n }: FooterProps) {\r\n\r\n const [t] = useTranslation()\r\n\r\n const [isInEvaluation, setIsInEvaluation] = React.useState(activeQuiz.isEvaluated)\r\n\r\n const getVariantFromQuestion = (question: QuestionBase) => {\r\n\r\n let returnValue = \"warning\"\r\n\r\n\r\n if (isInEvaluation) {\r\n const sucRate = question.GetSuccessRate()\r\n\r\n if (sucRate == 1) {\r\n returnValue = \"success\"\r\n } else if (sucRate == 0) {\r\n returnValue = \"danger\"\r\n } else {\r\n returnValue = \"warning\"\r\n }\r\n\r\n } else {\r\n returnValue = \"secondary\"\r\n }\r\n\r\n\r\n return returnValue\r\n }\r\n\r\n\r\n function _get_end_button() {\r\n return (\r\n \r\n\r\n )\r\n }\r\n\r\n function _get_evaluation_button() {\r\n return (\r\n \r\n )\r\n }\r\n\r\n function _get_next_button() {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (activeQuiz.questions.length > 1) {\r\n return (\r\n \r\n
\r\n \r\n {activeQuiz.questions.map((question: QuestionBase, i: number) => {\r\n return {\r\n onQuestionActivate(Number(e.currentTarget.value))\r\n }}\r\n\r\n > {i + 1}\r\n }\r\n )}\r\n \r\n <>\r\n\r\n {\r\n isInEvaluation ? _get_end_button() : <>\r\n\r\n {\r\n (activeQuiz.questions.length - 1 === activeQuestionIndex) ?\r\n _get_evaluation_button() : _get_next_button()\r\n }\r\n\r\n\r\n \r\n }\r\n \r\n
\r\n\r\n\r\n
\r\n )\r\n } else {\r\n return isInEvaluation ? _get_end_button() : _get_evaluation_button()\r\n }\r\n}\r\n\r\n\r\n","import React from 'react';\r\nimport {QuizView} from \"./QuizView\";\r\nimport {Quiz} from \"../../../ela/assets/asset_Quiz\";\r\nimport {InfinityProject} from \"../../../infinity/InfinityProject\";\r\n\r\n\r\ninterface QuizPlayerProps {\r\n activeQuiz: Quiz;\r\n project: InfinityProject;\r\n onClose: Function;\r\n\r\n}\r\n\r\nexport const QuizPlayer = ({activeQuiz, project, onClose}: QuizPlayerProps) => {\r\n\r\n\r\n if (activeQuiz.questions.length == 0) {\r\n return (\r\n <>\r\n )\r\n\r\n } else {\r\n return (\r\n <>\r\n
\r\n
\r\n {\r\n activeQuiz.isEvaluated = true\r\n onClose()\r\n }}\r\n />\r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n\r\n}\r\n","import * as three from \"three\"\r\n\r\nimport {InfinityBoardParent} from \"./board_Parent\";\r\n\r\n\r\nimport {Quiz, QuizAsset} from \"../../ela/assets/asset_Quiz\";\r\nimport {QuizPlayer} from \"../../gui/content_players/quiz/QuizPlayer\";\r\nimport {GuidedTourManager} from \"../../zustands/activeTestTourZus\";\r\nimport {useGlobalAppLock} from \"../../zustands/globalAppLockZus\";\r\nimport {useGlobalPopup} from \"../../zustands/globalPopupZus\";\r\nimport LicenceManager from \"../../api/LicenceManager\";\r\nimport TourStatisticsApi, {SaveQuizParams} from \"../../api/TourStatisticsApi\";\r\n\r\n\r\nexport class InfinityQuizBoard extends InfinityBoardParent {\r\n\r\n type = \"quiz\"\r\n\r\n quiz: Quiz = null\r\n\r\n\r\n quizStartTime: Date = null\r\n\r\n quizDurationMilis: number = 0\r\n\r\n constructor(spot) {\r\n super(spot)\r\n this.icon = \"EI.QuizBoard\"\r\n }\r\n\r\n loadFromJsonObject(object) {\r\n super.loadFromJsonObject(object)\r\n\r\n }\r\n\r\n getQuizAsset(): QuizAsset {\r\n const asset = this.getParentProject().quizzes.get(this.contentUid)\r\n if (asset) {\r\n return asset\r\n }\r\n return null\r\n }\r\n\r\n\r\n getQuiz(): Quiz {\r\n const asset = this.getParentProject().quizzes.get(this.contentUid)\r\n if (asset) {\r\n return asset.quiz\r\n }\r\n\r\n return null\r\n }\r\n\r\n isContentValid(): boolean {\r\n return this.getQuiz()\r\n }\r\n\r\n clicked() {\r\n\r\n this.leaveVr()\r\n\r\n var quizToPlay = null\r\n\r\n if (this.quiz) {\r\n /* Quiz was already played */\r\n quizToPlay = this.quiz\r\n this.playQuiz(quizToPlay)\r\n\r\n\r\n } else {\r\n\r\n\r\n const originalQuizAsset = this.getQuizAsset()\r\n\r\n if (originalQuizAsset) {\r\n\r\n if (originalQuizAsset.isLoaded) {\r\n /* Quiz was already loaded*/\r\n\r\n const originalQuiz = originalQuizAsset.quiz\r\n\r\n if (originalQuiz) {\r\n\r\n this.quiz = originalQuiz.getCopy()\r\n quizToPlay = this.quiz\r\n this.playQuiz(quizToPlay)\r\n }\r\n } else {\r\n /* Quiz was never loaded*/\r\n\r\n useGlobalAppLock.getState().lock()\r\n\r\n originalQuizAsset.sub_load_async().then(() => {\r\n useGlobalAppLock.getState().unlock()\r\n\r\n const originalQuiz = originalQuizAsset.quiz\r\n\r\n this.quiz = originalQuiz.getCopy()\r\n quizToPlay = this.quiz\r\n this.playQuiz(quizToPlay)\r\n\r\n })\r\n }\r\n } else {\r\n window.alert(\"No quiz assigned here\")\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n playQuiz(quizToPlay: Quiz) {\r\n if (quizToPlay) {\r\n\r\n if (quizToPlay.questions.length == 0) {\r\n window.alert(\"No answers to play\")\r\n } else {\r\n\r\n this.quizStartTime = new Date()\r\n\r\n useGlobalPopup.getState().pushElement(\r\n {\r\n useGlobalPopup.getState().popElement()\r\n if (this.isCompleted) {\r\n\r\n } else {\r\n this.quizFinished()\r\n }\r\n }}\r\n\r\n />\r\n )\r\n\r\n\r\n }\r\n\r\n } else {\r\n window.alert(\"Sorry no quiz on this page\")\r\n }\r\n }\r\n\r\n quizFinished = () => {\r\n\r\n\r\n const status = this.quiz.getSuccessRate()\r\n\r\n\r\n if (status == 1) {\r\n this.iconColorModifier = new three.Color(0, 1, 0)\r\n this.refreshVisualization()\r\n } else {\r\n this.iconColorModifier = new three.Color(1, 0, 0)\r\n this.refreshVisualization()\r\n }\r\n\r\n if (LicenceManager.f360.quizzes_monitoring) {\r\n this.saveQuizToStatistics()\r\n }\r\n\r\n super.fillBoardVisited(status)\r\n\r\n GuidedTourManager.taskBoardClicked(this, status)\r\n\r\n this.refreshVisualization()\r\n }\r\n\r\n saveQuizToStatistics() {\r\n\r\n const resultJson = this.quiz.to_json_result()\r\n\r\n const parentProject = this.parentSpot.parentProject\r\n\r\n const saveParams = new SaveQuizParams()\r\n\r\n const startTime = this.quizStartTime;\r\n const endTime = new Date();\r\n\r\n\r\n saveParams.project_type = parentProject.type\r\n saveParams.project_uid = parentProject.uid\r\n saveParams.project_name = parentProject.name\r\n saveParams.spot_name = this.parentSpot.name\r\n saveParams.spot_uid = this.parentSpot.uid\r\n saveParams.board_name = this.name\r\n saveParams.board_uid = this.uid\r\n saveParams.success = resultJson[\"success\"]\r\n saveParams.run_uid = parentProject.run_token\r\n saveParams.duration = endTime - startTime\r\n\r\n TourStatisticsApi.saveQuiz(saveParams, resultJson)\r\n }\r\n\r\n getPercentage() {\r\n if (this.quiz) {\r\n return this.quiz.getSuccessRate()\r\n } else {\r\n return 0\r\n }\r\n }\r\n\r\n\r\n}","import {\r\n AnimationClip,\r\n Bone,\r\n Box3,\r\n BufferAttribute,\r\n BufferGeometry,\r\n ClampToEdgeWrapping,\r\n Color,\r\n DirectionalLight,\r\n DoubleSide,\r\n FileLoader,\r\n FrontSide,\r\n Group,\r\n ImageBitmapLoader,\r\n InterleavedBuffer,\r\n InterleavedBufferAttribute,\r\n Interpolant,\r\n InterpolateDiscrete,\r\n InterpolateLinear,\r\n Line,\r\n LinearFilter,\r\n LinearMipmapLinearFilter,\r\n LinearMipmapNearestFilter,\r\n LineBasicMaterial,\r\n LineLoop,\r\n LineSegments,\r\n Loader,\r\n LoaderUtils,\r\n Material,\r\n MathUtils,\r\n Matrix4,\r\n Mesh,\r\n MeshBasicMaterial,\r\n MeshPhysicalMaterial,\r\n MeshStandardMaterial,\r\n MirroredRepeatWrapping,\r\n NearestFilter,\r\n NearestMipmapLinearFilter,\r\n NearestMipmapNearestFilter,\r\n NumberKeyframeTrack,\r\n Object3D,\r\n OrthographicCamera,\r\n PerspectiveCamera,\r\n PointLight,\r\n Points,\r\n PointsMaterial,\r\n PropertyBinding,\r\n Quaternion,\r\n QuaternionKeyframeTrack,\r\n RepeatWrapping,\r\n RGBFormat,\r\n Skeleton,\r\n SkinnedMesh,\r\n Sphere,\r\n SpotLight,\r\n TangentSpaceNormalMap,\r\n Texture,\r\n TextureLoader,\r\n TriangleFanDrawMode,\r\n TriangleStripDrawMode,\r\n Vector2,\r\n Vector3,\r\n VectorKeyframeTrack\r\n} from 'three';\r\n\r\nclass GLTFLoader extends Loader {\r\n\r\n constructor(manager) {\r\n super(manager);\r\n\r\n this.dracoLoader = null;\r\n this.ktx2Loader = null;\r\n this.meshoptDecoder = null;\r\n\r\n this.pluginCallbacks = [];\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFMaterialsClearcoatExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFTextureBasisUExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFTextureWebPExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFMaterialsSheenExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFMaterialsTransmissionExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFMaterialsVolumeExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFMaterialsIorExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFMaterialsSpecularExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFLightsExtension(parser);\r\n\r\n });\r\n\r\n this.register(function (parser) {\r\n\r\n return new GLTFMeshoptCompression(parser);\r\n\r\n });\r\n\r\n }\r\n\r\n load(url, onLoad, onProgress, onError) {\r\n\r\n const scope = this;\r\n\r\n let resourcePath;\r\n\r\n if (this.resourcePath !== '') {\r\n\r\n resourcePath = this.resourcePath;\r\n\r\n } else if (this.path !== '') {\r\n\r\n resourcePath = this.path;\r\n\r\n } else {\r\n\r\n resourcePath = LoaderUtils.extractUrlBase(url);\r\n\r\n }\r\n\r\n // Tells the LoadingManager to track an extra item, which resolves after\r\n // the model is fully loaded. This means the count of items loaded will\r\n // be incorrect, but ensures manager.onLoad() does not fire early.\r\n this.manager.itemStart(url);\r\n\r\n const _onError = function (e) {\r\n\r\n if (onError) {\r\n\r\n onError(e);\r\n\r\n } else {\r\n\r\n console.error(e);\r\n\r\n }\r\n\r\n scope.manager.itemError(url);\r\n scope.manager.itemEnd(url);\r\n\r\n };\r\n\r\n const loader = new FileLoader(this.manager);\r\n\r\n loader.setPath(this.path);\r\n loader.setResponseType('arraybuffer');\r\n loader.setRequestHeader(this.requestHeader);\r\n loader.setWithCredentials(this.withCredentials);\r\n\r\n loader.load(url, function (data) {\r\n\r\n try {\r\n\r\n scope.parse(data, resourcePath, function (gltf) {\r\n\r\n onLoad(gltf);\r\n\r\n scope.manager.itemEnd(url);\r\n\r\n }, _onError);\r\n\r\n } catch (e) {\r\n\r\n _onError(e);\r\n\r\n }\r\n\r\n }, onProgress, _onError);\r\n\r\n }\r\n\r\n setDRACOLoader(dracoLoader) {\r\n\r\n this.dracoLoader = dracoLoader;\r\n return this;\r\n\r\n }\r\n\r\n setDDSLoader() {\r\n\r\n throw new Error(\r\n 'THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".'\r\n );\r\n\r\n }\r\n\r\n setKTX2Loader(ktx2Loader) {\r\n\r\n this.ktx2Loader = ktx2Loader;\r\n return this;\r\n\r\n }\r\n\r\n setMeshoptDecoder(meshoptDecoder) {\r\n\r\n this.meshoptDecoder = meshoptDecoder;\r\n return this;\r\n\r\n }\r\n\r\n register(callback) {\r\n\r\n if (this.pluginCallbacks.indexOf(callback) === -1) {\r\n\r\n this.pluginCallbacks.push(callback);\r\n\r\n }\r\n\r\n return this;\r\n\r\n }\r\n\r\n unregister(callback) {\r\n\r\n if (this.pluginCallbacks.indexOf(callback) !== -1) {\r\n\r\n this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\r\n\r\n }\r\n\r\n return this;\r\n\r\n }\r\n\r\n parse(data, path, onLoad, onError) {\r\n\r\n let content;\r\n const extensions = {};\r\n const plugins = {};\r\n\r\n if (typeof data === 'string') {\r\n\r\n content = data;\r\n\r\n } else {\r\n\r\n const magic = LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\r\n\r\n if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\r\n\r\n try {\r\n\r\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\r\n\r\n } catch (error) {\r\n\r\n if (onError) onError(error);\r\n return;\r\n\r\n }\r\n\r\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\r\n\r\n } else {\r\n\r\n content = LoaderUtils.decodeText(new Uint8Array(data));\r\n\r\n }\r\n\r\n }\r\n\r\n const json = JSON.parse(content);\r\n\r\n if (json.asset === undefined || json.asset.version[0] < 2) {\r\n\r\n if (onError) onError(new Error('THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.'));\r\n return;\r\n\r\n }\r\n\r\n const parser = new GLTFParser(json, {\r\n\r\n path: path || this.resourcePath || '',\r\n crossOrigin: this.crossOrigin,\r\n requestHeader: this.requestHeader,\r\n manager: this.manager,\r\n ktx2Loader: this.ktx2Loader,\r\n meshoptDecoder: this.meshoptDecoder\r\n\r\n });\r\n\r\n parser.fileLoader.setRequestHeader(this.requestHeader);\r\n\r\n for (let i = 0; i < this.pluginCallbacks.length; i++) {\r\n\r\n const plugin = this.pluginCallbacks[i](parser);\r\n plugins[plugin.name] = plugin;\r\n\r\n // Workaround to avoid determining as unknown extension\r\n // in addUnknownExtensionsToUserData().\r\n // Remove this workaround if we move all the existing\r\n // extension handlers to plugin system\r\n extensions[plugin.name] = true;\r\n\r\n }\r\n\r\n if (json.extensionsUsed) {\r\n\r\n for (let i = 0; i < json.extensionsUsed.length; ++i) {\r\n\r\n const extensionName = json.extensionsUsed[i];\r\n const extensionsRequired = json.extensionsRequired || [];\r\n\r\n switch (extensionName) {\r\n\r\n case EXTENSIONS.KHR_MATERIALS_UNLIT:\r\n extensions[extensionName] = new GLTFMaterialsUnlitExtension();\r\n break;\r\n\r\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\r\n extensions[extensionName] = new GLTFMaterialsPbrSpecularGlossinessExtension();\r\n break;\r\n\r\n case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\r\n extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\r\n break;\r\n\r\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\r\n extensions[extensionName] = new GLTFTextureTransformExtension();\r\n break;\r\n\r\n case EXTENSIONS.KHR_MESH_QUANTIZATION:\r\n extensions[extensionName] = new GLTFMeshQuantizationExtension();\r\n break;\r\n\r\n default:\r\n\r\n if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === undefined) {\r\n\r\n console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n parser.setExtensions(extensions);\r\n parser.setPlugins(plugins);\r\n parser.parse(onLoad, onError);\r\n\r\n }\r\n\r\n}\r\n\r\n/* GLTFREGISTRY */\r\n\r\nfunction GLTFRegistry() {\r\n\r\n let objects = {};\r\n\r\n return {\r\n\r\n get: function (key) {\r\n\r\n return objects[key];\r\n\r\n },\r\n\r\n add: function (key, object) {\r\n\r\n objects[key] = object;\r\n\r\n },\r\n\r\n remove: function (key) {\r\n\r\n delete objects[key];\r\n\r\n },\r\n\r\n removeAll: function () {\r\n\r\n objects = {};\r\n\r\n }\r\n\r\n };\r\n\r\n}\r\n\r\n/*********************************/\r\n/********** EXTENSIONS ***********/\r\n/*********************************/\r\n\r\nconst EXTENSIONS = {\r\n KHR_BINARY_GLTF: 'KHR_binary_glTF',\r\n KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\r\n KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\r\n KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\r\n KHR_MATERIALS_IOR: 'KHR_materials_ior',\r\n KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\r\n KHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\r\n KHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\r\n KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\r\n KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\r\n KHR_MATERIALS_VOLUME: 'KHR_materials_volume',\r\n KHR_TEXTURE_BASISU: 'KHR_texture_basisu',\r\n KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\r\n KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\r\n EXT_TEXTURE_WEBP: 'EXT_texture_webp',\r\n EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression'\r\n};\r\n\r\n/**\r\n * Punctual Lights Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\r\n */\r\nclass GLTFLightsExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\r\n\r\n // Object3D instance caches\r\n this.cache = {refs: {}, uses: {}};\r\n\r\n }\r\n\r\n _markDefs() {\r\n\r\n const parser = this.parser;\r\n const nodeDefs = this.parser.json.nodes || [];\r\n\r\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\r\n\r\n const nodeDef = nodeDefs[nodeIndex];\r\n\r\n if (nodeDef.extensions\r\n && nodeDef.extensions[this.name]\r\n && nodeDef.extensions[this.name].light !== undefined) {\r\n\r\n parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n _loadLight(lightIndex) {\r\n\r\n const parser = this.parser;\r\n const cacheKey = 'light:' + lightIndex;\r\n let dependency = parser.cache.get(cacheKey);\r\n\r\n if (dependency) return dependency;\r\n\r\n const json = parser.json;\r\n const extensions = (json.extensions && json.extensions[this.name]) || {};\r\n const lightDefs = extensions.lights || [];\r\n const lightDef = lightDefs[lightIndex];\r\n let lightNode;\r\n\r\n const color = new Color(0xffffff);\r\n\r\n if (lightDef.color !== undefined) color.fromArray(lightDef.color);\r\n\r\n const range = lightDef.range !== undefined ? lightDef.range : 0;\r\n\r\n switch (lightDef.type) {\r\n\r\n case 'directional':\r\n lightNode = new DirectionalLight(color);\r\n lightNode.target.position.set(0, 0, -1);\r\n lightNode.add(lightNode.target);\r\n break;\r\n\r\n case 'point':\r\n lightNode = new PointLight(color);\r\n lightNode.distance = range;\r\n break;\r\n\r\n case 'spot':\r\n lightNode = new SpotLight(color);\r\n lightNode.distance = range;\r\n // Handle spotlight properties.\r\n lightDef.spot = lightDef.spot || {};\r\n lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\r\n lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\r\n lightNode.angle = lightDef.spot.outerConeAngle;\r\n lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\r\n lightNode.target.position.set(0, 0, -1);\r\n lightNode.add(lightNode.target);\r\n break;\r\n\r\n default:\r\n throw new Error('THREE.GLTFLoader: Unexpected light type: ' + lightDef.type);\r\n\r\n }\r\n\r\n // Some lights (e.g. spot) default to a position other than the origin. Reset the position\r\n // here, because node-level parsing will only override position if explicitly specified.\r\n lightNode.position.set(0, 0, 0);\r\n\r\n lightNode.decay = 2;\r\n\r\n if (lightDef.intensity !== undefined) lightNode.intensity = lightDef.intensity;\r\n\r\n lightNode.name = parser.createUniqueName(lightDef.name || ('light_' + lightIndex));\r\n\r\n dependency = Promise.resolve(lightNode);\r\n\r\n parser.cache.add(cacheKey, dependency);\r\n\r\n return dependency;\r\n\r\n }\r\n\r\n createNodeAttachment(nodeIndex) {\r\n\r\n const self = this;\r\n const parser = this.parser;\r\n const json = parser.json;\r\n const nodeDef = json.nodes[nodeIndex];\r\n const lightDef = (nodeDef.extensions && nodeDef.extensions[this.name]) || {};\r\n const lightIndex = lightDef.light;\r\n\r\n if (lightIndex === undefined) return null;\r\n\r\n return this._loadLight(lightIndex).then(function (light) {\r\n\r\n return parser._getNodeRef(self.cache, lightIndex, light);\r\n\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Unlit Materials Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\r\n */\r\nclass GLTFMaterialsUnlitExtension {\r\n\r\n constructor() {\r\n\r\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\r\n\r\n }\r\n\r\n getMaterialType() {\r\n\r\n return MeshBasicMaterial;\r\n\r\n }\r\n\r\n extendParams(materialParams, materialDef, parser) {\r\n\r\n const pending = [];\r\n\r\n materialParams.color = new Color(1.0, 1.0, 1.0);\r\n materialParams.opacity = 1.0;\r\n\r\n const metallicRoughness = materialDef.pbrMetallicRoughness;\r\n\r\n if (metallicRoughness) {\r\n\r\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\r\n\r\n const array = metallicRoughness.baseColorFactor;\r\n\r\n materialParams.color.fromArray(array);\r\n materialParams.opacity = array[3];\r\n\r\n }\r\n\r\n if (metallicRoughness.baseColorTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\r\n\r\n }\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Clearcoat Materials Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\r\n */\r\nclass GLTFMaterialsClearcoatExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\r\n\r\n }\r\n\r\n getMaterialType(materialIndex) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\r\n\r\n return MeshPhysicalMaterial;\r\n\r\n }\r\n\r\n extendMaterialParams(materialIndex, materialParams) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\r\n\r\n return Promise.resolve();\r\n\r\n }\r\n\r\n const pending = [];\r\n\r\n const extension = materialDef.extensions[this.name];\r\n\r\n if (extension.clearcoatFactor !== undefined) {\r\n\r\n materialParams.clearcoat = extension.clearcoatFactor;\r\n\r\n }\r\n\r\n if (extension.clearcoatTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'clearcoatMap', extension.clearcoatTexture));\r\n\r\n }\r\n\r\n if (extension.clearcoatRoughnessFactor !== undefined) {\r\n\r\n materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\r\n\r\n }\r\n\r\n if (extension.clearcoatRoughnessTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture));\r\n\r\n }\r\n\r\n if (extension.clearcoatNormalTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture));\r\n\r\n if (extension.clearcoatNormalTexture.scale !== undefined) {\r\n\r\n const scale = extension.clearcoatNormalTexture.scale;\r\n\r\n materialParams.clearcoatNormalScale = new Vector2(scale, scale);\r\n\r\n }\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Sheen Materials Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\r\n */\r\nclass GLTFMaterialsSheenExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\r\n\r\n }\r\n\r\n getMaterialType(materialIndex) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\r\n\r\n return MeshPhysicalMaterial;\r\n\r\n }\r\n\r\n extendMaterialParams(materialIndex, materialParams) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\r\n\r\n return Promise.resolve();\r\n\r\n }\r\n\r\n const pending = [];\r\n\r\n materialParams.sheenColor = new Color(0, 0, 0);\r\n materialParams.sheenRoughness = 0;\r\n materialParams.sheen = 1;\r\n\r\n const extension = materialDef.extensions[this.name];\r\n\r\n if (extension.sheenColorFactor !== undefined) {\r\n\r\n materialParams.sheenColor.fromArray(extension.sheenColorFactor);\r\n\r\n }\r\n\r\n if (extension.sheenRoughnessFactor !== undefined) {\r\n\r\n materialParams.sheenRoughness = extension.sheenRoughnessFactor;\r\n\r\n }\r\n\r\n if (extension.sheenColorTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'sheenColorMap', extension.sheenColorTexture));\r\n\r\n }\r\n\r\n if (extension.sheenRoughnessTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture));\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Transmission Materials Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\r\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\r\n */\r\nclass GLTFMaterialsTransmissionExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\r\n\r\n }\r\n\r\n getMaterialType(materialIndex) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\r\n\r\n return MeshPhysicalMaterial;\r\n\r\n }\r\n\r\n extendMaterialParams(materialIndex, materialParams) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\r\n\r\n return Promise.resolve();\r\n\r\n }\r\n\r\n const pending = [];\r\n\r\n const extension = materialDef.extensions[this.name];\r\n\r\n if (extension.transmissionFactor !== undefined) {\r\n\r\n materialParams.transmission = extension.transmissionFactor;\r\n\r\n }\r\n\r\n if (extension.transmissionTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'transmissionMap', extension.transmissionTexture));\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Materials Volume Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\r\n */\r\nclass GLTFMaterialsVolumeExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\r\n\r\n }\r\n\r\n getMaterialType(materialIndex) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\r\n\r\n return MeshPhysicalMaterial;\r\n\r\n }\r\n\r\n extendMaterialParams(materialIndex, materialParams) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\r\n\r\n return Promise.resolve();\r\n\r\n }\r\n\r\n const pending = [];\r\n\r\n const extension = materialDef.extensions[this.name];\r\n\r\n materialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\r\n\r\n if (extension.thicknessTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'thicknessMap', extension.thicknessTexture));\r\n\r\n }\r\n\r\n materialParams.attenuationDistance = extension.attenuationDistance || 0;\r\n\r\n const colorArray = extension.attenuationColor || [1, 1, 1];\r\n materialParams.attenuationColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Materials ior Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\r\n */\r\nclass GLTFMaterialsIorExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_MATERIALS_IOR;\r\n\r\n }\r\n\r\n getMaterialType(materialIndex) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\r\n\r\n return MeshPhysicalMaterial;\r\n\r\n }\r\n\r\n extendMaterialParams(materialIndex, materialParams) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\r\n\r\n return Promise.resolve();\r\n\r\n }\r\n\r\n const extension = materialDef.extensions[this.name];\r\n\r\n materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\r\n\r\n return Promise.resolve();\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Materials specular Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\r\n */\r\nclass GLTFMaterialsSpecularExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\r\n\r\n }\r\n\r\n getMaterialType(materialIndex) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\r\n\r\n return MeshPhysicalMaterial;\r\n\r\n }\r\n\r\n extendMaterialParams(materialIndex, materialParams) {\r\n\r\n const parser = this.parser;\r\n const materialDef = parser.json.materials[materialIndex];\r\n\r\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\r\n\r\n return Promise.resolve();\r\n\r\n }\r\n\r\n const pending = [];\r\n\r\n const extension = materialDef.extensions[this.name];\r\n\r\n materialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\r\n\r\n if (extension.specularTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'specularIntensityMap', extension.specularTexture));\r\n\r\n }\r\n\r\n const colorArray = extension.specularColorFactor || [1, 1, 1];\r\n materialParams.specularColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\r\n\r\n if (extension.specularColorTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'specularColorMap', extension.specularColorTexture).then(function (texture) {\r\n\r\n // texture.encoding = sRGBEncoding;\r\n\r\n }));\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * BasisU Texture Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\r\n */\r\nclass GLTFTextureBasisUExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\r\n\r\n }\r\n\r\n loadTexture(textureIndex) {\r\n\r\n const parser = this.parser;\r\n const json = parser.json;\r\n\r\n const textureDef = json.textures[textureIndex];\r\n\r\n if (!textureDef.extensions || !textureDef.extensions[this.name]) {\r\n\r\n return null;\r\n\r\n }\r\n\r\n const extension = textureDef.extensions[this.name];\r\n const source = json.images[extension.source];\r\n const loader = parser.options.ktx2Loader;\r\n\r\n if (!loader) {\r\n\r\n if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\r\n\r\n throw new Error('THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures');\r\n\r\n } else {\r\n\r\n // Assumes that the extension is optional and that a fallback texture is present\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n return parser.loadTextureImage(textureIndex, source, loader);\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * WebP Texture Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\r\n */\r\nclass GLTFTextureWebPExtension {\r\n\r\n constructor(parser) {\r\n\r\n this.parser = parser;\r\n this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\r\n this.isSupported = null;\r\n\r\n }\r\n\r\n loadTexture(textureIndex) {\r\n\r\n const name = this.name;\r\n const parser = this.parser;\r\n const json = parser.json;\r\n\r\n const textureDef = json.textures[textureIndex];\r\n\r\n if (!textureDef.extensions || !textureDef.extensions[name]) {\r\n\r\n return null;\r\n\r\n }\r\n\r\n const extension = textureDef.extensions[name];\r\n const source = json.images[extension.source];\r\n\r\n let loader = parser.textureLoader;\r\n if (source.uri) {\r\n\r\n const handler = parser.options.manager.getHandler(source.uri);\r\n if (handler !== null) loader = handler;\r\n\r\n }\r\n\r\n return this.detectSupport().then(function (isSupported) {\r\n\r\n if (isSupported) return parser.loadTextureImage(textureIndex, source, loader);\r\n\r\n if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\r\n\r\n throw new Error('THREE.GLTFLoader: WebP required by asset but unsupported.');\r\n\r\n }\r\n\r\n // Fall back to PNG or JPEG.\r\n return parser.loadTexture(textureIndex);\r\n\r\n });\r\n\r\n }\r\n\r\n detectSupport() {\r\n\r\n if (!this.isSupported) {\r\n\r\n this.isSupported = new Promise(function (resolve) {\r\n\r\n const image = new Image();\r\n\r\n // Lossy test image. Support for lossy images doesn't guarantee support for all\r\n // WebP images, unfortunately.\r\n image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\r\n\r\n image.onload = image.onerror = function () {\r\n\r\n resolve(image.height === 1);\r\n\r\n };\r\n\r\n });\r\n\r\n }\r\n\r\n return this.isSupported;\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * meshopt BufferView Compression Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\r\n */\r\nclass GLTFMeshoptCompression {\r\n\r\n constructor(parser) {\r\n\r\n this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\r\n this.parser = parser;\r\n\r\n }\r\n\r\n loadBufferView(index) {\r\n\r\n const json = this.parser.json;\r\n const bufferView = json.bufferViews[index];\r\n\r\n if (bufferView.extensions && bufferView.extensions[this.name]) {\r\n\r\n const extensionDef = bufferView.extensions[this.name];\r\n\r\n const buffer = this.parser.getDependency('buffer', extensionDef.buffer);\r\n const decoder = this.parser.options.meshoptDecoder;\r\n\r\n if (!decoder || !decoder.supported) {\r\n\r\n if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\r\n\r\n throw new Error('THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files');\r\n\r\n } else {\r\n\r\n // Assumes that the extension is optional and that fallback buffer data is present\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n return Promise.all([buffer, decoder.ready]).then(function (res) {\r\n\r\n const byteOffset = extensionDef.byteOffset || 0;\r\n const byteLength = extensionDef.byteLength || 0;\r\n\r\n const count = extensionDef.count;\r\n const stride = extensionDef.byteStride;\r\n\r\n const result = new ArrayBuffer(count * stride);\r\n const source = new Uint8Array(res[0], byteOffset, byteLength);\r\n\r\n decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);\r\n return result;\r\n\r\n });\r\n\r\n } else {\r\n\r\n return null;\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n/* BINARY EXTENSION */\r\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\r\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\r\nconst BINARY_EXTENSION_CHUNK_TYPES = {JSON: 0x4E4F534A, BIN: 0x004E4942};\r\n\r\nclass GLTFBinaryExtension {\r\n\r\n constructor(data) {\r\n\r\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\r\n this.content = null;\r\n this.body = null;\r\n\r\n const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\r\n\r\n this.header = {\r\n magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\r\n version: headerView.getUint32(4, true),\r\n length: headerView.getUint32(8, true)\r\n };\r\n\r\n if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\r\n\r\n throw new Error('THREE.GLTFLoader: Unsupported glTF-Binary header.');\r\n\r\n } else if (this.header.version < 2.0) {\r\n\r\n throw new Error('THREE.GLTFLoader: Legacy binary file detected.');\r\n\r\n }\r\n\r\n const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\r\n const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\r\n let chunkIndex = 0;\r\n\r\n while (chunkIndex < chunkContentsLength) {\r\n\r\n const chunkLength = chunkView.getUint32(chunkIndex, true);\r\n chunkIndex += 4;\r\n\r\n const chunkType = chunkView.getUint32(chunkIndex, true);\r\n chunkIndex += 4;\r\n\r\n if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\r\n\r\n const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\r\n this.content = LoaderUtils.decodeText(contentArray);\r\n\r\n } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\r\n\r\n const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\r\n this.body = data.slice(byteOffset, byteOffset + chunkLength);\r\n\r\n }\r\n\r\n // Clients must ignore chunks with unknown types.\r\n\r\n chunkIndex += chunkLength;\r\n\r\n }\r\n\r\n if (this.content === null) {\r\n\r\n throw new Error('THREE.GLTFLoader: JSON content not found.');\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * DRACO Mesh Compression Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\r\n */\r\nclass GLTFDracoMeshCompressionExtension {\r\n\r\n constructor(json, dracoLoader) {\r\n\r\n if (!dracoLoader) {\r\n\r\n throw new Error('THREE.GLTFLoader: No DRACOLoader instance provided.');\r\n\r\n }\r\n\r\n this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\r\n this.json = json;\r\n this.dracoLoader = dracoLoader;\r\n this.dracoLoader.preload();\r\n\r\n }\r\n\r\n decodePrimitive(primitive, parser) {\r\n\r\n const json = this.json;\r\n const dracoLoader = this.dracoLoader;\r\n const bufferViewIndex = primitive.extensions[this.name].bufferView;\r\n const gltfAttributeMap = primitive.extensions[this.name].attributes;\r\n const threeAttributeMap = {};\r\n const attributeNormalizedMap = {};\r\n const attributeTypeMap = {};\r\n\r\n for (const attributeName in gltfAttributeMap) {\r\n\r\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\r\n\r\n threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\r\n\r\n }\r\n\r\n for (const attributeName in primitive.attributes) {\r\n\r\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\r\n\r\n if (gltfAttributeMap[attributeName] !== undefined) {\r\n\r\n const accessorDef = json.accessors[primitive.attributes[attributeName]];\r\n const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\r\n\r\n attributeTypeMap[threeAttributeName] = componentType;\r\n attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\r\n\r\n }\r\n\r\n }\r\n\r\n return parser.getDependency('bufferView', bufferViewIndex).then(function (bufferView) {\r\n\r\n return new Promise(function (resolve) {\r\n\r\n dracoLoader.decodeDracoFile(bufferView, function (geometry) {\r\n\r\n for (const attributeName in geometry.attributes) {\r\n\r\n const attribute = geometry.attributes[attributeName];\r\n const normalized = attributeNormalizedMap[attributeName];\r\n\r\n if (normalized !== undefined) attribute.normalized = normalized;\r\n\r\n }\r\n\r\n resolve(geometry);\r\n\r\n }, threeAttributeMap, attributeTypeMap);\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Texture Transform Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\r\n */\r\nclass GLTFTextureTransformExtension {\r\n\r\n constructor() {\r\n\r\n this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\r\n\r\n }\r\n\r\n extendTexture(texture, transform) {\r\n\r\n if (transform.texCoord !== undefined) {\r\n\r\n console.warn('THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.');\r\n\r\n }\r\n\r\n if (transform.offset === undefined && transform.rotation === undefined && transform.scale === undefined) {\r\n\r\n // See https://github.com/mrdoob/three.js/issues/21819.\r\n return texture;\r\n\r\n }\r\n\r\n texture = texture.clone();\r\n\r\n if (transform.offset !== undefined) {\r\n\r\n texture.offset.fromArray(transform.offset);\r\n\r\n }\r\n\r\n if (transform.rotation !== undefined) {\r\n\r\n texture.rotation = transform.rotation;\r\n\r\n }\r\n\r\n if (transform.scale !== undefined) {\r\n\r\n texture.repeat.fromArray(transform.scale);\r\n\r\n }\r\n\r\n texture.needsUpdate = true;\r\n\r\n return texture;\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Specular-Glossiness Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\r\n */\r\n\r\n/**\r\n * A sub class of StandardMaterial with some of the functionality\r\n * changed via the `onBeforeCompile` callback\r\n * @pailhead\r\n */\r\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\r\n\r\n constructor(params) {\r\n\r\n super();\r\n\r\n this.isGLTFSpecularGlossinessMaterial = true;\r\n\r\n //various chunks that need replacing\r\n const specularMapParsFragmentChunk = [\r\n '#ifdef USE_SPECULARMAP',\r\n '\tuniform sampler2D specularMap;',\r\n '#endif'\r\n ].join('\\n');\r\n\r\n const glossinessMapParsFragmentChunk = [\r\n '#ifdef USE_GLOSSINESSMAP',\r\n '\tuniform sampler2D glossinessMap;',\r\n '#endif'\r\n ].join('\\n');\r\n\r\n const specularMapFragmentChunk = [\r\n 'vec3 specularFactor = specular;',\r\n '#ifdef USE_SPECULARMAP',\r\n '\tvec4 texelSpecular = texture2D( specularMap, vUv );',\r\n '\ttexelSpecular = sRGBToLinear( texelSpecular );',\r\n '\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\r\n '\tspecularFactor *= texelSpecular.rgb;',\r\n '#endif'\r\n ].join('\\n');\r\n\r\n const glossinessMapFragmentChunk = [\r\n 'float glossinessFactor = glossiness;',\r\n '#ifdef USE_GLOSSINESSMAP',\r\n '\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\r\n '\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\r\n '\tglossinessFactor *= texelGlossiness.a;',\r\n '#endif'\r\n ].join('\\n');\r\n\r\n const lightPhysicalFragmentChunk = [\r\n 'PhysicalMaterial material;',\r\n 'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );',\r\n 'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\r\n 'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\r\n 'material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.',\r\n 'material.roughness += geometryRoughness;',\r\n 'material.roughness = min( material.roughness, 1.0 );',\r\n 'material.specularColor = specularFactor;',\r\n ].join('\\n');\r\n\r\n const uniforms = {\r\n specular: {value: new Color().setHex(0xffffff)},\r\n glossiness: {value: 1},\r\n specularMap: {value: null},\r\n glossinessMap: {value: null}\r\n };\r\n\r\n this._extraUniforms = uniforms;\r\n\r\n this.onBeforeCompile = function (shader) {\r\n\r\n for (const uniformName in uniforms) {\r\n\r\n shader.uniforms[uniformName] = uniforms[uniformName];\r\n\r\n }\r\n\r\n shader.fragmentShader = shader.fragmentShader\r\n .replace('uniform float roughness;', 'uniform vec3 specular;')\r\n .replace('uniform float metalness;', 'uniform float glossiness;')\r\n .replace('#include ', specularMapParsFragmentChunk)\r\n .replace('#include ', glossinessMapParsFragmentChunk)\r\n .replace('#include ', specularMapFragmentChunk)\r\n .replace('#include ', glossinessMapFragmentChunk)\r\n .replace('#include ', lightPhysicalFragmentChunk);\r\n\r\n };\r\n\r\n Object.defineProperties(this, {\r\n\r\n specular: {\r\n get: function () {\r\n\r\n return uniforms.specular.value;\r\n\r\n },\r\n set: function (v) {\r\n\r\n uniforms.specular.value = v;\r\n\r\n }\r\n },\r\n\r\n specularMap: {\r\n get: function () {\r\n\r\n return uniforms.specularMap.value;\r\n\r\n },\r\n set: function (v) {\r\n\r\n uniforms.specularMap.value = v;\r\n\r\n if (v) {\r\n\r\n this.defines.USE_SPECULARMAP = ''; // USE_UV is set by the renderer for specular maps\r\n\r\n } else {\r\n\r\n delete this.defines.USE_SPECULARMAP;\r\n\r\n }\r\n\r\n }\r\n },\r\n\r\n glossiness: {\r\n get: function () {\r\n\r\n return uniforms.glossiness.value;\r\n\r\n },\r\n set: function (v) {\r\n\r\n uniforms.glossiness.value = v;\r\n\r\n }\r\n },\r\n\r\n glossinessMap: {\r\n get: function () {\r\n\r\n return uniforms.glossinessMap.value;\r\n\r\n },\r\n set: function (v) {\r\n\r\n uniforms.glossinessMap.value = v;\r\n\r\n if (v) {\r\n\r\n this.defines.USE_GLOSSINESSMAP = '';\r\n this.defines.USE_UV = '';\r\n\r\n } else {\r\n\r\n delete this.defines.USE_GLOSSINESSMAP;\r\n delete this.defines.USE_UV;\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n });\r\n\r\n delete this.metalness;\r\n delete this.roughness;\r\n delete this.metalnessMap;\r\n delete this.roughnessMap;\r\n\r\n this.setValues(params);\r\n\r\n }\r\n\r\n copy(source) {\r\n\r\n super.copy(source);\r\n\r\n this.specularMap = source.specularMap;\r\n this.specular.copy(source.specular);\r\n this.glossinessMap = source.glossinessMap;\r\n this.glossiness = source.glossiness;\r\n delete this.metalness;\r\n delete this.roughness;\r\n delete this.metalnessMap;\r\n delete this.roughnessMap;\r\n return this;\r\n\r\n }\r\n\r\n}\r\n\r\n\r\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\r\n\r\n constructor() {\r\n\r\n this.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\r\n\r\n this.specularGlossinessParams = [\r\n 'color',\r\n 'map',\r\n 'lightMap',\r\n 'lightMapIntensity',\r\n 'aoMap',\r\n 'aoMapIntensity',\r\n 'emissive',\r\n 'emissiveIntensity',\r\n 'emissiveMap',\r\n 'bumpMap',\r\n 'bumpScale',\r\n 'normalMap',\r\n 'normalMapType',\r\n 'displacementMap',\r\n 'displacementScale',\r\n 'displacementBias',\r\n 'specularMap',\r\n 'specular',\r\n 'glossinessMap',\r\n 'glossiness',\r\n 'alphaMap',\r\n 'envMap',\r\n 'envMapIntensity',\r\n 'refractionRatio',\r\n ];\r\n\r\n }\r\n\r\n getMaterialType() {\r\n\r\n return GLTFMeshStandardSGMaterial;\r\n\r\n }\r\n\r\n extendParams(materialParams, materialDef, parser) {\r\n\r\n const pbrSpecularGlossiness = materialDef.extensions[this.name];\r\n\r\n materialParams.color = new Color(1.0, 1.0, 1.0);\r\n materialParams.opacity = 1.0;\r\n\r\n const pending = [];\r\n\r\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\r\n\r\n const array = pbrSpecularGlossiness.diffuseFactor;\r\n\r\n materialParams.color.fromArray(array);\r\n materialParams.opacity = array[3];\r\n\r\n }\r\n\r\n if (pbrSpecularGlossiness.diffuseTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'map', pbrSpecularGlossiness.diffuseTexture));\r\n\r\n }\r\n\r\n materialParams.emissive = new Color(0.0, 0.0, 0.0);\r\n materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\r\n materialParams.specular = new Color(1.0, 1.0, 1.0);\r\n\r\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\r\n\r\n materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\r\n\r\n }\r\n\r\n if (pbrSpecularGlossiness.specularGlossinessTexture !== undefined) {\r\n\r\n const specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\r\n pending.push(parser.assignTexture(materialParams, 'glossinessMap', specGlossMapDef));\r\n pending.push(parser.assignTexture(materialParams, 'specularMap', specGlossMapDef));\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n createMaterial(materialParams) {\r\n\r\n const material = new GLTFMeshStandardSGMaterial(materialParams);\r\n material.fog = true;\r\n\r\n material.color = materialParams.color;\r\n\r\n material.map = materialParams.map === undefined ? null : materialParams.map;\r\n\r\n material.lightMap = null;\r\n material.lightMapIntensity = 1.0;\r\n\r\n material.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\r\n material.aoMapIntensity = 1.0;\r\n\r\n material.emissive = materialParams.emissive;\r\n material.emissiveIntensity = 1.0;\r\n material.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\r\n\r\n material.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\r\n material.bumpScale = 1;\r\n\r\n material.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\r\n material.normalMapType = TangentSpaceNormalMap;\r\n\r\n if (materialParams.normalScale) material.normalScale = materialParams.normalScale;\r\n\r\n material.displacementMap = null;\r\n material.displacementScale = 1;\r\n material.displacementBias = 0;\r\n\r\n material.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\r\n material.specular = materialParams.specular;\r\n\r\n material.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\r\n material.glossiness = materialParams.glossiness;\r\n\r\n material.alphaMap = null;\r\n\r\n material.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\r\n material.envMapIntensity = 1.0;\r\n\r\n material.refractionRatio = 0.98;\r\n\r\n return material;\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Mesh Quantization Extension\r\n *\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\r\n */\r\nclass GLTFMeshQuantizationExtension {\r\n\r\n constructor() {\r\n\r\n this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\r\n\r\n }\r\n\r\n}\r\n\r\n/*********************************/\r\n/********** INTERPOLATION ********/\r\n/*********************************/\r\n\r\n// Spline Interpolation\r\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\r\nclass GLTFCubicSplineInterpolant extends Interpolant {\r\n\r\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\r\n\r\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\r\n\r\n }\r\n\r\n copySampleValue_(index) {\r\n\r\n // Copies a sample value to the result buffer. See description of glTF\r\n // CUBICSPLINE values layout in interpolate_() function below.\r\n\r\n const result = this.resultBuffer,\r\n values = this.sampleValues,\r\n valueSize = this.valueSize,\r\n offset = index * valueSize * 3 + valueSize;\r\n\r\n for (let i = 0; i !== valueSize; i++) {\r\n\r\n result[i] = values[offset + i];\r\n\r\n }\r\n\r\n return result;\r\n\r\n }\r\n\r\n}\r\n\r\nGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\r\n\r\nGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\r\n\r\nGLTFCubicSplineInterpolant.prototype.interpolate_ = function (i1, t0, t, t1) {\r\n\r\n const result = this.resultBuffer;\r\n const values = this.sampleValues;\r\n const stride = this.valueSize;\r\n\r\n const stride2 = stride * 2;\r\n const stride3 = stride * 3;\r\n\r\n const td = t1 - t0;\r\n\r\n const p = (t - t0) / td;\r\n const pp = p * p;\r\n const ppp = pp * p;\r\n\r\n const offset1 = i1 * stride3;\r\n const offset0 = offset1 - stride3;\r\n\r\n const s2 = -2 * ppp + 3 * pp;\r\n const s3 = ppp - pp;\r\n const s0 = 1 - s2;\r\n const s1 = s3 - pp + p;\r\n\r\n // Layout of keyframe output values for CUBICSPLINE animations:\r\n // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\r\n for (let i = 0; i !== stride; i++) {\r\n\r\n const p0 = values[offset0 + i + stride]; // splineVertex_k\r\n const m0 = values[offset0 + i + stride2] * td; // outTangent_k * (t_k+1 - t_k)\r\n const p1 = values[offset1 + i + stride]; // splineVertex_k+1\r\n const m1 = values[offset1 + i] * td; // inTangent_k+1 * (t_k+1 - t_k)\r\n\r\n result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\r\n\r\n }\r\n\r\n return result;\r\n\r\n};\r\n\r\nconst _q = new Quaternion();\r\n\r\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\r\n\r\n interpolate_(i1, t0, t, t1) {\r\n\r\n const result = super.interpolate_(i1, t0, t, t1);\r\n\r\n _q.fromArray(result).normalize().toArray(result);\r\n\r\n return result;\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n/*********************************/\r\n/********** INTERNALS ************/\r\n/*********************************/\r\n\r\n/* CONSTANTS */\r\n\r\nconst WEBGL_CONSTANTS = {\r\n FLOAT: 5126,\r\n //FLOAT_MAT2: 35674,\r\n FLOAT_MAT3: 35675,\r\n FLOAT_MAT4: 35676,\r\n FLOAT_VEC2: 35664,\r\n FLOAT_VEC3: 35665,\r\n FLOAT_VEC4: 35666,\r\n LINEAR: 9729,\r\n REPEAT: 10497,\r\n SAMPLER_2D: 35678,\r\n POINTS: 0,\r\n LINES: 1,\r\n LINE_LOOP: 2,\r\n LINE_STRIP: 3,\r\n TRIANGLES: 4,\r\n TRIANGLE_STRIP: 5,\r\n TRIANGLE_FAN: 6,\r\n UNSIGNED_BYTE: 5121,\r\n UNSIGNED_SHORT: 5123\r\n};\r\n\r\nconst WEBGL_COMPONENT_TYPES = {\r\n 5120: Int8Array,\r\n 5121: Uint8Array,\r\n 5122: Int16Array,\r\n 5123: Uint16Array,\r\n 5125: Uint32Array,\r\n 5126: Float32Array\r\n};\r\n\r\nconst WEBGL_FILTERS = {\r\n 9728: NearestFilter,\r\n 9729: LinearFilter,\r\n 9984: NearestMipmapNearestFilter,\r\n 9985: LinearMipmapNearestFilter,\r\n 9986: NearestMipmapLinearFilter,\r\n 9987: LinearMipmapLinearFilter\r\n};\r\n\r\nconst WEBGL_WRAPPINGS = {\r\n 33071: ClampToEdgeWrapping,\r\n 33648: MirroredRepeatWrapping,\r\n 10497: RepeatWrapping\r\n};\r\n\r\nconst WEBGL_TYPE_SIZES = {\r\n 'SCALAR': 1,\r\n 'VEC2': 2,\r\n 'VEC3': 3,\r\n 'VEC4': 4,\r\n 'MAT2': 4,\r\n 'MAT3': 9,\r\n 'MAT4': 16\r\n};\r\n\r\nconst ATTRIBUTES = {\r\n POSITION: 'position',\r\n NORMAL: 'normal',\r\n TANGENT: 'tangent',\r\n TEXCOORD_0: 'uv',\r\n TEXCOORD_1: 'uv2',\r\n COLOR_0: 'color',\r\n WEIGHTS_0: 'skinWeight',\r\n JOINTS_0: 'skinIndex',\r\n};\r\n\r\nconst PATH_PROPERTIES = {\r\n scale: 'scale',\r\n translation: 'position',\r\n rotation: 'quaternion',\r\n weights: 'morphTargetInfluences'\r\n};\r\n\r\nconst INTERPOLATION = {\r\n CUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\r\n // keyframe track will be initialized with a default interpolation type, then modified.\r\n LINEAR: InterpolateLinear,\r\n STEP: InterpolateDiscrete\r\n};\r\n\r\nconst ALPHA_MODES = {\r\n OPAQUE: 'OPAQUE',\r\n MASK: 'MASK',\r\n BLEND: 'BLEND'\r\n};\r\n\r\n/**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\r\n */\r\nfunction createDefaultMaterial(cache) {\r\n\r\n if (cache['DefaultMaterial'] === undefined) {\r\n\r\n cache['DefaultMaterial'] = new MeshStandardMaterial({\r\n color: 0xFFFFFF,\r\n emissive: 0x000000,\r\n metalness: 1,\r\n roughness: 1,\r\n transparent: false,\r\n depthTest: true,\r\n side: FrontSide\r\n });\r\n\r\n }\r\n\r\n return cache['DefaultMaterial'];\r\n\r\n}\r\n\r\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\r\n\r\n // Add unknown glTF extensions to an object's userData.\r\n\r\n for (const name in objectDef.extensions) {\r\n\r\n if (knownExtensions[name] === undefined) {\r\n\r\n object.userData.gltfExtensions = object.userData.gltfExtensions || {};\r\n object.userData.gltfExtensions[name] = objectDef.extensions[name];\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * @param {Object3D|Material|BufferGeometry} object\r\n * @param {GLTF.definition} gltfDef\r\n */\r\nfunction assignExtrasToUserData(object, gltfDef) {\r\n\r\n if (gltfDef.extras !== undefined) {\r\n\r\n if (typeof gltfDef.extras === 'object') {\r\n\r\n Object.assign(object.userData, gltfDef.extras);\r\n\r\n } else {\r\n\r\n console.warn('THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras);\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\r\n *\r\n * @param {BufferGeometry} geometry\r\n * @param {Array} targets\r\n * @param {GLTFParser} parser\r\n * @return {Promise}\r\n */\r\nfunction addMorphTargets(geometry, targets, parser) {\r\n\r\n let hasMorphPosition = false;\r\n let hasMorphNormal = false;\r\n\r\n for (let i = 0, il = targets.length; i < il; i++) {\r\n\r\n const target = targets[i];\r\n\r\n if (target.POSITION !== undefined) hasMorphPosition = true;\r\n if (target.NORMAL !== undefined) hasMorphNormal = true;\r\n\r\n if (hasMorphPosition && hasMorphNormal) break;\r\n\r\n }\r\n\r\n if (!hasMorphPosition && !hasMorphNormal) return Promise.resolve(geometry);\r\n\r\n const pendingPositionAccessors = [];\r\n const pendingNormalAccessors = [];\r\n\r\n for (let i = 0, il = targets.length; i < il; i++) {\r\n\r\n const target = targets[i];\r\n\r\n if (hasMorphPosition) {\r\n\r\n const pendingAccessor = target.POSITION !== undefined\r\n ? parser.getDependency('accessor', target.POSITION)\r\n : geometry.attributes.position;\r\n\r\n pendingPositionAccessors.push(pendingAccessor);\r\n\r\n }\r\n\r\n if (hasMorphNormal) {\r\n\r\n const pendingAccessor = target.NORMAL !== undefined\r\n ? parser.getDependency('accessor', target.NORMAL)\r\n : geometry.attributes.normal;\r\n\r\n pendingNormalAccessors.push(pendingAccessor);\r\n\r\n }\r\n\r\n }\r\n\r\n return Promise.all([\r\n Promise.all(pendingPositionAccessors),\r\n Promise.all(pendingNormalAccessors)\r\n ]).then(function (accessors) {\r\n\r\n const morphPositions = accessors[0];\r\n const morphNormals = accessors[1];\r\n\r\n if (hasMorphPosition) geometry.morphAttributes.position = morphPositions;\r\n if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals;\r\n geometry.morphTargetsRelative = true;\r\n\r\n return geometry;\r\n\r\n });\r\n\r\n}\r\n\r\n/**\r\n * @param {Mesh} mesh\r\n * @param {GLTF.Mesh} meshDef\r\n */\r\nfunction updateMorphTargets(mesh, meshDef) {\r\n\r\n mesh.updateMorphTargets();\r\n\r\n if (meshDef.weights !== undefined) {\r\n\r\n for (let i = 0, il = meshDef.weights.length; i < il; i++) {\r\n\r\n mesh.morphTargetInfluences[i] = meshDef.weights[i];\r\n\r\n }\r\n\r\n }\r\n\r\n // .extras has user-defined data, so check that .extras.targetNames is an array.\r\n if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\r\n\r\n const targetNames = meshDef.extras.targetNames;\r\n\r\n if (mesh.morphTargetInfluences.length === targetNames.length) {\r\n\r\n mesh.morphTargetDictionary = {};\r\n\r\n for (let i = 0, il = targetNames.length; i < il; i++) {\r\n\r\n mesh.morphTargetDictionary[targetNames[i]] = i;\r\n\r\n }\r\n\r\n } else {\r\n\r\n console.warn('THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.');\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nfunction createPrimitiveKey(primitiveDef) {\r\n\r\n const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\r\n let geometryKey;\r\n\r\n if (dracoExtension) {\r\n\r\n geometryKey = 'draco:' + dracoExtension.bufferView\r\n + ':' + dracoExtension.indices\r\n + ':' + createAttributesKey(dracoExtension.attributes);\r\n\r\n } else {\r\n\r\n geometryKey = primitiveDef.indices + ':' + createAttributesKey(primitiveDef.attributes) + ':' + primitiveDef.mode;\r\n\r\n }\r\n\r\n return geometryKey;\r\n\r\n}\r\n\r\nfunction createAttributesKey(attributes) {\r\n\r\n let attributesKey = '';\r\n\r\n const keys = Object.keys(attributes).sort();\r\n\r\n for (let i = 0, il = keys.length; i < il; i++) {\r\n\r\n attributesKey += keys[i] + ':' + attributes[keys[i]] + ';';\r\n\r\n }\r\n\r\n return attributesKey;\r\n\r\n}\r\n\r\nfunction getNormalizedComponentScale(constructor) {\r\n\r\n // Reference:\r\n // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\r\n\r\n switch (constructor) {\r\n\r\n case Int8Array:\r\n return 1 / 127;\r\n\r\n case Uint8Array:\r\n return 1 / 255;\r\n\r\n case Int16Array:\r\n return 1 / 32767;\r\n\r\n case Uint16Array:\r\n return 1 / 65535;\r\n\r\n default:\r\n throw new Error('THREE.GLTFLoader: Unsupported normalized accessor component type.');\r\n\r\n }\r\n\r\n}\r\n\r\n/* GLTF PARSER */\r\n\r\nclass GLTFParser {\r\n\r\n constructor(json = {}, options = {}) {\r\n\r\n this.json = json;\r\n this.extensions = {};\r\n this.plugins = {};\r\n this.options = options;\r\n\r\n // loader object cache\r\n this.cache = new GLTFRegistry();\r\n\r\n // associations between Three.js objects and glTF elements\r\n this.associations = new Map();\r\n\r\n // BufferGeometry caching\r\n this.primitiveCache = {};\r\n\r\n // Object3D instance caches\r\n this.meshCache = {refs: {}, uses: {}};\r\n this.cameraCache = {refs: {}, uses: {}};\r\n this.lightCache = {refs: {}, uses: {}};\r\n\r\n this.textureCache = {};\r\n\r\n // Track node names, to ensure no duplicates\r\n this.nodeNamesUsed = {};\r\n\r\n // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\r\n // expensive work of uploading a texture to the GPU off the main thread.\r\n if (typeof createImageBitmap !== 'undefined' && /Firefox/.test(navigator.userAgent) === false) {\r\n\r\n this.textureLoader = new ImageBitmapLoader(this.options.manager);\r\n\r\n } else {\r\n\r\n this.textureLoader = new TextureLoader(this.options.manager);\r\n\r\n }\r\n\r\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\r\n this.textureLoader.setRequestHeader(this.options.requestHeader);\r\n\r\n this.fileLoader = new FileLoader(this.options.manager);\r\n this.fileLoader.setResponseType('arraybuffer');\r\n\r\n if (this.options.crossOrigin === 'use-credentials') {\r\n\r\n this.fileLoader.setWithCredentials(true);\r\n\r\n }\r\n\r\n }\r\n\r\n setExtensions(extensions) {\r\n\r\n this.extensions = extensions;\r\n\r\n }\r\n\r\n setPlugins(plugins) {\r\n\r\n this.plugins = plugins;\r\n\r\n }\r\n\r\n parse(onLoad, onError) {\r\n\r\n const parser = this;\r\n const json = this.json;\r\n const extensions = this.extensions;\r\n\r\n // Clear the loader cache\r\n this.cache.removeAll();\r\n\r\n // Mark the special nodes/meshes in json for efficient parse\r\n this._invokeAll(function (ext) {\r\n\r\n return ext._markDefs && ext._markDefs();\r\n\r\n });\r\n\r\n Promise.all(this._invokeAll(function (ext) {\r\n\r\n return ext.beforeRoot && ext.beforeRoot();\r\n\r\n })).then(function () {\r\n\r\n return Promise.all([\r\n\r\n parser.getDependencies('scene'),\r\n parser.getDependencies('animation'),\r\n parser.getDependencies('camera'),\r\n\r\n ]);\r\n\r\n }).then(function (dependencies) {\r\n\r\n const result = {\r\n scene: dependencies[0][json.scene || 0],\r\n scenes: dependencies[0],\r\n animations: dependencies[1],\r\n cameras: dependencies[2],\r\n asset: json.asset,\r\n parser: parser,\r\n userData: {}\r\n };\r\n\r\n addUnknownExtensionsToUserData(extensions, result, json);\r\n\r\n assignExtrasToUserData(result, json);\r\n\r\n Promise.all(parser._invokeAll(function (ext) {\r\n\r\n return ext.afterRoot && ext.afterRoot(result);\r\n\r\n })).then(function () {\r\n\r\n onLoad(result);\r\n\r\n });\r\n\r\n }).catch(onError);\r\n\r\n }\r\n\r\n /**\r\n * Marks the special nodes/meshes in json for efficient parse.\r\n */\r\n _markDefs() {\r\n\r\n const nodeDefs = this.json.nodes || [];\r\n const skinDefs = this.json.skins || [];\r\n const meshDefs = this.json.meshes || [];\r\n\r\n // Nothing in the node definition indicates whether it is a Bone or an\r\n // Object3D. Use the skins' joint references to mark bones.\r\n for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\r\n\r\n const joints = skinDefs[skinIndex].joints;\r\n\r\n for (let i = 0, il = joints.length; i < il; i++) {\r\n\r\n nodeDefs[joints[i]].isBone = true;\r\n\r\n }\r\n\r\n }\r\n\r\n // Iterate over all nodes, marking references to shared resources,\r\n // as well as skeleton joints.\r\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\r\n\r\n const nodeDef = nodeDefs[nodeIndex];\r\n\r\n if (nodeDef.mesh !== undefined) {\r\n\r\n this._addNodeRef(this.meshCache, nodeDef.mesh);\r\n\r\n // Nothing in the mesh definition indicates whether it is\r\n // a SkinnedMesh or Mesh. Use the node's mesh reference\r\n // to mark SkinnedMesh if node has skin.\r\n if (nodeDef.skin !== undefined) {\r\n\r\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\r\n\r\n }\r\n\r\n }\r\n\r\n if (nodeDef.camera !== undefined) {\r\n\r\n this._addNodeRef(this.cameraCache, nodeDef.camera);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Counts references to shared node / Object3D resources. These resources\r\n * can be reused, or \"instantiated\", at multiple nodes in the scene\r\n * hierarchy. Mesh, Camera, and Light instances are instantiated and must\r\n * be marked. Non-scenegraph resources (like Materials, Geometries, and\r\n * Textures) can be reused directly and are not marked here.\r\n *\r\n * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\r\n */\r\n _addNodeRef(cache, index) {\r\n\r\n if (index === undefined) return;\r\n\r\n if (cache.refs[index] === undefined) {\r\n\r\n cache.refs[index] = cache.uses[index] = 0;\r\n\r\n }\r\n\r\n cache.refs[index]++;\r\n\r\n }\r\n\r\n /** Returns a reference to a shared resource, cloning it if necessary. */\r\n _getNodeRef(cache, index, object) {\r\n\r\n if (cache.refs[index] <= 1) return object;\r\n\r\n const ref = object.clone();\r\n\r\n // Propagates mappings to the cloned object, prevents mappings on the\r\n // original object from being lost.\r\n const updateMappings = (original, clone) => {\r\n\r\n const mappings = this.associations.get(original);\r\n if (mappings != null) {\r\n\r\n this.associations.set(clone, mappings);\r\n\r\n }\r\n\r\n for (const [i, child] of original.children.entries()) {\r\n\r\n updateMappings(child, clone.children[i]);\r\n\r\n }\r\n\r\n };\r\n\r\n updateMappings(object, ref);\r\n\r\n ref.name += '_instance_' + (cache.uses[index]++);\r\n\r\n return ref;\r\n\r\n }\r\n\r\n _invokeOne(func) {\r\n\r\n const extensions = Object.values(this.plugins);\r\n extensions.push(this);\r\n\r\n for (let i = 0; i < extensions.length; i++) {\r\n\r\n const result = func(extensions[i]);\r\n\r\n if (result) return result;\r\n\r\n }\r\n\r\n return null;\r\n\r\n }\r\n\r\n _invokeAll(func) {\r\n\r\n const extensions = Object.values(this.plugins);\r\n extensions.unshift(this);\r\n\r\n const pending = [];\r\n\r\n for (let i = 0; i < extensions.length; i++) {\r\n\r\n const result = func(extensions[i]);\r\n\r\n if (result) pending.push(result);\r\n\r\n }\r\n\r\n return pending;\r\n\r\n }\r\n\r\n /**\r\n * Requests the specified dependency asynchronously, with caching.\r\n * @param {string} type\r\n * @param {number} index\r\n * @return {Promise}\r\n */\r\n getDependency(type, index) {\r\n\r\n const cacheKey = type + ':' + index;\r\n let dependency = this.cache.get(cacheKey);\r\n\r\n if (!dependency) {\r\n\r\n switch (type) {\r\n\r\n case 'scene':\r\n dependency = this.loadScene(index);\r\n break;\r\n\r\n case 'node':\r\n dependency = this.loadNode(index);\r\n break;\r\n\r\n case 'mesh':\r\n dependency = this._invokeOne(function (ext) {\r\n\r\n return ext.loadMesh && ext.loadMesh(index);\r\n\r\n });\r\n break;\r\n\r\n case 'accessor':\r\n dependency = this.loadAccessor(index);\r\n break;\r\n\r\n case 'bufferView':\r\n dependency = this._invokeOne(function (ext) {\r\n\r\n return ext.loadBufferView && ext.loadBufferView(index);\r\n\r\n });\r\n break;\r\n\r\n case 'buffer':\r\n dependency = this.loadBuffer(index);\r\n break;\r\n\r\n case 'material':\r\n dependency = this._invokeOne(function (ext) {\r\n\r\n return ext.loadMaterial && ext.loadMaterial(index);\r\n\r\n });\r\n break;\r\n\r\n case 'texture':\r\n dependency = this._invokeOne(function (ext) {\r\n\r\n return ext.loadTexture && ext.loadTexture(index);\r\n\r\n });\r\n break;\r\n\r\n case 'skin':\r\n dependency = this.loadSkin(index);\r\n break;\r\n\r\n case 'animation':\r\n dependency = this.loadAnimation(index);\r\n break;\r\n\r\n case 'camera':\r\n dependency = this.loadCamera(index);\r\n break;\r\n\r\n default:\r\n throw new Error('Unknown type: ' + type);\r\n\r\n }\r\n\r\n this.cache.add(cacheKey, dependency);\r\n\r\n }\r\n\r\n return dependency;\r\n\r\n }\r\n\r\n /**\r\n * Requests all dependencies of the specified type asynchronously, with caching.\r\n * @param {string} type\r\n * @return {Promise>}\r\n */\r\n getDependencies(type) {\r\n\r\n let dependencies = this.cache.get(type);\r\n\r\n if (!dependencies) {\r\n\r\n const parser = this;\r\n const defs = this.json[type + (type === 'mesh' ? 'es' : 's')] || [];\r\n\r\n dependencies = Promise.all(defs.map(function (def, index) {\r\n\r\n return parser.getDependency(type, index);\r\n\r\n }));\r\n\r\n this.cache.add(type, dependencies);\r\n\r\n }\r\n\r\n return dependencies;\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\r\n * @param {number} bufferIndex\r\n * @return {Promise}\r\n */\r\n loadBuffer(bufferIndex) {\r\n\r\n const bufferDef = this.json.buffers[bufferIndex];\r\n const loader = this.fileLoader;\r\n\r\n if (bufferDef.type && bufferDef.type !== 'arraybuffer') {\r\n\r\n throw new Error('THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.');\r\n\r\n }\r\n\r\n // If present, GLB container is required to be the first buffer.\r\n if (bufferDef.uri === undefined && bufferIndex === 0) {\r\n\r\n return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\r\n\r\n }\r\n\r\n const options = this.options;\r\n\r\n return new Promise(function (resolve, reject) {\r\n\r\n loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, undefined, function () {\r\n\r\n reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\r\n * @param {number} bufferViewIndex\r\n * @return {Promise}\r\n */\r\n loadBufferView(bufferViewIndex) {\r\n\r\n const bufferViewDef = this.json.bufferViews[bufferViewIndex];\r\n\r\n return this.getDependency('buffer', bufferViewDef.buffer).then(function (buffer) {\r\n\r\n const byteLength = bufferViewDef.byteLength || 0;\r\n const byteOffset = bufferViewDef.byteOffset || 0;\r\n return buffer.slice(byteOffset, byteOffset + byteLength);\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\r\n * @param {number} accessorIndex\r\n * @return {Promise}\r\n */\r\n loadAccessor(accessorIndex) {\r\n\r\n const parser = this;\r\n const json = this.json;\r\n\r\n const accessorDef = this.json.accessors[accessorIndex];\r\n\r\n if (accessorDef.bufferView === undefined && accessorDef.sparse === undefined) {\r\n\r\n // Ignore empty accessors, which may be used to declare runtime\r\n // information about attributes coming from another source (e.g. Draco\r\n // compression extension).\r\n return Promise.resolve(null);\r\n\r\n }\r\n\r\n const pendingBufferViews = [];\r\n\r\n if (accessorDef.bufferView !== undefined) {\r\n\r\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.bufferView));\r\n\r\n } else {\r\n\r\n pendingBufferViews.push(null);\r\n\r\n }\r\n\r\n if (accessorDef.sparse !== undefined) {\r\n\r\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.indices.bufferView));\r\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.values.bufferView));\r\n\r\n }\r\n\r\n return Promise.all(pendingBufferViews).then(function (bufferViews) {\r\n\r\n const bufferView = bufferViews[0];\r\n\r\n const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\r\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\r\n\r\n // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\r\n const elementBytes = TypedArray.BYTES_PER_ELEMENT;\r\n const itemBytes = elementBytes * itemSize;\r\n const byteOffset = accessorDef.byteOffset || 0;\r\n const byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[accessorDef.bufferView].byteStride : undefined;\r\n const normalized = accessorDef.normalized === true;\r\n let array, bufferAttribute;\r\n\r\n // The buffer is not interleaved if the stride is the item size in bytes.\r\n if (byteStride && byteStride !== itemBytes) {\r\n\r\n // Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\r\n // This makes sure that IBA.count reflects accessor.count properly\r\n const ibSlice = Math.floor(byteOffset / byteStride);\r\n const ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\r\n let ib = parser.cache.get(ibCacheKey);\r\n\r\n if (!ib) {\r\n\r\n array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes);\r\n\r\n // Integer parameters to IB/IBA are in array elements, not bytes.\r\n ib = new InterleavedBuffer(array, byteStride / elementBytes);\r\n\r\n parser.cache.add(ibCacheKey, ib);\r\n\r\n }\r\n\r\n bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, (byteOffset % byteStride) / elementBytes, normalized);\r\n\r\n } else {\r\n\r\n if (bufferView === null) {\r\n\r\n array = new TypedArray(accessorDef.count * itemSize);\r\n\r\n } else {\r\n\r\n array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\r\n\r\n }\r\n\r\n bufferAttribute = new BufferAttribute(array, itemSize, normalized);\r\n\r\n }\r\n\r\n // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\r\n if (accessorDef.sparse !== undefined) {\r\n\r\n const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\r\n const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\r\n\r\n const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\r\n const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\r\n\r\n const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\r\n const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\r\n\r\n if (bufferView !== null) {\r\n\r\n // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\r\n bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\r\n\r\n }\r\n\r\n for (let i = 0, il = sparseIndices.length; i < il; i++) {\r\n\r\n const index = sparseIndices[i];\r\n\r\n bufferAttribute.setX(index, sparseValues[i * itemSize]);\r\n if (itemSize >= 2) bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\r\n if (itemSize >= 3) bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\r\n if (itemSize >= 4) bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\r\n if (itemSize >= 5) throw new Error('THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.');\r\n\r\n }\r\n\r\n }\r\n\r\n return bufferAttribute;\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\r\n * @param {number} textureIndex\r\n * @return {Promise}\r\n */\r\n loadTexture(textureIndex) {\r\n\r\n const json = this.json;\r\n const options = this.options;\r\n const textureDef = json.textures[textureIndex];\r\n const source = json.images[textureDef.source];\r\n\r\n let loader = this.textureLoader;\r\n\r\n if (source.uri) {\r\n\r\n const handler = options.manager.getHandler(source.uri);\r\n if (handler !== null) loader = handler;\r\n\r\n }\r\n\r\n return this.loadTextureImage(textureIndex, source, loader);\r\n\r\n }\r\n\r\n loadTextureImage(textureIndex, source, loader) {\r\n\r\n const parser = this;\r\n const json = this.json;\r\n const options = this.options;\r\n\r\n const textureDef = json.textures[textureIndex];\r\n\r\n const cacheKey = (source.uri || source.bufferView) + ':' + textureDef.sampler;\r\n\r\n if (this.textureCache[cacheKey]) {\r\n\r\n // See https://github.com/mrdoob/three.js/issues/21559.\r\n return this.textureCache[cacheKey];\r\n\r\n }\r\n\r\n const URL = window.self.URL || window.self.webkitURL;\r\n\r\n let sourceURI = source.uri || '';\r\n let isObjectURL = false;\r\n\r\n if (source.bufferView !== undefined) {\r\n\r\n // Load binary image data from bufferView, if provided.\r\n\r\n sourceURI = parser.getDependency('bufferView', source.bufferView).then(function (bufferView) {\r\n\r\n isObjectURL = true;\r\n const blob = new Blob([bufferView], {type: source.mimeType});\r\n sourceURI = URL.createObjectURL(blob);\r\n return sourceURI;\r\n\r\n });\r\n\r\n } else if (source.uri === undefined) {\r\n\r\n throw new Error('THREE.GLTFLoader: Image ' + textureIndex + ' is missing URI and bufferView');\r\n\r\n }\r\n\r\n const promise = Promise.resolve(sourceURI).then(function (sourceURI) {\r\n\r\n return new Promise(function (resolve, reject) {\r\n\r\n let onLoad = resolve;\r\n\r\n if (loader.isImageBitmapLoader === true) {\r\n\r\n onLoad = function (imageBitmap) {\r\n\r\n const texture = new Texture(imageBitmap);\r\n texture.needsUpdate = true;\r\n\r\n resolve(texture);\r\n\r\n };\r\n\r\n }\r\n\r\n loader.load(LoaderUtils.resolveURL(sourceURI, options.path), onLoad, undefined, reject);\r\n\r\n });\r\n\r\n }).then(function (texture) {\r\n\r\n // Clean up resources and configure Texture.\r\n\r\n if (isObjectURL === true) {\r\n\r\n URL.revokeObjectURL(sourceURI);\r\n\r\n }\r\n\r\n texture.flipY = false;\r\n\r\n if (textureDef.name) texture.name = textureDef.name;\r\n\r\n const samplers = json.samplers || {};\r\n const sampler = samplers[textureDef.sampler] || {};\r\n\r\n texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\r\n texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\r\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\r\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\r\n\r\n parser.associations.set(texture, {textures: textureIndex});\r\n\r\n return texture;\r\n\r\n }).catch(function () {\r\n\r\n console.error('THREE.GLTFLoader: Couldn\\'t load texture', sourceURI);\r\n return null;\r\n\r\n });\r\n\r\n this.textureCache[cacheKey] = promise;\r\n\r\n return promise;\r\n\r\n }\r\n\r\n /**\r\n * Asynchronously assigns a texture to the given material parameters.\r\n * @param {Object} materialParams\r\n * @param {string} mapName\r\n * @param {Object} mapDef\r\n * @return {Promise}\r\n */\r\n assignTexture(materialParams, mapName, mapDef) {\r\n\r\n const parser = this;\r\n\r\n return this.getDependency('texture', mapDef.index).then(function (texture) {\r\n\r\n // Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\r\n // However, we will copy UV set 0 to UV set 1 on demand for aoMap\r\n if (mapDef.texCoord !== undefined && mapDef.texCoord != 0 && !(mapName === 'aoMap' && mapDef.texCoord == 1)) {\r\n\r\n console.warn('THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.');\r\n\r\n }\r\n\r\n if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\r\n\r\n const transform = mapDef.extensions !== undefined ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : undefined;\r\n\r\n if (transform) {\r\n\r\n const gltfReference = parser.associations.get(texture);\r\n texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\r\n parser.associations.set(texture, gltfReference);\r\n\r\n }\r\n\r\n }\r\n\r\n materialParams[mapName] = texture;\r\n\r\n return texture;\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Assigns final material to a Mesh, Line, or Points instance. The instance\r\n * already has a material (generated from the glTF material options alone)\r\n * but reuse of the same glTF material may require multiple threejs materials\r\n * to accommodate different primitive types, defines, etc. New materials will\r\n * be created if necessary, and reused from a cache.\r\n * @param {Object3D} mesh Mesh, Line, or Points instance.\r\n */\r\n assignFinalMaterial(mesh) {\r\n\r\n const geometry = mesh.geometry;\r\n let material = mesh.material;\r\n\r\n const useDerivativeTangents = geometry.attributes.tangent === undefined;\r\n const useVertexColors = geometry.attributes.color !== undefined;\r\n const useFlatShading = geometry.attributes.normal === undefined;\r\n\r\n if (mesh.isPoints) {\r\n\r\n const cacheKey = 'PointsMaterial:' + material.uuid;\r\n\r\n let pointsMaterial = this.cache.get(cacheKey);\r\n\r\n if (!pointsMaterial) {\r\n\r\n pointsMaterial = new PointsMaterial();\r\n Material.prototype.copy.call(pointsMaterial, material);\r\n pointsMaterial.color.copy(material.color);\r\n pointsMaterial.map = material.map;\r\n pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\r\n\r\n this.cache.add(cacheKey, pointsMaterial);\r\n\r\n }\r\n\r\n material = pointsMaterial;\r\n\r\n } else if (mesh.isLine) {\r\n\r\n const cacheKey = 'LineBasicMaterial:' + material.uuid;\r\n\r\n let lineMaterial = this.cache.get(cacheKey);\r\n\r\n if (!lineMaterial) {\r\n\r\n lineMaterial = new LineBasicMaterial();\r\n Material.prototype.copy.call(lineMaterial, material);\r\n lineMaterial.color.copy(material.color);\r\n\r\n this.cache.add(cacheKey, lineMaterial);\r\n\r\n }\r\n\r\n material = lineMaterial;\r\n\r\n }\r\n\r\n // Clone the material if it will be modified\r\n if (useDerivativeTangents || useVertexColors || useFlatShading) {\r\n\r\n let cacheKey = 'ClonedMaterial:' + material.uuid + ':';\r\n\r\n if (material.isGLTFSpecularGlossinessMaterial) cacheKey += 'specular-glossiness:';\r\n if (useDerivativeTangents) cacheKey += 'derivative-tangents:';\r\n if (useVertexColors) cacheKey += 'vertex-colors:';\r\n if (useFlatShading) cacheKey += 'flat-shading:';\r\n\r\n let cachedMaterial = this.cache.get(cacheKey);\r\n\r\n if (!cachedMaterial) {\r\n\r\n cachedMaterial = material.clone();\r\n\r\n if (useVertexColors) cachedMaterial.vertexColors = true;\r\n if (useFlatShading) cachedMaterial.flatShading = true;\r\n\r\n if (useDerivativeTangents) {\r\n\r\n // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\r\n if (cachedMaterial.normalScale) cachedMaterial.normalScale.y *= -1;\r\n if (cachedMaterial.clearcoatNormalScale) cachedMaterial.clearcoatNormalScale.y *= -1;\r\n\r\n }\r\n\r\n this.cache.add(cacheKey, cachedMaterial);\r\n\r\n this.associations.set(cachedMaterial, this.associations.get(material));\r\n\r\n }\r\n\r\n material = cachedMaterial;\r\n\r\n }\r\n\r\n // workarounds for mesh and geometry\r\n\r\n if (material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined) {\r\n\r\n geometry.setAttribute('uv2', geometry.attributes.uv);\r\n\r\n }\r\n\r\n mesh.material = material;\r\n\r\n }\r\n\r\n getMaterialType( /* materialIndex */) {\r\n\r\n return MeshStandardMaterial;\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\r\n * @param {number} materialIndex\r\n * @return {Promise}\r\n */\r\n loadMaterial(materialIndex) {\r\n\r\n const parser = this;\r\n const json = this.json;\r\n const extensions = this.extensions;\r\n const materialDef = json.materials[materialIndex];\r\n\r\n let materialType;\r\n const materialParams = {};\r\n const materialExtensions = materialDef.extensions || {};\r\n\r\n const pending = [];\r\n\r\n if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\r\n\r\n const sgExtension = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];\r\n materialType = sgExtension.getMaterialType();\r\n pending.push(sgExtension.extendParams(materialParams, materialDef, parser));\r\n\r\n } else if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\r\n\r\n const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\r\n materialType = kmuExtension.getMaterialType();\r\n pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\r\n\r\n } else {\r\n\r\n // Specification:\r\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\r\n\r\n const metallicRoughness = materialDef.pbrMetallicRoughness || {};\r\n\r\n materialParams.color = new Color(1.0, 1.0, 1.0);\r\n materialParams.opacity = 1.0;\r\n\r\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\r\n\r\n const array = metallicRoughness.baseColorFactor;\r\n\r\n materialParams.color.fromArray(array);\r\n materialParams.opacity = array[3];\r\n\r\n }\r\n\r\n if (metallicRoughness.baseColorTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\r\n\r\n }\r\n\r\n materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\r\n materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\r\n\r\n if (metallicRoughness.metallicRoughnessTexture !== undefined) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture));\r\n pending.push(parser.assignTexture(materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture));\r\n\r\n }\r\n\r\n materialType = this._invokeOne(function (ext) {\r\n\r\n return ext.getMaterialType && ext.getMaterialType(materialIndex);\r\n\r\n });\r\n\r\n pending.push(Promise.all(this._invokeAll(function (ext) {\r\n\r\n return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);\r\n\r\n })));\r\n\r\n }\r\n\r\n if (materialDef.doubleSided === true) {\r\n\r\n materialParams.side = DoubleSide;\r\n\r\n }\r\n\r\n const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\r\n\r\n if (alphaMode === ALPHA_MODES.BLEND) {\r\n\r\n materialParams.transparent = true;\r\n\r\n // See: https://github.com/mrdoob/three.js/issues/17706\r\n materialParams.depthWrite = false;\r\n\r\n } else {\r\n\r\n materialParams.format = RGBFormat;\r\n materialParams.transparent = false;\r\n\r\n if (alphaMode === ALPHA_MODES.MASK) {\r\n\r\n materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\r\n\r\n }\r\n\r\n }\r\n\r\n if (materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'normalMap', materialDef.normalTexture));\r\n\r\n materialParams.normalScale = new Vector2(1, 1);\r\n\r\n if (materialDef.normalTexture.scale !== undefined) {\r\n\r\n const scale = materialDef.normalTexture.scale;\r\n\r\n materialParams.normalScale.set(scale, scale);\r\n\r\n }\r\n\r\n }\r\n\r\n if (materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'aoMap', materialDef.occlusionTexture));\r\n\r\n if (materialDef.occlusionTexture.strength !== undefined) {\r\n\r\n materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\r\n\r\n }\r\n\r\n }\r\n\r\n if (materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial) {\r\n\r\n materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\r\n\r\n }\r\n\r\n if (materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial) {\r\n\r\n pending.push(parser.assignTexture(materialParams, 'emissiveMap', materialDef.emissiveTexture));\r\n\r\n }\r\n\r\n return Promise.all(pending).then(function () {\r\n\r\n let material;\r\n\r\n if (materialType === GLTFMeshStandardSGMaterial) {\r\n\r\n material = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\r\n\r\n } else {\r\n\r\n material = new materialType(materialParams);\r\n\r\n }\r\n\r\n if (materialDef.name) material.name = materialDef.name;\r\n\r\n // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\r\n // if ( material.map ) material.map.encoding = sRGBEncoding;\r\n // if ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\r\n\r\n assignExtrasToUserData(material, materialDef);\r\n\r\n parser.associations.set(material, {materials: materialIndex});\r\n\r\n if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef);\r\n\r\n return material;\r\n\r\n });\r\n\r\n }\r\n\r\n /** When Object3D instances are targeted by animation, they need unique names. */\r\n createUniqueName(originalName) {\r\n\r\n const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || '');\r\n\r\n let name = sanitizedName;\r\n\r\n for (let i = 1; this.nodeNamesUsed[name]; ++i) {\r\n\r\n name = sanitizedName + '_' + i;\r\n\r\n }\r\n\r\n this.nodeNamesUsed[name] = true;\r\n\r\n return name;\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\r\n *\r\n * Creates BufferGeometries from primitives.\r\n *\r\n * @param {Array} primitives\r\n * @return {Promise>}\r\n */\r\n loadGeometries(primitives) {\r\n\r\n const parser = this;\r\n const extensions = this.extensions;\r\n const cache = this.primitiveCache;\r\n\r\n function createDracoPrimitive(primitive) {\r\n\r\n return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]\r\n .decodePrimitive(primitive, parser)\r\n .then(function (geometry) {\r\n\r\n return addPrimitiveAttributes(geometry, primitive, parser);\r\n\r\n });\r\n\r\n }\r\n\r\n const pending = [];\r\n\r\n for (let i = 0, il = primitives.length; i < il; i++) {\r\n\r\n const primitive = primitives[i];\r\n const cacheKey = createPrimitiveKey(primitive);\r\n\r\n // See if we've already created this geometry\r\n const cached = cache[cacheKey];\r\n\r\n if (cached) {\r\n\r\n // Use the cached geometry if it exists\r\n pending.push(cached.promise);\r\n\r\n } else {\r\n\r\n let geometryPromise;\r\n\r\n if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\r\n\r\n // Use DRACO geometry if available\r\n geometryPromise = createDracoPrimitive(primitive);\r\n\r\n } else {\r\n\r\n // Otherwise create a new geometry\r\n geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\r\n\r\n }\r\n\r\n // Cache this geometry\r\n cache[cacheKey] = {primitive: primitive, promise: geometryPromise};\r\n\r\n pending.push(geometryPromise);\r\n\r\n }\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\r\n * @param {number} meshIndex\r\n * @return {Promise}\r\n */\r\n loadMesh(meshIndex) {\r\n\r\n const parser = this;\r\n const json = this.json;\r\n const extensions = this.extensions;\r\n\r\n const meshDef = json.meshes[meshIndex];\r\n const primitives = meshDef.primitives;\r\n\r\n const pending = [];\r\n\r\n for (let i = 0, il = primitives.length; i < il; i++) {\r\n\r\n const material = primitives[i].material === undefined\r\n ? createDefaultMaterial(this.cache)\r\n : this.getDependency('material', primitives[i].material);\r\n\r\n pending.push(material);\r\n\r\n }\r\n\r\n pending.push(parser.loadGeometries(primitives));\r\n\r\n return Promise.all(pending).then(function (results) {\r\n\r\n const materials = results.slice(0, results.length - 1);\r\n const geometries = results[results.length - 1];\r\n\r\n const meshes = [];\r\n\r\n for (let i = 0, il = geometries.length; i < il; i++) {\r\n\r\n const geometry = geometries[i];\r\n const primitive = primitives[i];\r\n\r\n // 1. create Mesh\r\n\r\n let mesh;\r\n\r\n const material = materials[i];\r\n\r\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\r\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\r\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\r\n primitive.mode === undefined) {\r\n\r\n // .isSkinnedMesh isn't in glTF spec. See ._markDefs()\r\n mesh = meshDef.isSkinnedMesh === true\r\n ? new SkinnedMesh(geometry, material)\r\n : new Mesh(geometry, material);\r\n\r\n if (mesh.isSkinnedMesh === true && !mesh.geometry.attributes.skinWeight.normalized) {\r\n\r\n // we normalize floating point skin weight array to fix malformed assets (see #15319)\r\n // it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\r\n mesh.normalizeSkinWeights();\r\n\r\n }\r\n\r\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\r\n\r\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\r\n\r\n } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\r\n\r\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\r\n\r\n }\r\n\r\n } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\r\n\r\n mesh = new LineSegments(geometry, material);\r\n\r\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\r\n\r\n mesh = new Line(geometry, material);\r\n\r\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\r\n\r\n mesh = new LineLoop(geometry, material);\r\n\r\n } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\r\n\r\n mesh = new Points(geometry, material);\r\n\r\n } else {\r\n\r\n throw new Error('THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode);\r\n\r\n }\r\n\r\n if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\r\n\r\n updateMorphTargets(mesh, meshDef);\r\n\r\n }\r\n\r\n mesh.name = parser.createUniqueName(meshDef.name || ('mesh_' + meshIndex));\r\n\r\n assignExtrasToUserData(mesh, meshDef);\r\n\r\n if (primitive.extensions) addUnknownExtensionsToUserData(extensions, mesh, primitive);\r\n\r\n parser.assignFinalMaterial(mesh);\r\n\r\n meshes.push(mesh);\r\n\r\n }\r\n\r\n for (let i = 0, il = meshes.length; i < il; i++) {\r\n\r\n parser.associations.set(meshes[i], {\r\n meshes: meshIndex,\r\n primitives: i\r\n });\r\n\r\n }\r\n\r\n if (meshes.length === 1) {\r\n\r\n return meshes[0];\r\n\r\n }\r\n\r\n const group = new Group();\r\n\r\n parser.associations.set(group, {meshes: meshIndex});\r\n\r\n for (let i = 0, il = meshes.length; i < il; i++) {\r\n\r\n group.add(meshes[i]);\r\n\r\n }\r\n\r\n return group;\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\r\n * @param {number} cameraIndex\r\n * @return {Promise}\r\n */\r\n loadCamera(cameraIndex) {\r\n\r\n let camera;\r\n const cameraDef = this.json.cameras[cameraIndex];\r\n const params = cameraDef[cameraDef.type];\r\n\r\n if (!params) {\r\n\r\n console.warn('THREE.GLTFLoader: Missing camera parameters.');\r\n return;\r\n\r\n }\r\n\r\n if (cameraDef.type === 'perspective') {\r\n\r\n camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\r\n\r\n } else if (cameraDef.type === 'orthographic') {\r\n\r\n camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\r\n\r\n }\r\n\r\n if (cameraDef.name) camera.name = this.createUniqueName(cameraDef.name);\r\n\r\n assignExtrasToUserData(camera, cameraDef);\r\n\r\n return Promise.resolve(camera);\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\r\n * @param {number} skinIndex\r\n * @return {Promise}\r\n */\r\n loadSkin(skinIndex) {\r\n\r\n const skinDef = this.json.skins[skinIndex];\r\n\r\n const skinEntry = {joints: skinDef.joints};\r\n\r\n if (skinDef.inverseBindMatrices === undefined) {\r\n\r\n return Promise.resolve(skinEntry);\r\n\r\n }\r\n\r\n return this.getDependency('accessor', skinDef.inverseBindMatrices).then(function (accessor) {\r\n\r\n skinEntry.inverseBindMatrices = accessor;\r\n\r\n return skinEntry;\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\r\n * @param {number} animationIndex\r\n * @return {Promise}\r\n */\r\n loadAnimation(animationIndex) {\r\n\r\n const json = this.json;\r\n\r\n const animationDef = json.animations[animationIndex];\r\n\r\n const pendingNodes = [];\r\n const pendingInputAccessors = [];\r\n const pendingOutputAccessors = [];\r\n const pendingSamplers = [];\r\n const pendingTargets = [];\r\n\r\n for (let i = 0, il = animationDef.channels.length; i < il; i++) {\r\n\r\n const channel = animationDef.channels[i];\r\n const sampler = animationDef.samplers[channel.sampler];\r\n const target = channel.target;\r\n const name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\r\n const input = animationDef.parameters !== undefined ? animationDef.parameters[sampler.input] : sampler.input;\r\n const output = animationDef.parameters !== undefined ? animationDef.parameters[sampler.output] : sampler.output;\r\n\r\n pendingNodes.push(this.getDependency('node', name));\r\n pendingInputAccessors.push(this.getDependency('accessor', input));\r\n pendingOutputAccessors.push(this.getDependency('accessor', output));\r\n pendingSamplers.push(sampler);\r\n pendingTargets.push(target);\r\n\r\n }\r\n\r\n return Promise.all([\r\n\r\n Promise.all(pendingNodes),\r\n Promise.all(pendingInputAccessors),\r\n Promise.all(pendingOutputAccessors),\r\n Promise.all(pendingSamplers),\r\n Promise.all(pendingTargets)\r\n\r\n ]).then(function (dependencies) {\r\n\r\n const nodes = dependencies[0];\r\n const inputAccessors = dependencies[1];\r\n const outputAccessors = dependencies[2];\r\n const samplers = dependencies[3];\r\n const targets = dependencies[4];\r\n\r\n const tracks = [];\r\n\r\n for (let i = 0, il = nodes.length; i < il; i++) {\r\n\r\n const node = nodes[i];\r\n const inputAccessor = inputAccessors[i];\r\n const outputAccessor = outputAccessors[i];\r\n const sampler = samplers[i];\r\n const target = targets[i];\r\n\r\n if (node === undefined) continue;\r\n\r\n node.updateMatrix();\r\n node.matrixAutoUpdate = true;\r\n\r\n let TypedKeyframeTrack;\r\n\r\n switch (PATH_PROPERTIES[target.path]) {\r\n\r\n case PATH_PROPERTIES.weights:\r\n\r\n TypedKeyframeTrack = NumberKeyframeTrack;\r\n break;\r\n\r\n case PATH_PROPERTIES.rotation:\r\n\r\n TypedKeyframeTrack = QuaternionKeyframeTrack;\r\n break;\r\n\r\n case PATH_PROPERTIES.position:\r\n case PATH_PROPERTIES.scale:\r\n default:\r\n\r\n TypedKeyframeTrack = VectorKeyframeTrack;\r\n break;\r\n\r\n }\r\n\r\n const targetName = node.name ? node.name : node.uuid;\r\n\r\n const interpolation = sampler.interpolation !== undefined ? INTERPOLATION[sampler.interpolation] : InterpolateLinear;\r\n\r\n const targetNames = [];\r\n\r\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\r\n\r\n // Node may be a Group (glTF mesh with several primitives) or a Mesh.\r\n node.traverse(function (object) {\r\n\r\n if (object.isMesh === true && object.morphTargetInfluences) {\r\n\r\n targetNames.push(object.name ? object.name : object.uuid);\r\n\r\n }\r\n\r\n });\r\n\r\n } else {\r\n\r\n targetNames.push(targetName);\r\n\r\n }\r\n\r\n let outputArray = outputAccessor.array;\r\n\r\n if (outputAccessor.normalized) {\r\n\r\n const scale = getNormalizedComponentScale(outputArray.constructor);\r\n const scaled = new Float32Array(outputArray.length);\r\n\r\n for (let j = 0, jl = outputArray.length; j < jl; j++) {\r\n\r\n scaled[j] = outputArray[j] * scale;\r\n\r\n }\r\n\r\n outputArray = scaled;\r\n\r\n }\r\n\r\n for (let j = 0, jl = targetNames.length; j < jl; j++) {\r\n\r\n const track = new TypedKeyframeTrack(\r\n targetNames[j] + '.' + PATH_PROPERTIES[target.path],\r\n inputAccessor.array,\r\n outputArray,\r\n interpolation\r\n );\r\n\r\n // Override interpolation with custom factory method.\r\n if (sampler.interpolation === 'CUBICSPLINE') {\r\n\r\n track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) {\r\n\r\n // A CUBICSPLINE keyframe in glTF has three output values for each input value,\r\n // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\r\n // must be divided by three to get the interpolant's sampleSize argument.\r\n\r\n const interpolantType = (this instanceof QuaternionKeyframeTrack) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\r\n\r\n return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\r\n\r\n };\r\n\r\n // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\r\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\r\n\r\n }\r\n\r\n tracks.push(track);\r\n\r\n }\r\n\r\n }\r\n\r\n const name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\r\n\r\n return new AnimationClip(name, undefined, tracks);\r\n\r\n });\r\n\r\n }\r\n\r\n createNodeMesh(nodeIndex) {\r\n\r\n const json = this.json;\r\n const parser = this;\r\n const nodeDef = json.nodes[nodeIndex];\r\n\r\n if (nodeDef.mesh === undefined) return null;\r\n\r\n return parser.getDependency('mesh', nodeDef.mesh).then(function (mesh) {\r\n\r\n const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh);\r\n\r\n // if weights are provided on the node, override weights on the mesh.\r\n if (nodeDef.weights !== undefined) {\r\n\r\n node.traverse(function (o) {\r\n\r\n if (!o.isMesh) return;\r\n\r\n for (let i = 0, il = nodeDef.weights.length; i < il; i++) {\r\n\r\n o.morphTargetInfluences[i] = nodeDef.weights[i];\r\n\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n return node;\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\r\n * @param {number} nodeIndex\r\n * @return {Promise}\r\n */\r\n loadNode(nodeIndex) {\r\n\r\n const json = this.json;\r\n const extensions = this.extensions;\r\n const parser = this;\r\n\r\n const nodeDef = json.nodes[nodeIndex];\r\n\r\n // reserve node's name before its dependencies, so the root has the intended name.\r\n const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : '';\r\n\r\n return (function () {\r\n\r\n const pending = [];\r\n\r\n const meshPromise = parser._invokeOne(function (ext) {\r\n\r\n return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\r\n\r\n });\r\n\r\n if (meshPromise) {\r\n\r\n pending.push(meshPromise);\r\n\r\n }\r\n\r\n if (nodeDef.camera !== undefined) {\r\n\r\n pending.push(parser.getDependency('camera', nodeDef.camera).then(function (camera) {\r\n\r\n return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\r\n\r\n }));\r\n\r\n }\r\n\r\n parser._invokeAll(function (ext) {\r\n\r\n return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex);\r\n\r\n }).forEach(function (promise) {\r\n\r\n pending.push(promise);\r\n\r\n });\r\n\r\n return Promise.all(pending);\r\n\r\n }()).then(function (objects) {\r\n\r\n let node;\r\n\r\n // .isBone isn't in glTF spec. See ._markDefs\r\n if (nodeDef.isBone === true) {\r\n\r\n node = new Bone();\r\n\r\n } else if (objects.length > 1) {\r\n\r\n node = new Group();\r\n\r\n } else if (objects.length === 1) {\r\n\r\n node = objects[0];\r\n\r\n } else {\r\n\r\n node = new Object3D();\r\n\r\n }\r\n\r\n if (node !== objects[0]) {\r\n\r\n for (let i = 0, il = objects.length; i < il; i++) {\r\n\r\n node.add(objects[i]);\r\n\r\n }\r\n\r\n }\r\n\r\n if (nodeDef.name) {\r\n\r\n node.userData.name = nodeDef.name;\r\n node.name = nodeName;\r\n\r\n }\r\n\r\n assignExtrasToUserData(node, nodeDef);\r\n\r\n if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef);\r\n\r\n if (nodeDef.matrix !== undefined) {\r\n\r\n const matrix = new Matrix4();\r\n matrix.fromArray(nodeDef.matrix);\r\n node.applyMatrix4(matrix);\r\n\r\n } else {\r\n\r\n if (nodeDef.translation !== undefined) {\r\n\r\n node.position.fromArray(nodeDef.translation);\r\n\r\n }\r\n\r\n if (nodeDef.rotation !== undefined) {\r\n\r\n node.quaternion.fromArray(nodeDef.rotation);\r\n\r\n }\r\n\r\n if (nodeDef.scale !== undefined) {\r\n\r\n node.scale.fromArray(nodeDef.scale);\r\n\r\n }\r\n\r\n }\r\n\r\n if (!parser.associations.has(node)) {\r\n\r\n parser.associations.set(node, {});\r\n\r\n }\r\n\r\n parser.associations.get(node).nodes = nodeIndex;\r\n\r\n return node;\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\r\n * @param {number} sceneIndex\r\n * @return {Promise}\r\n */\r\n loadScene(sceneIndex) {\r\n\r\n const json = this.json;\r\n const extensions = this.extensions;\r\n const sceneDef = this.json.scenes[sceneIndex];\r\n const parser = this;\r\n\r\n // Loader returns Group, not Scene.\r\n // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\r\n const scene = new Group();\r\n if (sceneDef.name) scene.name = parser.createUniqueName(sceneDef.name);\r\n\r\n assignExtrasToUserData(scene, sceneDef);\r\n\r\n if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef);\r\n\r\n const nodeIds = sceneDef.nodes || [];\r\n\r\n const pending = [];\r\n\r\n for (let i = 0, il = nodeIds.length; i < il; i++) {\r\n\r\n pending.push(buildNodeHierarchy(nodeIds[i], scene, json, parser));\r\n\r\n }\r\n\r\n return Promise.all(pending).then(function () {\r\n\r\n // Removes dangling associations, associations that reference a node that\r\n // didn't make it into the scene.\r\n const reduceAssociations = (node) => {\r\n\r\n const reducedAssociations = new Map();\r\n\r\n for (const [key, value] of parser.associations) {\r\n\r\n if (key instanceof Material || key instanceof Texture) {\r\n\r\n reducedAssociations.set(key, value);\r\n\r\n }\r\n\r\n }\r\n\r\n node.traverse((node) => {\r\n\r\n const mappings = parser.associations.get(node);\r\n\r\n if (mappings != null) {\r\n\r\n reducedAssociations.set(node, mappings);\r\n\r\n }\r\n\r\n });\r\n\r\n return reducedAssociations;\r\n\r\n };\r\n\r\n parser.associations = reduceAssociations(scene);\r\n\r\n return scene;\r\n\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\nfunction buildNodeHierarchy(nodeId, parentObject, json, parser) {\r\n\r\n const nodeDef = json.nodes[nodeId];\r\n\r\n return parser.getDependency('node', nodeId).then(function (node) {\r\n\r\n if (nodeDef.skin === undefined) return node;\r\n\r\n // build skeleton here as well\r\n\r\n let skinEntry;\r\n\r\n return parser.getDependency('skin', nodeDef.skin).then(function (skin) {\r\n\r\n skinEntry = skin;\r\n\r\n const pendingJoints = [];\r\n\r\n for (let i = 0, il = skinEntry.joints.length; i < il; i++) {\r\n\r\n pendingJoints.push(parser.getDependency('node', skinEntry.joints[i]));\r\n\r\n }\r\n\r\n return Promise.all(pendingJoints);\r\n\r\n }).then(function (jointNodes) {\r\n\r\n node.traverse(function (mesh) {\r\n\r\n if (!mesh.isMesh) return;\r\n\r\n const bones = [];\r\n const boneInverses = [];\r\n\r\n for (let j = 0, jl = jointNodes.length; j < jl; j++) {\r\n\r\n const jointNode = jointNodes[j];\r\n\r\n if (jointNode) {\r\n\r\n bones.push(jointNode);\r\n\r\n const mat = new Matrix4();\r\n\r\n if (skinEntry.inverseBindMatrices !== undefined) {\r\n\r\n mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\r\n\r\n }\r\n\r\n boneInverses.push(mat);\r\n\r\n } else {\r\n\r\n console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\r\n\r\n }\r\n\r\n }\r\n\r\n mesh.bind(new Skeleton(bones, boneInverses), mesh.matrixWorld);\r\n\r\n });\r\n\r\n return node;\r\n\r\n });\r\n\r\n }).then(function (node) {\r\n\r\n // build node hierachy\r\n\r\n parentObject.add(node);\r\n\r\n const pending = [];\r\n\r\n if (nodeDef.children) {\r\n\r\n const children = nodeDef.children;\r\n\r\n for (let i = 0, il = children.length; i < il; i++) {\r\n\r\n const child = children[i];\r\n pending.push(buildNodeHierarchy(child, node, json, parser));\r\n\r\n }\r\n\r\n }\r\n\r\n return Promise.all(pending);\r\n\r\n });\r\n\r\n}\r\n\r\n/**\r\n * @param {BufferGeometry} geometry\r\n * @param {GLTF.Primitive} primitiveDef\r\n * @param {GLTFParser} parser\r\n */\r\nfunction computeBounds(geometry, primitiveDef, parser) {\r\n\r\n const attributes = primitiveDef.attributes;\r\n\r\n const box = new Box3();\r\n\r\n if (attributes.POSITION !== undefined) {\r\n\r\n const accessor = parser.json.accessors[attributes.POSITION];\r\n\r\n const min = accessor.min;\r\n const max = accessor.max;\r\n\r\n // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\r\n\r\n if (min !== undefined && max !== undefined) {\r\n\r\n box.set(\r\n new Vector3(min[0], min[1], min[2]),\r\n new Vector3(max[0], max[1], max[2])\r\n );\r\n\r\n if (accessor.normalized) {\r\n\r\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\r\n box.min.multiplyScalar(boxScale);\r\n box.max.multiplyScalar(boxScale);\r\n\r\n }\r\n\r\n } else {\r\n\r\n console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\r\n\r\n return;\r\n\r\n }\r\n\r\n } else {\r\n\r\n return;\r\n\r\n }\r\n\r\n const targets = primitiveDef.targets;\r\n\r\n if (targets !== undefined) {\r\n\r\n const maxDisplacement = new Vector3();\r\n const vector = new Vector3();\r\n\r\n for (let i = 0, il = targets.length; i < il; i++) {\r\n\r\n const target = targets[i];\r\n\r\n if (target.POSITION !== undefined) {\r\n\r\n const accessor = parser.json.accessors[target.POSITION];\r\n const min = accessor.min;\r\n const max = accessor.max;\r\n\r\n // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\r\n\r\n if (min !== undefined && max !== undefined) {\r\n\r\n // we need to get max of absolute components because target weight is [-1,1]\r\n vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0])));\r\n vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1])));\r\n vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2])));\r\n\r\n\r\n if (accessor.normalized) {\r\n\r\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\r\n vector.multiplyScalar(boxScale);\r\n\r\n }\r\n\r\n // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\r\n // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\r\n // are used to implement key-frame animations and as such only two are active at a time - this results in very large\r\n // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\r\n maxDisplacement.max(vector);\r\n\r\n } else {\r\n\r\n console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\r\n box.expandByVector(maxDisplacement);\r\n\r\n }\r\n\r\n geometry.boundingBox = box;\r\n\r\n const sphere = new Sphere();\r\n\r\n box.getCenter(sphere.center);\r\n sphere.radius = box.min.distanceTo(box.max) / 2;\r\n\r\n geometry.boundingSphere = sphere;\r\n\r\n}\r\n\r\n/**\r\n * @param {BufferGeometry} geometry\r\n * @param {GLTF.Primitive} primitiveDef\r\n * @param {GLTFParser} parser\r\n * @return {Promise}\r\n */\r\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\r\n\r\n const attributes = primitiveDef.attributes;\r\n\r\n const pending = [];\r\n\r\n function assignAttributeAccessor(accessorIndex, attributeName) {\r\n\r\n return parser.getDependency('accessor', accessorIndex)\r\n .then(function (accessor) {\r\n\r\n geometry.setAttribute(attributeName, accessor);\r\n\r\n });\r\n\r\n }\r\n\r\n for (const gltfAttributeName in attributes) {\r\n\r\n const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase();\r\n\r\n // Skip attributes already provided by e.g. Draco extension.\r\n if (threeAttributeName in geometry.attributes) continue;\r\n\r\n pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\r\n\r\n }\r\n\r\n if (primitiveDef.indices !== undefined && !geometry.index) {\r\n\r\n const accessor = parser.getDependency('accessor', primitiveDef.indices).then(function (accessor) {\r\n\r\n geometry.setIndex(accessor);\r\n\r\n });\r\n\r\n pending.push(accessor);\r\n\r\n }\r\n\r\n assignExtrasToUserData(geometry, primitiveDef);\r\n\r\n computeBounds(geometry, primitiveDef, parser);\r\n\r\n return Promise.all(pending).then(function () {\r\n\r\n return primitiveDef.targets !== undefined\r\n ? addMorphTargets(geometry, primitiveDef.targets, parser)\r\n : geometry;\r\n\r\n });\r\n\r\n}\r\n\r\n/**\r\n * @param {BufferGeometry} geometry\r\n * @param {Number} drawMode\r\n * @return {BufferGeometry}\r\n */\r\nfunction toTrianglesDrawMode(geometry, drawMode) {\r\n\r\n let index = geometry.getIndex();\r\n\r\n // generate index if not present\r\n\r\n if (index === null) {\r\n\r\n const indices = [];\r\n\r\n const position = geometry.getAttribute('position');\r\n\r\n if (position !== undefined) {\r\n\r\n for (let i = 0; i < position.count; i++) {\r\n\r\n indices.push(i);\r\n\r\n }\r\n\r\n geometry.setIndex(indices);\r\n index = geometry.getIndex();\r\n\r\n } else {\r\n\r\n console.error('THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.');\r\n return geometry;\r\n\r\n }\r\n\r\n }\r\n\r\n //\r\n\r\n const numberOfTriangles = index.count - 2;\r\n const newIndices = [];\r\n\r\n if (drawMode === TriangleFanDrawMode) {\r\n\r\n // gl.TRIANGLE_FAN\r\n\r\n for (let i = 1; i <= numberOfTriangles; i++) {\r\n\r\n newIndices.push(index.getX(0));\r\n newIndices.push(index.getX(i));\r\n newIndices.push(index.getX(i + 1));\r\n\r\n }\r\n\r\n } else {\r\n\r\n // gl.TRIANGLE_STRIP\r\n\r\n for (let i = 0; i < numberOfTriangles; i++) {\r\n\r\n if (i % 2 === 0) {\r\n\r\n newIndices.push(index.getX(i));\r\n newIndices.push(index.getX(i + 1));\r\n newIndices.push(index.getX(i + 2));\r\n\r\n\r\n } else {\r\n\r\n newIndices.push(index.getX(i + 2));\r\n newIndices.push(index.getX(i + 1));\r\n newIndices.push(index.getX(i));\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if ((newIndices.length / 3) !== numberOfTriangles) {\r\n\r\n console.error('THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.');\r\n\r\n }\r\n\r\n // build final geometry\r\n\r\n const newGeometry = geometry.clone();\r\n newGeometry.setIndex(newIndices);\r\n\r\n return newGeometry;\r\n\r\n}\r\n\r\nexport {GLTFLoader};\r\n","import * as three from \"three\"\r\nimport {MeshAsset} from \"../ela/assets/asset_Mesh\";\r\n// import {GLTFLoader} from \"three/examples/jsm/loaders/GLTFLoader\";\r\nimport {FBXLoader} from \"three/examples/jsm/loaders/FBXLoader\";\r\nimport {InfinityProject} from \"./InfinityProject\";\r\n\r\nimport {GLTFLoader} from \"./GLTFLoader\";\r\n\r\nexport class InfinityMeshesLoader {\r\n\r\n constructor(project: InfinityProject) {\r\n this.project = project\r\n }\r\n\r\n LoadMesh(meshAsset: MeshAsset, onLoadCallBack: Function) {\r\n\r\n if (meshAsset.file_extension === \"fbx\") {\r\n this._LoadFbx(meshAsset, onLoadCallBack)\r\n } else if (meshAsset.file_extension == \"glb\" || meshAsset.file_extension == \"gltf\") {\r\n this._LoadGlb(meshAsset, onLoadCallBack)\r\n }\r\n }\r\n\r\n _LoadGlb(meshAsset: MeshAsset, onLoadCallBack: Function) {\r\n\r\n const gltfLoader = new GLTFLoader()\r\n console.log(\"Before load\")\r\n gltfLoader.load(meshAsset.getAbsolutePath(), (object => {\r\n //object.scene.scale.set(5 ,5 , 5)\r\n this._SetProbeRecursive(object.scene)\r\n\r\n if (onLoadCallBack) {\r\n onLoadCallBack(\"glb\", object)\r\n }\r\n\r\n\r\n }))\r\n }\r\n\r\n\r\n _SetProbeRecursive(object: three.Mesh) {\r\n object.children.forEach((child: three.Mesh) => {\r\n if (child.isMesh) {\r\n let material: three.MeshStandardMaterial = child.material\r\n //material.envMapIntensity = 5\r\n material.envMap = this.project.getWorld().scene.environment\r\n }\r\n\r\n this._SetProbeRecursive(child)\r\n\r\n\r\n })\r\n\r\n\r\n }\r\n\r\n _LoadFbx(meshAsset: MeshAsset, onLoadCallBack: Function) {\r\n\r\n const fbxLoader: FBXLoader = new FBXLoader()\r\n const path = meshAsset.getAbsolutePath()\r\n // console.error(\"Loading fbx: \" + path)\r\n fbxLoader.load(path, (object => {\r\n object.scale.set(0.01, 0.01, 0.01)\r\n\r\n // this.mixer = new THREE.AnimationMixer(object)\r\n\r\n // const animationAction = this.mixer.clipAction(\r\n // (object as THREE.Object3D).animations[0]\r\n // )\r\n // placeHolder.add(object)\r\n //Mesh assignment\r\n // this.mesh = object\r\n //\r\n // this.placeHolder.add(this.mesh)\r\n // //\r\n // this.delayedScene.add(this.mesh)\r\n // this.delayedScene = null\r\n\r\n // animationActions.push(animationAction)\r\n // activeAction = animationActions[0]\r\n // activeAction.reset()\r\n // activeAction.play()\r\n\r\n if (onLoadCallBack) {\r\n onLoadCallBack(\"fbx\", object)\r\n }\r\n\r\n\r\n }))\r\n\r\n }\r\n\r\n\r\n}\r\n","import * as three from \"three\"\r\nimport {InfinityBoardParent} from \"./board_Parent\";\r\n\r\nimport {InfinityMeshesLoader} from \"../../infinity/InfinityMeshesLoader\";\r\n\r\nimport {GLTF} from \"three/examples/jsm/loaders/GLTFLoader\";\r\nimport {MeshAsset} from \"../../ela/assets/asset_Mesh\";\r\nimport {GuidedTourManager} from \"../../zustands/activeTestTourZus\";\r\n\r\nexport class InfinityMeshBoard extends InfinityBoardParent {\r\n\r\n type = \"mesh\"\r\n\r\n clock = new three.Clock()\r\n\r\n glft: GLTF = null\r\n meshParent: three.Group = null\r\n\r\n animationMixer: three.AnimationMixer = null\r\n\r\n f: three.Vector3 = null\r\n t: three.Vector3 = null\r\n r: three.Vector3 = null\r\n\r\n overAllScale = 1\r\n\r\n animation_name = \"\"\r\n\r\n automatic_rotation_enabled = false\r\n\r\n automatic_rotation_speed = 1\r\n\r\n automatic_rotation_axis_enabled_x = false\r\n automatic_rotation_axis_enabled_y = false\r\n automatic_rotation_axis_enabled_z = false\r\n\r\n constructor(spot) {\r\n super(spot)\r\n this.icon = \"EI.MeshBoard\"\r\n\r\n this.isOpenedInWorld = false\r\n }\r\n\r\n // const MULTICONSTANT = 300\r\n //\r\n // const newPosition = new three.Vector3()\r\n // newPosition.copy(this.position)\r\n // newPosition.multiply(new three.Vector3(MULTICONSTANT, MULTICONSTANT, MULTICONSTANT))\r\n\r\n loadFromJsonObject(object) {\r\n super.loadFromJsonObject(object)\r\n\r\n const MULTICONSTANT = 300\r\n\r\n this.overAllScale = object[\"overall_scale\"] * MULTICONSTANT\r\n\r\n const rotation = object[\"manual_position\"]\r\n this.f = rotation[\"f\"]\r\n this.t = rotation[\"t\"]\r\n this.r = rotation[\"r\"]\r\n\r\n this.automatic_rotation_enabled = object[\"automatic_rotation_enabled\"]\r\n\r\n this.automatic_rotation_speed = object[\"automatic_rotation_speed\"]\r\n\r\n this.automatic_rotation_axis_enabled_x = object[\"automatic_rotation_axis_enabled_x\"]\r\n this.automatic_rotation_axis_enabled_y = object[\"automatic_rotation_axis_enabled_y\"]\r\n this.automatic_rotation_axis_enabled_z = object[\"automatic_rotation_axis_enabled_z\"]\r\n\r\n\r\n }\r\n\r\n clicked() {\r\n GuidedTourManager.taskBoardClicked(this, 1)\r\n\r\n super.fillBoardVisited(1)\r\n\r\n this.clickableIcon.getRoot().visible = false\r\n\r\n if (this.glft) {\r\n this.glft.scene.visible = true\r\n } else {\r\n this._loadModel()\r\n }\r\n\r\n\r\n }\r\n\r\n getFinalPosition() {\r\n return this.placeHolder.position\r\n }\r\n\r\n fillToWorld(world) {\r\n\r\n if (this._isEnabled === false) {\r\n return\r\n }\r\n\r\n const group = world.secondaryNotSelectableAndNotRotatableGroup\r\n\r\n if (this.autoUnpack) {\r\n\r\n this.isOpenedInWorld = true\r\n if (this.contentUid === \"\") {\r\n return\r\n }\r\n\r\n if (this.glft) {\r\n this.glft.scene.visible = true\r\n group.add(this.meshParent)\r\n\r\n } else {\r\n this._loadModel()\r\n }\r\n\r\n } else {\r\n this.isOpenedInWorld = false\r\n super.fillToWorld(world);\r\n }\r\n\r\n }\r\n\r\n _loadModel() {\r\n this.isOpenedInWorld = true\r\n const asset = this.getMeshAsset()\r\n if (asset.exists) {\r\n const loader = new InfinityMeshesLoader(this.getParentProject())\r\n loader.LoadMesh(asset, this.meshWasAdded)\r\n }\r\n }\r\n\r\n CleanUp() {\r\n super.CleanUp()\r\n\r\n if (this.glft) {\r\n this.glft.scene.visible = false\r\n }\r\n\r\n }\r\n\r\n worldRotated() {\r\n\r\n }\r\n\r\n\r\n meshWasAdded = (extension: string, gltf: GLTF) => {\r\n console.log(this.contentUid)\r\n\r\n if (!this.parentSpot.GetPanoramaAsset().is_previewed) {\r\n return\r\n }\r\n\r\n if (extension === \"fbx\") {\r\n alert(\"FBX unimplemented\")\r\n } else {\r\n if (gltf.scene) {\r\n const scene = gltf.scene\r\n\r\n const rotationMatrix = new three.Matrix4()\r\n\r\n rotationMatrix.set(\r\n this.f.x, this.t.x, this.r.x, 0,\r\n this.f.y, this.t.y, this.r.y, 0,\r\n this.f.z, this.t.z, this.r.z, 0,\r\n 0, 0, 0, 1\r\n )\r\n\r\n const sceneGroup = new three.Group()\r\n\r\n sceneGroup.rotation.setFromRotationMatrix(rotationMatrix)\r\n sceneGroup.updateMatrixWorld(true)\r\n\r\n const MULTICONSTANT = 300\r\n\r\n const newPosition = new three.Vector3()\r\n newPosition.copy(this.position)\r\n newPosition.multiply(new three.Vector3(MULTICONSTANT, MULTICONSTANT, MULTICONSTANT))\r\n\r\n\r\n const rotationVector = new three.Vector3();\r\n rotationVector.copy(newPosition)\r\n rotationVector.applyAxisAngle(new three.Vector3(0, 1, 0), this.parentSpot.spotRotation.y)\r\n\r\n this.glft = gltf\r\n let mixer: three.AnimationMixer\r\n mixer = new three.AnimationMixer(scene)\r\n\r\n // gltf.scene.traverse((obj: three.Mesh) => {\r\n // if (obj.isMesh) {\r\n // obj.geometry.computeBoundingSphere()\r\n // }\r\n // })\r\n\r\n if (gltf.animations.length > 0) {\r\n mixer.clipAction(gltf.animations[0]).play()\r\n this.animationMixer = mixer\r\n }\r\n\r\n sceneGroup.position.set(rotationVector.x, rotationVector.y, rotationVector.z)\r\n sceneGroup.scale.set(this.overAllScale, this.overAllScale, this.overAllScale)\r\n\r\n this.meshParent = sceneGroup\r\n\r\n sceneGroup.add(scene)\r\n\r\n const world = this.getParentProject().getWorld()\r\n world.secondaryNotSelectableAndNotRotatableGroup.add(sceneGroup)\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n getMeshAsset(): MeshAsset {\r\n return this.getParentProject().meshes.get(this.contentUid)\r\n }\r\n\r\n getWebPreviewImage() {\r\n const meshAsset = this.getMeshAsset()\r\n if (meshAsset) {\r\n return meshAsset.getWebPreviewImage()\r\n } else {\r\n return \"\"\r\n }\r\n }\r\n\r\n step() {\r\n\r\n if (this.glft) {\r\n\r\n if (this.animationMixer) {\r\n this.animationMixer.update(this.clock.getDelta())\r\n }\r\n\r\n if (this.automatic_rotation_enabled) {\r\n\r\n const rotationSpeed = three.MathUtils.degToRad(this.automatic_rotation_speed)\r\n\r\n if (this.automatic_rotation_axis_enabled_y) {\r\n this.glft.scene.rotateY(rotationSpeed)\r\n }\r\n if (this.automatic_rotation_axis_enabled_x) {\r\n this.glft.scene.rotateZ(rotationSpeed)\r\n }\r\n if (this.automatic_rotation_axis_enabled_z) {\r\n this.glft.scene.rotateX(rotationSpeed)\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n setVisibilityStatus(status: boolean) {\r\n if (this.isOpenedInWorld) {\r\n this.meshParent.visible = status\r\n } else {\r\n super.setVisibilityStatus(status)\r\n }\r\n }\r\n\r\n\r\n isVisible(): boolean {\r\n if (this.isOpenedInWorld) {\r\n return this.meshParent.visible\r\n } else {\r\n return super.isVisible();\r\n }\r\n }\r\n}","import React from 'react';\r\nimport * as Bs from \"react-bootstrap\"\r\nimport {CloseButton} from \"../../icon_click_buttons\";\r\n\r\nexport function DocumentPlayer({src, onClose}) {\r\n\r\n const wrapperStyle = {\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"absolute\",\r\n top: \"0px\",\r\n left: \"0px\",\r\n\r\n }\r\n\r\n const documentStyle = {\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"absolute\",\r\n left: \"50%\",\r\n // top: \"2.5%\",\r\n transform: \"translate(-50%, 0%)\",\r\n // background: \"red\",\r\n borderRadius: \"15px\",\r\n }\r\n\r\n const closeBtnStyle = {\r\n position: \"absolute\",\r\n top: \"0px\",\r\n right: \"0px\",\r\n }\r\n\r\n\r\n return (\r\n
\r\n \r\n {/**/}\r\n