@onerjs/loaders 8.53.5 → 8.53.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BVH/bvhFileLoader.d.ts +4 -67
- package/BVH/bvhFileLoader.js +6 -130
- package/BVH/bvhFileLoader.js.map +1 -1
- package/BVH/bvhFileLoader.pure.d.ts +75 -0
- package/BVH/bvhFileLoader.pure.js +154 -0
- package/BVH/bvhFileLoader.pure.js.map +1 -0
- package/BVH/bvhFileLoader.types.d.ts +11 -0
- package/BVH/bvhFileLoader.types.js +2 -0
- package/BVH/bvhFileLoader.types.js.map +1 -0
- package/BVH/pure.d.ts +3 -0
- package/BVH/pure.js +5 -0
- package/BVH/pure.js.map +1 -0
- package/FBX/fbxFileLoader.d.ts +4 -192
- package/FBX/fbxFileLoader.js +6 -2437
- package/FBX/fbxFileLoader.js.map +1 -1
- package/FBX/fbxFileLoader.pure.d.ts +190 -0
- package/FBX/fbxFileLoader.pure.js +2451 -0
- package/FBX/fbxFileLoader.pure.js.map +1 -0
- package/FBX/fbxFileLoader.types.d.ts +11 -0
- package/FBX/fbxFileLoader.types.js +2 -0
- package/FBX/fbxFileLoader.types.js.map +1 -0
- package/FBX/pure.d.ts +3 -0
- package/FBX/pure.js +4 -0
- package/FBX/pure.js.map +1 -0
- package/OBJ/objFileLoader.d.ts +4 -134
- package/OBJ/objFileLoader.js +6 -315
- package/OBJ/objFileLoader.js.map +1 -1
- package/OBJ/objFileLoader.pure.d.ts +132 -0
- package/OBJ/objFileLoader.pure.js +329 -0
- package/OBJ/objFileLoader.pure.js.map +1 -0
- package/OBJ/objFileLoader.types.d.ts +11 -0
- package/OBJ/objFileLoader.types.js +2 -0
- package/OBJ/objFileLoader.types.js.map +1 -0
- package/OBJ/pure.d.ts +5 -0
- package/OBJ/pure.js +6 -0
- package/OBJ/pure.js.map +1 -0
- package/OBJ/solidParser.js +4 -3
- package/OBJ/solidParser.js.map +1 -1
- package/SPLAT/gaussianSplattingBlockAllocator.d.ts +137 -0
- package/SPLAT/gaussianSplattingBlockAllocator.js +555 -0
- package/SPLAT/gaussianSplattingBlockAllocator.js.map +1 -0
- package/SPLAT/gaussianSplattingDownloadManager.d.ts +109 -0
- package/SPLAT/gaussianSplattingDownloadManager.js +241 -0
- package/SPLAT/gaussianSplattingDownloadManager.js.map +1 -0
- package/SPLAT/gaussianSplattingResidencyController.d.ts +133 -0
- package/SPLAT/gaussianSplattingResidencyController.js +222 -0
- package/SPLAT/gaussianSplattingResidencyController.js.map +1 -0
- package/SPLAT/gaussianSplattingStream.d.ts +522 -0
- package/SPLAT/gaussianSplattingStream.js +1530 -0
- package/SPLAT/gaussianSplattingStream.js.map +1 -0
- package/SPLAT/gaussianSplattingWorkBuffer.d.ts +107 -0
- package/SPLAT/gaussianSplattingWorkBuffer.js +361 -0
- package/SPLAT/gaussianSplattingWorkBuffer.js.map +1 -0
- package/SPLAT/gaussianSplattingWorkBufferShaders.d.ts +40 -0
- package/SPLAT/gaussianSplattingWorkBufferShaders.js +337 -0
- package/SPLAT/gaussianSplattingWorkBufferShaders.js.map +1 -0
- package/SPLAT/index.d.ts +1 -0
- package/SPLAT/index.js +1 -0
- package/SPLAT/index.js.map +1 -1
- package/SPLAT/pure.d.ts +5 -0
- package/SPLAT/pure.js +7 -0
- package/SPLAT/pure.js.map +1 -0
- package/SPLAT/sog.d.ts +2 -93
- package/SPLAT/sog.js +4 -418
- package/SPLAT/sog.js.map +1 -1
- package/SPLAT/sog.pure.d.ts +102 -0
- package/SPLAT/sog.pure.js +514 -0
- package/SPLAT/sog.pure.js.map +1 -0
- package/SPLAT/splatFileLoader.d.ts +5 -98
- package/SPLAT/splatFileLoader.js +9 -587
- package/SPLAT/splatFileLoader.js.map +1 -1
- package/SPLAT/splatFileLoader.pure.d.ts +104 -0
- package/SPLAT/splatFileLoader.pure.js +650 -0
- package/SPLAT/splatFileLoader.pure.js.map +1 -0
- package/SPLAT/splatFileLoader.types.d.ts +11 -0
- package/SPLAT/splatFileLoader.types.js +2 -0
- package/SPLAT/splatFileLoader.types.js.map +1 -0
- package/STL/pure.d.ts +2 -0
- package/STL/pure.js +3 -0
- package/STL/pure.js.map +1 -0
- package/STL/stlFileLoader.d.ts +5 -76
- package/STL/stlFileLoader.js +7 -236
- package/STL/stlFileLoader.js.map +1 -1
- package/STL/stlFileLoader.pure.d.ts +73 -0
- package/STL/stlFileLoader.pure.js +249 -0
- package/STL/stlFileLoader.pure.js.map +1 -0
- package/STL/stlFileLoader.types.d.ts +10 -0
- package/STL/stlFileLoader.types.js +2 -0
- package/STL/stlFileLoader.types.js.map +1 -0
- package/glTF/1.0/pure.d.ts +3 -0
- package/glTF/1.0/pure.js +4 -0
- package/glTF/1.0/pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_lights_area.d.ts +4 -39
- package/glTF/2.0/Extensions/EXT_lights_area.js +6 -91
- package/glTF/2.0/Extensions/EXT_lights_area.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_lights_area.pure.d.ts +38 -0
- package/glTF/2.0/Extensions/EXT_lights_area.pure.js +106 -0
- package/glTF/2.0/Extensions/EXT_lights_area.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_lights_area.types.d.ts +9 -0
- package/glTF/2.0/Extensions/EXT_lights_area.types.js +2 -0
- package/glTF/2.0/Extensions/EXT_lights_area.types.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_lights_ies.d.ts +4 -39
- package/glTF/2.0/Extensions/EXT_lights_ies.js +6 -81
- package/glTF/2.0/Extensions/EXT_lights_ies.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_lights_ies.pure.d.ts +38 -0
- package/glTF/2.0/Extensions/EXT_lights_ies.pure.js +96 -0
- package/glTF/2.0/Extensions/EXT_lights_ies.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_lights_ies.types.d.ts +9 -0
- package/glTF/2.0/Extensions/EXT_lights_ies.types.js +2 -0
- package/glTF/2.0/Extensions/EXT_lights_ies.types.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +4 -46
- package/glTF/2.0/Extensions/EXT_lights_image_based.js +6 -113
- package/glTF/2.0/Extensions/EXT_lights_image_based.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_lights_image_based.pure.d.ts +37 -0
- package/glTF/2.0/Extensions/EXT_lights_image_based.pure.js +128 -0
- package/glTF/2.0/Extensions/EXT_lights_image_based.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_lights_image_based.types.d.ts +17 -0
- package/glTF/2.0/Extensions/EXT_lights_image_based.types.js +2 -0
- package/glTF/2.0/Extensions/EXT_lights_image_based.types.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +5 -37
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +7 -92
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.d.ts +35 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js +106 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.d.ts +9 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.js +2 -0
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +4 -37
- package/glTF/2.0/Extensions/EXT_meshopt_compression.js +6 -48
- package/glTF/2.0/Extensions/EXT_meshopt_compression.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.d.ts +36 -0
- package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.js +63 -0
- package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_meshopt_compression.types.d.ts +9 -0
- package/glTF/2.0/Extensions/EXT_meshopt_compression.types.js +2 -0
- package/glTF/2.0/Extensions/EXT_meshopt_compression.types.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.d.ts +4 -32
- package/glTF/2.0/Extensions/EXT_texture_avif.js +6 -36
- package/glTF/2.0/Extensions/EXT_texture_avif.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.d.ts +31 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.js +51 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.types.d.ts +9 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.types.js +2 -0
- package/glTF/2.0/Extensions/EXT_texture_avif.types.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.d.ts +4 -31
- package/glTF/2.0/Extensions/EXT_texture_webp.js +6 -35
- package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.d.ts +30 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.js +50 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.js.map +1 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.types.d.ts +9 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.types.js +2 -0
- package/glTF/2.0/Extensions/EXT_texture_webp.types.js.map +1 -0
- package/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +4 -51
- package/glTF/2.0/Extensions/ExtrasAsMetadata.js +6 -71
- package/glTF/2.0/Extensions/ExtrasAsMetadata.js.map +1 -1
- package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.d.ts +50 -0
- package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.js +85 -0
- package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.js.map +1 -0
- package/glTF/2.0/Extensions/ExtrasAsMetadata.types.d.ts +9 -0
- package/glTF/2.0/Extensions/ExtrasAsMetadata.types.js +2 -0
- package/glTF/2.0/Extensions/ExtrasAsMetadata.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +5 -45
- package/glTF/2.0/Extensions/KHR_animation_pointer.js +7 -75
- package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_animation_pointer.pure.d.ts +43 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.pure.js +89 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_animation_pointer.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +4 -45
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +6 -90
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.d.ts +44 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js +105 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.d.ts +6 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.js +9 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.pure.d.ts +35 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.pure.js +195 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_gaussian_splatting.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +4 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity.d.ts +4 -36
- package/glTF/2.0/Extensions/KHR_interactivity.js +6 -148
- package/glTF/2.0/Extensions/KHR_interactivity.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +35 -0
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js +163 -0
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_interactivity.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_interactivity.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +4 -39
- package/glTF/2.0/Extensions/KHR_lights_punctual.js +6 -89
- package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_lights_punctual.pure.d.ts +38 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js +104 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_lights_punctual.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +4 -40
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.js +6 -63
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.d.ts +39 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js +78 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +4 -41
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +6 -77
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.d.ts +40 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js +92 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.d.ts +4 -47
- package/glTF/2.0/Extensions/KHR_materials_coat.js +6 -117
- package/glTF/2.0/Extensions/KHR_materials_coat.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_coat.pure.d.ts +46 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.pure.js +132 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_coat.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +4 -41
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +6 -56
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.d.ts +40 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js +71 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +4 -41
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +6 -71
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.d.ts +40 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js +86 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +4 -41
- package/glTF/2.0/Extensions/KHR_materials_dispersion.js +6 -54
- package/glTF/2.0/Extensions/KHR_materials_dispersion.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.d.ts +40 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js +69 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_dispersion.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +4 -40
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +6 -45
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.d.ts +39 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js +60 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +4 -41
- package/glTF/2.0/Extensions/KHR_materials_fuzz.js +6 -75
- package/glTF/2.0/Extensions/KHR_materials_fuzz.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.d.ts +40 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js +90 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_fuzz.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +4 -44
- package/glTF/2.0/Extensions/KHR_materials_ior.js +6 -52
- package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_ior.pure.d.ts +43 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.pure.js +67 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +4 -40
- package/glTF/2.0/Extensions/KHR_materials_iridescence.js +6 -66
- package/glTF/2.0/Extensions/KHR_materials_iridescence.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.d.ts +39 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js +81 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_iridescence.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +4 -40
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +6 -72
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.d.ts +39 -0
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.js +87 -0
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +4 -41
- package/glTF/2.0/Extensions/KHR_materials_sheen.js +6 -71
- package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_sheen.pure.d.ts +40 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js +86 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_sheen.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +4 -40
- package/glTF/2.0/Extensions/KHR_materials_specular.js +6 -74
- package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_specular.pure.d.ts +39 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.pure.js +89 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_specular.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +4 -40
- package/glTF/2.0/Extensions/KHR_materials_transmission.js +6 -70
- package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_transmission.pure.d.ts +39 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js +85 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_transmission.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +4 -40
- package/glTF/2.0/Extensions/KHR_materials_unlit.js +6 -64
- package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_unlit.pure.d.ts +39 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js +79 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_unlit.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_variants.d.ts +4 -110
- package/glTF/2.0/Extensions/KHR_materials_variants.js +6 -260
- package/glTF/2.0/Extensions/KHR_materials_variants.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_variants.pure.d.ts +97 -0
- package/glTF/2.0/Extensions/KHR_materials_variants.pure.js +275 -0
- package/glTF/2.0/Extensions/KHR_materials_variants.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_variants.types.d.ts +29 -0
- package/glTF/2.0/Extensions/KHR_materials_variants.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_variants.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +4 -41
- package/glTF/2.0/Extensions/KHR_materials_volume.js +6 -77
- package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_volume.pure.d.ts +40 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.pure.js +92 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +4 -43
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +6 -113
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.d.ts +42 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js +128 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +4 -27
- package/glTF/2.0/Extensions/KHR_mesh_quantization.js +6 -20
- package/glTF/2.0/Extensions/KHR_mesh_quantization.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.d.ts +26 -0
- package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.js +35 -0
- package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_mesh_quantization.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_mesh_quantization.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_mesh_quantization.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +4 -29
- package/glTF/2.0/Extensions/KHR_node_hoverability.js +6 -187
- package/glTF/2.0/Extensions/KHR_node_hoverability.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +28 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +202 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.d.ts +4 -28
- package/glTF/2.0/Extensions/KHR_node_selectability.js +6 -121
- package/glTF/2.0/Extensions/KHR_node_selectability.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +27 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +136 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_node_visibility.d.ts +4 -28
- package/glTF/2.0/Extensions/KHR_node_visibility.js +6 -64
- package/glTF/2.0/Extensions/KHR_node_visibility.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_visibility.pure.d.ts +27 -0
- package/glTF/2.0/Extensions/KHR_node_visibility.pure.js +79 -0
- package/glTF/2.0/Extensions/KHR_node_visibility.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_node_visibility.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_node_visibility.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_node_visibility.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +4 -31
- package/glTF/2.0/Extensions/KHR_texture_basisu.js +6 -35
- package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.d.ts +30 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js +50 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_texture_basisu.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.d.ts +4 -35
- package/glTF/2.0/Extensions/KHR_texture_transform.js +6 -56
- package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_transform.pure.d.ts +34 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.pure.js +71 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_texture_transform.types.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +4 -37
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.js +6 -45
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.d.ts +36 -0
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.js +60 -0
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.d.ts +9 -0
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.js +2 -0
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +5 -54
- package/glTF/2.0/Extensions/MSFT_audio_emitter.js +7 -226
- package/glTF/2.0/Extensions/MSFT_audio_emitter.js.map +1 -1
- package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.d.ts +52 -0
- package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.js +240 -0
- package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_audio_emitter.types.d.ts +9 -0
- package/glTF/2.0/Extensions/MSFT_audio_emitter.types.js +2 -0
- package/glTF/2.0/Extensions/MSFT_audio_emitter.types.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_lod.d.ts +4 -102
- package/glTF/2.0/Extensions/MSFT_lod.js +6 -335
- package/glTF/2.0/Extensions/MSFT_lod.js.map +1 -1
- package/glTF/2.0/Extensions/MSFT_lod.pure.d.ts +96 -0
- package/glTF/2.0/Extensions/MSFT_lod.pure.js +350 -0
- package/glTF/2.0/Extensions/MSFT_lod.pure.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_lod.types.d.ts +14 -0
- package/glTF/2.0/Extensions/MSFT_lod.types.js +2 -0
- package/glTF/2.0/Extensions/MSFT_lod.types.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +6 -27
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +8 -40
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.js.map +1 -1
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.d.ts +24 -0
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.js +53 -0
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.d.ts +9 -0
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.js +2 -0
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +6 -27
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.js +8 -38
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.js.map +1 -1
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.d.ts +24 -0
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.js +51 -0
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.js.map +1 -0
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.d.ts +9 -0
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.js +2 -0
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.js.map +1 -0
- package/glTF/2.0/Extensions/dynamic.js +5 -0
- package/glTF/2.0/Extensions/dynamic.js.map +1 -1
- package/glTF/2.0/Extensions/index.d.ts +1 -0
- package/glTF/2.0/Extensions/index.js +1 -0
- package/glTF/2.0/Extensions/index.js.map +1 -1
- package/glTF/2.0/Extensions/objectModelMapping.d.ts +31 -2
- package/glTF/2.0/Extensions/objectModelMapping.js +3 -3
- package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -1
- package/glTF/2.0/Extensions/pure.d.ts +46 -0
- package/glTF/2.0/Extensions/pure.js +48 -0
- package/glTF/2.0/Extensions/pure.js.map +1 -0
- package/glTF/2.0/glTFLoader.d.ts +1 -471
- package/glTF/2.0/glTFLoader.js +9 -2570
- package/glTF/2.0/glTFLoader.js.map +1 -1
- package/glTF/2.0/glTFLoader.pure.d.ts +476 -0
- package/glTF/2.0/glTFLoader.pure.js +2606 -0
- package/glTF/2.0/glTFLoader.pure.js.map +1 -0
- package/glTF/2.0/glTFLoaderAnimation.d.ts +2 -2
- package/glTF/2.0/glTFLoaderAnimation.js +2 -2
- package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
- package/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +1 -1
- package/glTF/2.0/pbrMaterialLoadingAdapter.js +2 -2
- package/glTF/2.0/pbrMaterialLoadingAdapter.js.map +1 -1
- package/glTF/2.0/pure.d.ts +8 -0
- package/glTF/2.0/pure.js +10 -0
- package/glTF/2.0/pure.js.map +1 -0
- package/glTF/glTFFileLoader.d.ts +5 -571
- package/glTF/glTFFileLoader.js +6 -1016
- package/glTF/glTFFileLoader.js.map +1 -1
- package/glTF/glTFFileLoader.pure.d.ts +582 -0
- package/glTF/glTFFileLoader.pure.js +1044 -0
- package/glTF/glTFFileLoader.pure.js.map +1 -0
- package/glTF/glTFFileLoader.types.d.ts +11 -0
- package/glTF/glTFFileLoader.types.js +2 -0
- package/glTF/glTFFileLoader.types.js.map +1 -0
- package/glTF/glTFValidation.js +1 -1
- package/glTF/glTFValidation.js.map +1 -1
- package/glTF/pure.d.ts +6 -0
- package/glTF/pure.js +8 -0
- package/glTF/pure.js.map +1 -0
- package/package.json +3 -3
- package/pure.d.ts +8 -0
- package/pure.js +10 -0
- package/pure.js.map +1 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { FlowGraphCoordinator } from "@onerjs/core/FlowGraph/flowGraphCoordinator.js";
|
|
2
|
+
import { ParseFlowGraphAsync } from "@onerjs/core/FlowGraph/flowGraphParser.js";
|
|
3
|
+
import { registerGLTFExtension, unregisterGLTFExtension } from "../glTFLoaderExtensionRegistry.js";
|
|
4
|
+
import { AddObjectAccessorToKey, GetPathToObjectConverter } from "./objectModelMapping.js";
|
|
5
|
+
import { InteractivityGraphToFlowGraphParser } from "./KHR_interactivity/interactivityGraphParser.js";
|
|
6
|
+
import { addToBlockFactory } from "@onerjs/core/FlowGraph/Blocks/flowGraphBlockFactory.js";
|
|
7
|
+
import { Quaternion, Vector3 } from "@onerjs/core/Maths/math.vector.pure.js";
|
|
8
|
+
const NAME = "KHR_interactivity";
|
|
9
|
+
/**
|
|
10
|
+
* Loader extension for KHR_interactivity
|
|
11
|
+
*/
|
|
12
|
+
export class KHR_interactivity {
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
* @param _loader
|
|
16
|
+
*/
|
|
17
|
+
constructor(_loader) {
|
|
18
|
+
this._loader = _loader;
|
|
19
|
+
/**
|
|
20
|
+
* The name of this extension.
|
|
21
|
+
*/
|
|
22
|
+
this.name = NAME;
|
|
23
|
+
this.enabled = this._loader.isExtensionUsed(NAME);
|
|
24
|
+
this._pathConverter = GetPathToObjectConverter(this._loader.gltf);
|
|
25
|
+
// avoid starting animations automatically.
|
|
26
|
+
_loader._skipStartAnimationStep = true;
|
|
27
|
+
// Update object model with new pointers
|
|
28
|
+
const scene = _loader.babylonScene;
|
|
29
|
+
if (scene) {
|
|
30
|
+
_AddInteractivityObjectModel(scene);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
dispose() {
|
|
34
|
+
this._loader = null;
|
|
35
|
+
delete this._pathConverter;
|
|
36
|
+
}
|
|
37
|
+
// eslint-disable-next-line no-restricted-syntax, @typescript-eslint/no-misused-promises
|
|
38
|
+
async onReady() {
|
|
39
|
+
if (!this._loader.babylonScene || !this._pathConverter) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const scene = this._loader.babylonScene;
|
|
43
|
+
const interactivityDefinition = this._loader.gltf.extensions?.KHR_interactivity;
|
|
44
|
+
if (!interactivityDefinition) {
|
|
45
|
+
// This can technically throw, but it's not a critical error
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const coordinator = new FlowGraphCoordinator({ scene });
|
|
49
|
+
coordinator.dispatchEventsSynchronously = false; // glTF interactivity dispatches events asynchronously
|
|
50
|
+
const graphs = interactivityDefinition.graphs.map((graph) => {
|
|
51
|
+
const parser = new InteractivityGraphToFlowGraphParser(graph, this._loader.gltf, this._loader.parent.targetFps);
|
|
52
|
+
return parser.serializeToFlowGraph();
|
|
53
|
+
});
|
|
54
|
+
// parse each graph async
|
|
55
|
+
await Promise.all(graphs.map(async (graph) => await ParseFlowGraphAsync(graph, { coordinator, pathConverter: this._pathConverter })));
|
|
56
|
+
coordinator.start();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @internal
|
|
61
|
+
* populates the object model with the interactivity extension
|
|
62
|
+
*/
|
|
63
|
+
export function _AddInteractivityObjectModel(scene) {
|
|
64
|
+
// Note - all of those are read-only, as per the specs!
|
|
65
|
+
// active camera rotation
|
|
66
|
+
AddObjectAccessorToKey("/extensions/KHR_interactivity/?/activeCamera/rotation", {
|
|
67
|
+
get: () => {
|
|
68
|
+
if (!scene.activeCamera) {
|
|
69
|
+
return new Quaternion(NaN, NaN, NaN, NaN);
|
|
70
|
+
}
|
|
71
|
+
const quat = Quaternion.FromRotationMatrix(scene.activeCamera.getWorldMatrix()).normalize();
|
|
72
|
+
if (!scene.useRightHandedSystem) {
|
|
73
|
+
quat.w *= -1; // glTF uses right-handed system, while babylon uses left-handed
|
|
74
|
+
quat.x *= -1; // glTF uses right-handed system, while babylon uses left-handed
|
|
75
|
+
}
|
|
76
|
+
return quat;
|
|
77
|
+
},
|
|
78
|
+
type: "Quaternion",
|
|
79
|
+
getTarget: () => scene.activeCamera,
|
|
80
|
+
});
|
|
81
|
+
// activeCamera position
|
|
82
|
+
AddObjectAccessorToKey("/extensions/KHR_interactivity/?/activeCamera/position", {
|
|
83
|
+
get: () => {
|
|
84
|
+
if (!scene.activeCamera) {
|
|
85
|
+
return new Vector3(NaN, NaN, NaN);
|
|
86
|
+
}
|
|
87
|
+
const pos = scene.activeCamera.getWorldMatrix().getTranslation(); // not global position
|
|
88
|
+
if (!scene.useRightHandedSystem) {
|
|
89
|
+
pos.x *= -1; // glTF uses right-handed system, while babylon uses left-handed
|
|
90
|
+
}
|
|
91
|
+
return pos;
|
|
92
|
+
},
|
|
93
|
+
type: "Vector3",
|
|
94
|
+
getTarget: () => scene.activeCamera,
|
|
95
|
+
});
|
|
96
|
+
// /animations/{} pointers:
|
|
97
|
+
AddObjectAccessorToKey("/animations/{}/extensions/KHR_interactivity/isPlaying", {
|
|
98
|
+
get: (animation) => {
|
|
99
|
+
return animation._babylonAnimationGroup?.isPlaying ?? false;
|
|
100
|
+
},
|
|
101
|
+
type: "boolean",
|
|
102
|
+
getTarget: (animation) => {
|
|
103
|
+
return animation._babylonAnimationGroup;
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
AddObjectAccessorToKey("/animations/{}/extensions/KHR_interactivity/minTime", {
|
|
107
|
+
get: (animation) => {
|
|
108
|
+
return (animation._babylonAnimationGroup?.from ?? 0) / 60; // fixed factor for duration-to-frames conversion
|
|
109
|
+
},
|
|
110
|
+
type: "number",
|
|
111
|
+
getTarget: (animation) => {
|
|
112
|
+
return animation._babylonAnimationGroup;
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
AddObjectAccessorToKey("/animations/{}/extensions/KHR_interactivity/maxTime", {
|
|
116
|
+
get: (animation) => {
|
|
117
|
+
return (animation._babylonAnimationGroup?.to ?? 0) / 60; // fixed factor for duration-to-frames conversion
|
|
118
|
+
},
|
|
119
|
+
type: "number",
|
|
120
|
+
getTarget: (animation) => {
|
|
121
|
+
return animation._babylonAnimationGroup;
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
// playhead
|
|
125
|
+
AddObjectAccessorToKey("/animations/{}/extensions/KHR_interactivity/playhead", {
|
|
126
|
+
get: (animation) => {
|
|
127
|
+
return (animation._babylonAnimationGroup?.getCurrentFrame() ?? 0) / 60; // fixed factor for duration-to-frames conversion
|
|
128
|
+
},
|
|
129
|
+
type: "number",
|
|
130
|
+
getTarget: (animation) => {
|
|
131
|
+
return animation._babylonAnimationGroup;
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
//virtualPlayhead - TODO, do we support this property in our animations? getCurrentFrame is the only method we have for this.
|
|
135
|
+
AddObjectAccessorToKey("/animations/{}/extensions/KHR_interactivity/virtualPlayhead", {
|
|
136
|
+
get: (animation) => {
|
|
137
|
+
return (animation._babylonAnimationGroup?.getCurrentFrame() ?? 0) / 60; // fixed factor for duration-to-frames conversion
|
|
138
|
+
},
|
|
139
|
+
type: "number",
|
|
140
|
+
getTarget: (animation) => {
|
|
141
|
+
return animation._babylonAnimationGroup;
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
// Register flow graph blocks. Do it here so they are available when the extension is enabled.
|
|
146
|
+
let _Registered = false;
|
|
147
|
+
/**
|
|
148
|
+
* Registers the KHR_interactivity glTF loader extension.
|
|
149
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
150
|
+
*/
|
|
151
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
152
|
+
export function RegisterKHR_interactivity() {
|
|
153
|
+
if (_Registered) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
_Registered = true;
|
|
157
|
+
addToBlockFactory(NAME, "FlowGraphGLTFDataProvider", async () => {
|
|
158
|
+
return (await import("./KHR_interactivity/flowGraphGLTFDataProvider.js")).FlowGraphGLTFDataProvider;
|
|
159
|
+
});
|
|
160
|
+
unregisterGLTFExtension(NAME);
|
|
161
|
+
registerGLTFExtension(NAME, true, (loader) => new KHR_interactivity(loader));
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=KHR_interactivity.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KHR_interactivity.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity.pure.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAIlE,MAAM,IAAI,GAAG,mBAAmB,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAY1B;;;OAGG;IACH,YAAoB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;QAfvC;;WAEG;QACa,SAAI,GAAG,IAAI,CAAC;QAaxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,2CAA2C;QAC3C,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEvC,wCAAwC;QAExC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACR,4BAA4B,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAEM,OAAO;QACT,IAAI,CAAC,OAAe,GAAG,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,wFAAwF;IACjF,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACrD,OAAO;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACxC,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAsC,CAAC;QACrG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC3B,4DAA4D;YAC5D,OAAO;QACX,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,WAAW,CAAC,2BAA2B,GAAG,KAAK,CAAC,CAAC,sDAAsD;QACvG,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,IAAI,mCAAmC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChH,OAAO,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,yBAAyB;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,mBAAmB,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtI,WAAW,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAY;IACrD,uDAAuD;IAEvD,yBAAyB;IACzB,sBAAsB,CAAC,uDAAuD,EAAE;QAC5E,GAAG,EAAE,GAAG,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5F,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gEAAgE;gBAC9E,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gEAAgE;YAClF,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY;KACtC,CAAC,CAAC;IACH,wBAAwB;IACxB,sBAAsB,CAAC,uDAAuD,EAAE;QAC5E,GAAG,EAAE,GAAG,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,sBAAsB;YACxF,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gEAAgE;YACjF,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC;QACD,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY;KACtC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,sBAAsB,CAAC,uDAAuD,EAAE;QAC5E,GAAG,EAAE,CAAC,SAAqB,EAAE,EAAE;YAC3B,OAAO,SAAS,CAAC,sBAAsB,EAAE,SAAS,IAAI,KAAK,CAAC;QAChE,CAAC;QACD,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,CAAC,SAAqB,EAAE,EAAE;YACjC,OAAO,SAAS,CAAC,sBAAsB,CAAC;QAC5C,CAAC;KACJ,CAAC,CAAC;IACH,sBAAsB,CAAC,qDAAqD,EAAE;QAC1E,GAAG,EAAE,CAAC,SAAqB,EAAE,EAAE;YAC3B,OAAO,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,iDAAiD;QAChH,CAAC;QACD,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,SAAqB,EAAE,EAAE;YACjC,OAAO,SAAS,CAAC,sBAAsB,CAAC;QAC5C,CAAC;KACJ,CAAC,CAAC;IACH,sBAAsB,CAAC,qDAAqD,EAAE;QAC1E,GAAG,EAAE,CAAC,SAAqB,EAAE,EAAE;YAC3B,OAAO,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,iDAAiD;QAC9G,CAAC;QACD,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,SAAqB,EAAE,EAAE;YACjC,OAAO,SAAS,CAAC,sBAAsB,CAAC;QAC5C,CAAC;KACJ,CAAC,CAAC;IACH,WAAW;IACX,sBAAsB,CAAC,sDAAsD,EAAE;QAC3E,GAAG,EAAE,CAAC,SAAqB,EAAE,EAAE;YAC3B,OAAO,CAAC,SAAS,CAAC,sBAAsB,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,iDAAiD;QAC7H,CAAC;QACD,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,SAAqB,EAAE,EAAE;YACjC,OAAO,SAAS,CAAC,sBAAsB,CAAC;QAC5C,CAAC;KACJ,CAAC,CAAC;IACH,8HAA8H;IAC9H,sBAAsB,CAAC,6DAA6D,EAAE;QAClF,GAAG,EAAE,CAAC,SAAqB,EAAE,EAAE;YAC3B,OAAO,CAAC,SAAS,CAAC,sBAAsB,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,iDAAiD;QAC7H,CAAC;QACD,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,SAAqB,EAAE,EAAE;YACjC,OAAO,SAAS,CAAC,sBAAsB,CAAC;QAC5C,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,8FAA8F;AAE9F,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,gEAAgE;AAChE,MAAM,UAAU,yBAAyB;IACrC,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,iBAAiB,CAAC,IAAI,EAAE,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC5D,OAAO,CAAC,MAAM,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC,yBAAyB,CAAC;IACrG,CAAC,CAAC,CAAC;IAEH,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE9B,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACjF,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type IKHRInteractivity } from \"babylonjs-gltf2interface\";\r\nimport { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { FlowGraphCoordinator } from \"core/FlowGraph/flowGraphCoordinator\";\r\nimport { ParseFlowGraphAsync } from \"core/FlowGraph/flowGraphParser\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\nimport { type GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\r\nimport { AddObjectAccessorToKey, GetPathToObjectConverter } from \"./objectModelMapping\";\r\nimport { InteractivityGraphToFlowGraphParser } from \"./KHR_interactivity/interactivityGraphParser\";\r\nimport { addToBlockFactory } from \"core/FlowGraph/Blocks/flowGraphBlockFactory\";\r\nimport { Quaternion, Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { type IAnimation } from \"../glTFLoaderInterfaces\";\r\n\r\nconst NAME = \"KHR_interactivity\";\r\n\r\n/**\r\n * Loader extension for KHR_interactivity\r\n */\r\nexport class KHR_interactivity implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _pathConverter?: GLTFPathToObjectConverter<any, any, any>;\r\n\r\n /**\r\n * @internal\r\n * @param _loader\r\n */\r\n constructor(private _loader: GLTFLoader) {\r\n this.enabled = this._loader.isExtensionUsed(NAME);\r\n this._pathConverter = GetPathToObjectConverter(this._loader.gltf);\r\n // avoid starting animations automatically.\r\n _loader._skipStartAnimationStep = true;\r\n\r\n // Update object model with new pointers\r\n\r\n const scene = _loader.babylonScene;\r\n if (scene) {\r\n _AddInteractivityObjectModel(scene);\r\n }\r\n }\r\n\r\n public dispose() {\r\n (this._loader as any) = null;\r\n delete this._pathConverter;\r\n }\r\n\r\n // eslint-disable-next-line no-restricted-syntax, @typescript-eslint/no-misused-promises\r\n public async onReady(): Promise<void> {\r\n if (!this._loader.babylonScene || !this._pathConverter) {\r\n return;\r\n }\r\n const scene = this._loader.babylonScene;\r\n const interactivityDefinition = this._loader.gltf.extensions?.KHR_interactivity as IKHRInteractivity;\r\n if (!interactivityDefinition) {\r\n // This can technically throw, but it's not a critical error\r\n return;\r\n }\r\n\r\n const coordinator = new FlowGraphCoordinator({ scene });\r\n coordinator.dispatchEventsSynchronously = false; // glTF interactivity dispatches events asynchronously\r\n const graphs = interactivityDefinition.graphs.map((graph) => {\r\n const parser = new InteractivityGraphToFlowGraphParser(graph, this._loader.gltf, this._loader.parent.targetFps);\r\n return parser.serializeToFlowGraph();\r\n });\r\n // parse each graph async\r\n await Promise.all(graphs.map(async (graph) => await ParseFlowGraphAsync(graph, { coordinator, pathConverter: this._pathConverter })));\r\n\r\n coordinator.start();\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * populates the object model with the interactivity extension\r\n */\r\nexport function _AddInteractivityObjectModel(scene: Scene) {\r\n // Note - all of those are read-only, as per the specs!\r\n\r\n // active camera rotation\r\n AddObjectAccessorToKey(\"/extensions/KHR_interactivity/?/activeCamera/rotation\", {\r\n get: () => {\r\n if (!scene.activeCamera) {\r\n return new Quaternion(NaN, NaN, NaN, NaN);\r\n }\r\n const quat = Quaternion.FromRotationMatrix(scene.activeCamera.getWorldMatrix()).normalize();\r\n if (!scene.useRightHandedSystem) {\r\n quat.w *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n quat.x *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n }\r\n return quat;\r\n },\r\n type: \"Quaternion\",\r\n getTarget: () => scene.activeCamera,\r\n });\r\n // activeCamera position\r\n AddObjectAccessorToKey(\"/extensions/KHR_interactivity/?/activeCamera/position\", {\r\n get: () => {\r\n if (!scene.activeCamera) {\r\n return new Vector3(NaN, NaN, NaN);\r\n }\r\n const pos = scene.activeCamera.getWorldMatrix().getTranslation(); // not global position\r\n if (!scene.useRightHandedSystem) {\r\n pos.x *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n }\r\n return pos;\r\n },\r\n type: \"Vector3\",\r\n getTarget: () => scene.activeCamera,\r\n });\r\n\r\n // /animations/{} pointers:\r\n AddObjectAccessorToKey(\"/animations/{}/extensions/KHR_interactivity/isPlaying\", {\r\n get: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup?.isPlaying ?? false;\r\n },\r\n type: \"boolean\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n });\r\n AddObjectAccessorToKey(\"/animations/{}/extensions/KHR_interactivity/minTime\", {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.from ?? 0) / 60; // fixed factor for duration-to-frames conversion\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n });\r\n AddObjectAccessorToKey(\"/animations/{}/extensions/KHR_interactivity/maxTime\", {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.to ?? 0) / 60; // fixed factor for duration-to-frames conversion\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n });\r\n // playhead\r\n AddObjectAccessorToKey(\"/animations/{}/extensions/KHR_interactivity/playhead\", {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.getCurrentFrame() ?? 0) / 60; // fixed factor for duration-to-frames conversion\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n });\r\n //virtualPlayhead - TODO, do we support this property in our animations? getCurrentFrame is the only method we have for this.\r\n AddObjectAccessorToKey(\"/animations/{}/extensions/KHR_interactivity/virtualPlayhead\", {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.getCurrentFrame() ?? 0) / 60; // fixed factor for duration-to-frames conversion\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n });\r\n}\r\n\r\n// Register flow graph blocks. Do it here so they are available when the extension is enabled.\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_interactivity glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_interactivity(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n addToBlockFactory(NAME, \"FlowGraphGLTFDataProvider\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphGLTFDataProvider\")).FlowGraphGLTFDataProvider;\r\n });\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_interactivity(loader));\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KHR_interactivity.types.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity.types.ts"],"names":[],"mappings":"","sourcesContent":["export {};\r\n\r\ndeclare module \"../../glTFFileLoader\" {\r\n // eslint-disable-next-line jsdoc/require-jsdoc, @typescript-eslint/naming-convention\r\n export interface GLTFLoaderExtensionOptions {\r\n /**\r\n * Defines options for the KHR_interactivity extension.\r\n */\r\n // NOTE: Don't use NAME here as it will break the UMD type declarations.\r\n [\"KHR_interactivity\"]: {};\r\n }\r\n}\r\n"]}
|
|
@@ -1,41 +1,6 @@
|
|
|
1
|
-
import { type Nullable } from "@onerjs/core/types.js";
|
|
2
|
-
import { type TransformNode } from "@onerjs/core/Meshes/transformNode.js";
|
|
3
|
-
import { type INode } from "../glTFLoaderInterfaces.js";
|
|
4
|
-
import { type IGLTFLoaderExtension } from "../glTFLoaderExtension.js";
|
|
5
|
-
import { GLTFLoader } from "../glTFLoader.js";
|
|
6
|
-
declare module "../../glTFFileLoader.js" {
|
|
7
|
-
interface GLTFLoaderExtensionOptions {
|
|
8
|
-
/**
|
|
9
|
-
* Defines options for the KHR_lights_punctual extension.
|
|
10
|
-
*/
|
|
11
|
-
["KHR_lights_punctual"]: {};
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
1
|
/**
|
|
15
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_lights_punctual.pure" for tree-shakeable, side-effect-free usage.
|
|
16
4
|
*/
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
* The name of this extension.
|
|
20
|
-
*/
|
|
21
|
-
readonly name = "KHR_lights_punctual";
|
|
22
|
-
/**
|
|
23
|
-
* Defines whether this extension is enabled.
|
|
24
|
-
*/
|
|
25
|
-
enabled: boolean;
|
|
26
|
-
/** hidden */
|
|
27
|
-
private _loader;
|
|
28
|
-
private _lights?;
|
|
29
|
-
/**
|
|
30
|
-
* @internal
|
|
31
|
-
*/
|
|
32
|
-
constructor(loader: GLTFLoader);
|
|
33
|
-
/** @internal */
|
|
34
|
-
dispose(): void;
|
|
35
|
-
/** @internal */
|
|
36
|
-
onLoading(): void;
|
|
37
|
-
/**
|
|
38
|
-
* @internal
|
|
39
|
-
*/
|
|
40
|
-
loadNodeAsync(context: string, node: INode, assign: (babylonTransformNode: TransformNode) => void): Nullable<Promise<TransformNode>>;
|
|
41
|
-
}
|
|
5
|
+
export * from "./KHR_lights_punctual.types.js";
|
|
6
|
+
export * from "./KHR_lights_punctual.pure.js";
|
|
@@ -1,92 +1,9 @@
|
|
|
1
|
-
import { Vector3 } from "@onerjs/core/Maths/math.vector.js";
|
|
2
|
-
import { Color3 } from "@onerjs/core/Maths/math.color.js";
|
|
3
|
-
import { DirectionalLight } from "@onerjs/core/Lights/directionalLight.js";
|
|
4
|
-
import { PointLight } from "@onerjs/core/Lights/pointLight.js";
|
|
5
|
-
import { SpotLight } from "@onerjs/core/Lights/spotLight.js";
|
|
6
|
-
import { Light } from "@onerjs/core/Lights/light.js";
|
|
7
|
-
import { GLTFLoader, ArrayItem } from "../glTFLoader.js";
|
|
8
|
-
import { registerGLTFExtension, unregisterGLTFExtension } from "../glTFLoaderExtensionRegistry.js";
|
|
9
|
-
const NAME = "KHR_lights_punctual";
|
|
10
1
|
/**
|
|
11
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_lights_punctual.pure" for tree-shakeable, side-effect-free usage.
|
|
12
4
|
*/
|
|
13
|
-
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*/
|
|
18
|
-
constructor(loader) {
|
|
19
|
-
/**
|
|
20
|
-
* The name of this extension.
|
|
21
|
-
*/
|
|
22
|
-
this.name = NAME;
|
|
23
|
-
this._loader = loader;
|
|
24
|
-
this.enabled = this._loader.isExtensionUsed(NAME);
|
|
25
|
-
}
|
|
26
|
-
/** @internal */
|
|
27
|
-
dispose() {
|
|
28
|
-
this._loader = null;
|
|
29
|
-
delete this._lights;
|
|
30
|
-
}
|
|
31
|
-
/** @internal */
|
|
32
|
-
onLoading() {
|
|
33
|
-
const extensions = this._loader.gltf.extensions;
|
|
34
|
-
if (extensions && extensions[this.name]) {
|
|
35
|
-
const extension = extensions[this.name];
|
|
36
|
-
this._lights = extension.lights;
|
|
37
|
-
ArrayItem.Assign(this._lights);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* @internal
|
|
42
|
-
*/
|
|
43
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
44
|
-
loadNodeAsync(context, node, assign) {
|
|
45
|
-
return GLTFLoader.LoadExtensionAsync(context, node, this.name, async (extensionContext, extension) => {
|
|
46
|
-
this._loader._allMaterialsDirtyRequired = true;
|
|
47
|
-
return await this._loader.loadNodeAsync(context, node, (babylonMesh) => {
|
|
48
|
-
let babylonLight;
|
|
49
|
-
const light = ArrayItem.Get(extensionContext, this._lights, extension.light);
|
|
50
|
-
const name = light.name || babylonMesh.name;
|
|
51
|
-
this._loader.babylonScene._blockEntityCollection = !!this._loader._assetContainer;
|
|
52
|
-
switch (light.type) {
|
|
53
|
-
case "directional" /* KHRLightsPunctual_LightType.DIRECTIONAL */: {
|
|
54
|
-
const babylonDirectionalLight = new DirectionalLight(name, Vector3.Backward(), this._loader.babylonScene);
|
|
55
|
-
babylonDirectionalLight.position.setAll(0);
|
|
56
|
-
babylonLight = babylonDirectionalLight;
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
case "point" /* KHRLightsPunctual_LightType.POINT */: {
|
|
60
|
-
babylonLight = new PointLight(name, Vector3.Zero(), this._loader.babylonScene);
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
case "spot" /* KHRLightsPunctual_LightType.SPOT */: {
|
|
64
|
-
const babylonSpotLight = new SpotLight(name, Vector3.Zero(), Vector3.Backward(), 0, 1, this._loader.babylonScene);
|
|
65
|
-
babylonSpotLight.angle = ((light.spot && light.spot.outerConeAngle) || Math.PI / 4) * 2;
|
|
66
|
-
babylonSpotLight.innerAngle = ((light.spot && light.spot.innerConeAngle) || 0) * 2;
|
|
67
|
-
babylonLight = babylonSpotLight;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
default: {
|
|
71
|
-
this._loader.babylonScene._blockEntityCollection = false;
|
|
72
|
-
throw new Error(`${extensionContext}: Invalid light type (${light.type})`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
babylonLight._parentContainer = this._loader._assetContainer;
|
|
76
|
-
this._loader.babylonScene._blockEntityCollection = false;
|
|
77
|
-
light._babylonLight = babylonLight;
|
|
78
|
-
babylonLight.falloffType = Light.FALLOFF_GLTF;
|
|
79
|
-
babylonLight.diffuse = light.color ? Color3.FromArray(light.color) : Color3.White();
|
|
80
|
-
babylonLight.intensity = light.intensity == undefined ? 1 : light.intensity;
|
|
81
|
-
babylonLight.range = light.range == undefined ? Number.MAX_VALUE : light.range;
|
|
82
|
-
babylonLight.parent = babylonMesh;
|
|
83
|
-
this._loader._babylonLights.push(babylonLight);
|
|
84
|
-
GLTFLoader.AddPointerMetadata(babylonLight, extensionContext);
|
|
85
|
-
assign(babylonMesh);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
unregisterGLTFExtension(NAME);
|
|
91
|
-
registerGLTFExtension(NAME, true, (loader) => new KHR_lights(loader));
|
|
5
|
+
export * from "./KHR_lights_punctual.types.js";
|
|
6
|
+
export * from "./KHR_lights_punctual.pure.js";
|
|
7
|
+
import { RegisterKHR_lights } from "./KHR_lights_punctual.pure.js";
|
|
8
|
+
RegisterKHR_lights();
|
|
92
9
|
//# sourceMappingURL=KHR_lights_punctual.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KHR_lights_punctual.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_lights_punctual.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KHR_lights_punctual.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_lights_punctual.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,kBAAkB,EAAE,CAAC","sourcesContent":["/**\r\n * Re-exports the pure implementation and applies the runtime registration side effect.\r\n * Import \"./KHR_lights_punctual.pure\" for tree-shakeable, side-effect-free usage.\r\n */\r\nexport * from \"./KHR_lights_punctual.types\";\r\nexport * from \"./KHR_lights_punctual.pure\";\r\n\r\nimport { RegisterKHR_lights } from \"./KHR_lights_punctual.pure\";\r\nRegisterKHR_lights();\r\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type Nullable } from "@onerjs/core/types.js";
|
|
2
|
+
import { type TransformNode } from "@onerjs/core/Meshes/transformNode.pure.js";
|
|
3
|
+
import { type INode } from "../glTFLoaderInterfaces.js";
|
|
4
|
+
import { type IGLTFLoaderExtension } from "../glTFLoaderExtension.js";
|
|
5
|
+
import { GLTFLoader } from "../glTFLoader.pure.js";
|
|
6
|
+
/**
|
|
7
|
+
* [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_lights_punctual/README.md)
|
|
8
|
+
*/
|
|
9
|
+
export declare class KHR_lights implements IGLTFLoaderExtension {
|
|
10
|
+
/**
|
|
11
|
+
* The name of this extension.
|
|
12
|
+
*/
|
|
13
|
+
readonly name = "KHR_lights_punctual";
|
|
14
|
+
/**
|
|
15
|
+
* Defines whether this extension is enabled.
|
|
16
|
+
*/
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
/** hidden */
|
|
19
|
+
private _loader;
|
|
20
|
+
private _lights?;
|
|
21
|
+
/**
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
constructor(loader: GLTFLoader);
|
|
25
|
+
/** @internal */
|
|
26
|
+
dispose(): void;
|
|
27
|
+
/** @internal */
|
|
28
|
+
onLoading(): void;
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
loadNodeAsync(context: string, node: INode, assign: (babylonTransformNode: TransformNode) => void): Nullable<Promise<TransformNode>>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Registers the KHR_lights glTF loader extension.
|
|
36
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
37
|
+
*/
|
|
38
|
+
export declare function RegisterKHR_lights(): void;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Vector3 } from "@onerjs/core/Maths/math.vector.pure.js";
|
|
2
|
+
import { Color3 } from "@onerjs/core/Maths/math.color.pure.js";
|
|
3
|
+
import { DirectionalLight } from "@onerjs/core/Lights/directionalLight.pure.js";
|
|
4
|
+
import { PointLight } from "@onerjs/core/Lights/pointLight.pure.js";
|
|
5
|
+
import { SpotLight } from "@onerjs/core/Lights/spotLight.pure.js";
|
|
6
|
+
import { Light } from "@onerjs/core/Lights/light.js";
|
|
7
|
+
import { GLTFLoader, ArrayItem } from "../glTFLoader.pure.js";
|
|
8
|
+
import { registerGLTFExtension, unregisterGLTFExtension } from "../glTFLoaderExtensionRegistry.js";
|
|
9
|
+
const NAME = "KHR_lights_punctual";
|
|
10
|
+
/**
|
|
11
|
+
* [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_lights_punctual/README.md)
|
|
12
|
+
*/
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
14
|
+
export class KHR_lights {
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
constructor(loader) {
|
|
19
|
+
/**
|
|
20
|
+
* The name of this extension.
|
|
21
|
+
*/
|
|
22
|
+
this.name = NAME;
|
|
23
|
+
this._loader = loader;
|
|
24
|
+
this.enabled = this._loader.isExtensionUsed(NAME);
|
|
25
|
+
}
|
|
26
|
+
/** @internal */
|
|
27
|
+
dispose() {
|
|
28
|
+
this._loader = null;
|
|
29
|
+
delete this._lights;
|
|
30
|
+
}
|
|
31
|
+
/** @internal */
|
|
32
|
+
onLoading() {
|
|
33
|
+
const extensions = this._loader.gltf.extensions;
|
|
34
|
+
if (extensions && extensions[this.name]) {
|
|
35
|
+
const extension = extensions[this.name];
|
|
36
|
+
this._lights = extension.lights;
|
|
37
|
+
ArrayItem.Assign(this._lights);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
44
|
+
loadNodeAsync(context, node, assign) {
|
|
45
|
+
return GLTFLoader.LoadExtensionAsync(context, node, this.name, async (extensionContext, extension) => {
|
|
46
|
+
this._loader._allMaterialsDirtyRequired = true;
|
|
47
|
+
return await this._loader.loadNodeAsync(context, node, (babylonMesh) => {
|
|
48
|
+
let babylonLight;
|
|
49
|
+
const light = ArrayItem.Get(extensionContext, this._lights, extension.light);
|
|
50
|
+
const name = light.name || babylonMesh.name;
|
|
51
|
+
this._loader.babylonScene._blockEntityCollection = !!this._loader._assetContainer;
|
|
52
|
+
switch (light.type) {
|
|
53
|
+
case "directional" /* KHRLightsPunctual_LightType.DIRECTIONAL */: {
|
|
54
|
+
const babylonDirectionalLight = new DirectionalLight(name, Vector3.Backward(), this._loader.babylonScene);
|
|
55
|
+
babylonDirectionalLight.position.setAll(0);
|
|
56
|
+
babylonLight = babylonDirectionalLight;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
case "point" /* KHRLightsPunctual_LightType.POINT */: {
|
|
60
|
+
babylonLight = new PointLight(name, Vector3.Zero(), this._loader.babylonScene);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case "spot" /* KHRLightsPunctual_LightType.SPOT */: {
|
|
64
|
+
const babylonSpotLight = new SpotLight(name, Vector3.Zero(), Vector3.Backward(), 0, 1, this._loader.babylonScene);
|
|
65
|
+
babylonSpotLight.angle = ((light.spot && light.spot.outerConeAngle) || Math.PI / 4) * 2;
|
|
66
|
+
babylonSpotLight.innerAngle = ((light.spot && light.spot.innerConeAngle) || 0) * 2;
|
|
67
|
+
babylonLight = babylonSpotLight;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
default: {
|
|
71
|
+
this._loader.babylonScene._blockEntityCollection = false;
|
|
72
|
+
throw new Error(`${extensionContext}: Invalid light type (${light.type})`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
babylonLight._parentContainer = this._loader._assetContainer;
|
|
76
|
+
this._loader.babylonScene._blockEntityCollection = false;
|
|
77
|
+
light._babylonLight = babylonLight;
|
|
78
|
+
babylonLight.falloffType = Light.FALLOFF_GLTF;
|
|
79
|
+
babylonLight.diffuse = light.color ? Color3.FromArray(light.color) : Color3.White();
|
|
80
|
+
babylonLight.intensity = light.intensity == undefined ? 1 : light.intensity;
|
|
81
|
+
babylonLight.range = light.range == undefined ? Number.MAX_VALUE : light.range;
|
|
82
|
+
babylonLight.parent = babylonMesh;
|
|
83
|
+
this._loader._babylonLights.push(babylonLight);
|
|
84
|
+
GLTFLoader.AddPointerMetadata(babylonLight, extensionContext);
|
|
85
|
+
assign(babylonMesh);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
let _Registered = false;
|
|
91
|
+
/**
|
|
92
|
+
* Registers the KHR_lights glTF loader extension.
|
|
93
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
94
|
+
*/
|
|
95
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
96
|
+
export function RegisterKHR_lights() {
|
|
97
|
+
if (_Registered) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
_Registered = true;
|
|
101
|
+
unregisterGLTFExtension(NAME);
|
|
102
|
+
registerGLTFExtension(NAME, true, (loader) => new KHR_lights(loader));
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=KHR_lights_punctual.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KHR_lights_punctual.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_lights_punctual.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"core/types\";\r\nimport { Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { Color3 } from \"core/Maths/math.color.pure\";\r\nimport { DirectionalLight } from \"core/Lights/directionalLight.pure\";\r\nimport { PointLight } from \"core/Lights/pointLight.pure\";\r\nimport { SpotLight } from \"core/Lights/spotLight.pure\";\r\nimport { Light } from \"core/Lights/light\";\r\nimport { type TransformNode } from \"core/Meshes/transformNode.pure\";\r\n\r\nimport { type IKHRLightsPunctual_LightReference, KHRLightsPunctual_LightType } from \"babylonjs-gltf2interface\";\r\nimport { type INode, type IKHRLightsPunctual_Light } from \"../glTFLoaderInterfaces\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { GLTFLoader, ArrayItem } from \"../glTFLoader.pure\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\n\r\nconst NAME = \"KHR_lights_punctual\";\r\n\r\n/**\r\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_lights_punctual/README.md)\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_lights implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n /** hidden */\r\n private _loader: GLTFLoader;\r\n private _lights?: IKHRLightsPunctual_Light[];\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = this._loader.isExtensionUsed(NAME);\r\n }\r\n\r\n /** @internal */\r\n public dispose() {\r\n (this._loader as any) = null;\r\n delete this._lights;\r\n }\r\n\r\n /** @internal */\r\n public onLoading(): void {\r\n const extensions = this._loader.gltf.extensions;\r\n if (extensions && extensions[this.name]) {\r\n const extension = extensions[this.name];\r\n this._lights = extension.lights;\r\n ArrayItem.Assign(this._lights);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public loadNodeAsync(context: string, node: INode, assign: (babylonTransformNode: TransformNode) => void): Nullable<Promise<TransformNode>> {\r\n return GLTFLoader.LoadExtensionAsync<IKHRLightsPunctual_LightReference, TransformNode>(context, node, this.name, async (extensionContext, extension) => {\r\n this._loader._allMaterialsDirtyRequired = true;\r\n\r\n return await this._loader.loadNodeAsync(context, node, (babylonMesh) => {\r\n let babylonLight: Light;\r\n\r\n const light = ArrayItem.Get(extensionContext, this._lights, extension.light);\r\n const name = light.name || babylonMesh.name;\r\n\r\n this._loader.babylonScene._blockEntityCollection = !!this._loader._assetContainer;\r\n\r\n switch (light.type) {\r\n case KHRLightsPunctual_LightType.DIRECTIONAL: {\r\n const babylonDirectionalLight = new DirectionalLight(name, Vector3.Backward(), this._loader.babylonScene);\r\n babylonDirectionalLight.position.setAll(0);\r\n babylonLight = babylonDirectionalLight;\r\n break;\r\n }\r\n case KHRLightsPunctual_LightType.POINT: {\r\n babylonLight = new PointLight(name, Vector3.Zero(), this._loader.babylonScene);\r\n break;\r\n }\r\n case KHRLightsPunctual_LightType.SPOT: {\r\n const babylonSpotLight = new SpotLight(name, Vector3.Zero(), Vector3.Backward(), 0, 1, this._loader.babylonScene);\r\n babylonSpotLight.angle = ((light.spot && light.spot.outerConeAngle) || Math.PI / 4) * 2;\r\n babylonSpotLight.innerAngle = ((light.spot && light.spot.innerConeAngle) || 0) * 2;\r\n babylonLight = babylonSpotLight;\r\n break;\r\n }\r\n default: {\r\n this._loader.babylonScene._blockEntityCollection = false;\r\n throw new Error(`${extensionContext}: Invalid light type (${light.type})`);\r\n }\r\n }\r\n\r\n babylonLight._parentContainer = this._loader._assetContainer;\r\n this._loader.babylonScene._blockEntityCollection = false;\r\n light._babylonLight = babylonLight;\r\n\r\n babylonLight.falloffType = Light.FALLOFF_GLTF;\r\n babylonLight.diffuse = light.color ? Color3.FromArray(light.color) : Color3.White();\r\n babylonLight.intensity = light.intensity == undefined ? 1 : light.intensity;\r\n babylonLight.range = light.range == undefined ? Number.MAX_VALUE : light.range;\r\n babylonLight.parent = babylonMesh;\r\n\r\n this._loader._babylonLights.push(babylonLight);\r\n\r\n GLTFLoader.AddPointerMetadata(babylonLight, extensionContext);\r\n\r\n assign(babylonMesh);\r\n });\r\n });\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_lights glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_lights(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_lights(loader));\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KHR_lights_punctual.types.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_lights_punctual.types.ts"],"names":[],"mappings":"","sourcesContent":["export {};\r\n\r\ndeclare module \"../../glTFFileLoader\" {\r\n // eslint-disable-next-line jsdoc/require-jsdoc, @typescript-eslint/naming-convention\r\n export interface GLTFLoaderExtensionOptions {\r\n /**\r\n * Defines options for the KHR_lights_punctual extension.\r\n */\r\n // NOTE: Don't use NAME here as it will break the UMD type declarations.\r\n [\"KHR_lights_punctual\"]: {};\r\n }\r\n}\r\n"]}
|
|
@@ -1,42 +1,6 @@
|
|
|
1
|
-
import { type Nullable } from "@onerjs/core/types.js";
|
|
2
|
-
import { type Material } from "@onerjs/core/Materials/material.js";
|
|
3
|
-
import { type IMaterial } from "../glTFLoaderInterfaces.js";
|
|
4
|
-
import { type IGLTFLoaderExtension } from "../glTFLoaderExtension.js";
|
|
5
|
-
import { GLTFLoader } from "../glTFLoader.js";
|
|
6
|
-
declare module "../../glTFFileLoader.js" {
|
|
7
|
-
interface GLTFLoaderExtensionOptions {
|
|
8
|
-
/**
|
|
9
|
-
* Defines options for the KHR_materials_anisotropy extension.
|
|
10
|
-
*/
|
|
11
|
-
["KHR_materials_anisotropy"]: {};
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
1
|
/**
|
|
15
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./KHR_materials_anisotropy.pure" for tree-shakeable, side-effect-free usage.
|
|
16
4
|
*/
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
* The name of this extension.
|
|
20
|
-
*/
|
|
21
|
-
readonly name = "KHR_materials_anisotropy";
|
|
22
|
-
/**
|
|
23
|
-
* Defines whether this extension is enabled.
|
|
24
|
-
*/
|
|
25
|
-
enabled: boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Defines a number that determines the order the extensions are applied.
|
|
28
|
-
*/
|
|
29
|
-
order: number;
|
|
30
|
-
private _loader;
|
|
31
|
-
/**
|
|
32
|
-
* @internal
|
|
33
|
-
*/
|
|
34
|
-
constructor(loader: GLTFLoader);
|
|
35
|
-
/** @internal */
|
|
36
|
-
dispose(): void;
|
|
37
|
-
/**
|
|
38
|
-
* @internal
|
|
39
|
-
*/
|
|
40
|
-
loadMaterialPropertiesAsync(context: string, material: IMaterial, babylonMaterial: Material): Nullable<Promise<void>>;
|
|
41
|
-
private _loadAnisotropyPropertiesAsync;
|
|
42
|
-
}
|
|
5
|
+
export * from "./KHR_materials_anisotropy.types.js";
|
|
6
|
+
export * from "./KHR_materials_anisotropy.pure.js";
|