mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-06-04 11:25:44 +08:00
Update snapshot to 1.3.4
This commit is contained in:
parent
c93f5074c5
commit
063994c362
252
CMakeLists.txt
252
CMakeLists.txt
@ -42,6 +42,7 @@ option(ENABLE_WERROR "" OFF)
|
||||
option(ENABLE_WEXTRA "" OFF)
|
||||
option(IGNORE_EMPTY_BUILD_TYPE "" OFF)
|
||||
option(BUILD_UNITY_PLUGIN "Build plugin library for Unity" OFF)
|
||||
option(BUILD_ANIMATION_ENCODING "" OFF)
|
||||
option(BUILD_FOR_GLTF "" OFF)
|
||||
option(BUILD_MAYA_PLUGIN "Build plugin library for Maya" OFF)
|
||||
|
||||
@ -121,12 +122,12 @@ if (BUILD_MAYA_PLUGIN)
|
||||
endif ()
|
||||
|
||||
if (ENABLE_EXTRA_SPEED)
|
||||
if(MSVC)
|
||||
if (MSVC)
|
||||
# Maximum optimization in Release mode.
|
||||
add_compile_options("$<$<CONFIG:RELEASE>:/Ox>")
|
||||
else()
|
||||
else ()
|
||||
add_compiler_flag_if_supported("-O3")
|
||||
endif()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
# Generate a version file containing repository info.
|
||||
@ -240,7 +241,6 @@ set(draco_compression_attributes_dec_sources
|
||||
"${draco_src_root}/compression/attributes/kd_tree_attributes_decoder.h"
|
||||
"${draco_src_root}/compression/attributes/kd_tree_attributes_shared.h"
|
||||
"${draco_src_root}/compression/attributes/mesh_attribute_indices_encoding_data.h"
|
||||
"${draco_src_root}/compression/attributes/mesh_traversal_sequencer.h"
|
||||
"${draco_src_root}/compression/attributes/normal_compression_utils.h"
|
||||
"${draco_src_root}/compression/attributes/point_d_vector.h"
|
||||
"${draco_src_root}/compression/attributes/sequential_attribute_decoder.cc"
|
||||
@ -260,7 +260,6 @@ set(draco_compression_attributes_enc_sources
|
||||
"${draco_src_root}/compression/attributes/kd_tree_attributes_encoder.cc"
|
||||
"${draco_src_root}/compression/attributes/kd_tree_attributes_encoder.h"
|
||||
"${draco_src_root}/compression/attributes/linear_sequencer.h"
|
||||
"${draco_src_root}/compression/attributes/mesh_attribute_indices_encoding_observer.h"
|
||||
"${draco_src_root}/compression/attributes/points_sequencer.h"
|
||||
"${draco_src_root}/compression/attributes/sequential_attribute_encoder.cc"
|
||||
"${draco_src_root}/compression/attributes/sequential_attribute_encoder.h"
|
||||
@ -330,6 +329,27 @@ set(draco_compression_attributes_pred_schemes_enc_sources
|
||||
"${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h"
|
||||
"${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h")
|
||||
|
||||
set(draco_compression_bit_coders_sources
|
||||
"${draco_src_root}/compression/bit_coders/adaptive_rans_bit_coding_shared.h"
|
||||
"${draco_src_root}/compression/bit_coders/adaptive_rans_bit_decoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/adaptive_rans_bit_decoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/adaptive_rans_bit_encoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/adaptive_rans_bit_encoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/direct_bit_decoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/direct_bit_decoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/direct_bit_encoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/direct_bit_encoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/folded_integer_bit_decoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/folded_integer_bit_encoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/rans_bit_decoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/rans_bit_decoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/rans_bit_encoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/rans_bit_encoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/symbol_bit_decoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/symbol_bit_decoder.h"
|
||||
"${draco_src_root}/compression/bit_coders/symbol_bit_encoder.cc"
|
||||
"${draco_src_root}/compression/bit_coders/symbol_bit_encoder.h")
|
||||
|
||||
set(draco_enc_config_sources
|
||||
"${draco_src_root}/compression/config/compression_shared.h"
|
||||
"${draco_src_root}/compression/config/draco_options.h"
|
||||
@ -352,6 +372,14 @@ set(draco_compression_encode_sources
|
||||
"${draco_src_root}/compression/expert_encode.cc"
|
||||
"${draco_src_root}/compression/expert_encode.h")
|
||||
|
||||
|
||||
set(draco_compression_mesh_traverser_sources
|
||||
"${draco_src_root}/compression/mesh/traverser/depth_first_traverser.h"
|
||||
"${draco_src_root}/compression/mesh/traverser/max_prediction_degree_traverser.h"
|
||||
"${draco_src_root}/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h"
|
||||
"${draco_src_root}/compression/mesh/traverser/mesh_traversal_sequencer.h"
|
||||
"${draco_src_root}/compression/mesh/traverser/traverser_base.h")
|
||||
|
||||
set(draco_compression_mesh_dec_sources
|
||||
"${draco_src_root}/compression/mesh/mesh_decoder.cc"
|
||||
"${draco_src_root}/compression/mesh/mesh_decoder.h"
|
||||
@ -400,9 +428,23 @@ set(draco_compression_point_cloud_enc_sources
|
||||
"${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoder.cc"
|
||||
"${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoder.h")
|
||||
|
||||
set(draco_compression_entropy_sources
|
||||
"${draco_src_root}/compression/entropy/ans.h"
|
||||
"${draco_src_root}/compression/entropy/rans_symbol_coding.h"
|
||||
"${draco_src_root}/compression/entropy/rans_symbol_decoder.h"
|
||||
"${draco_src_root}/compression/entropy/rans_symbol_encoder.h"
|
||||
"${draco_src_root}/compression/entropy/shannon_entropy.cc"
|
||||
"${draco_src_root}/compression/entropy/shannon_entropy.h"
|
||||
"${draco_src_root}/compression/entropy/symbol_decoding.cc"
|
||||
"${draco_src_root}/compression/entropy/symbol_decoding.h"
|
||||
"${draco_src_root}/compression/entropy/symbol_encoding.cc"
|
||||
"${draco_src_root}/compression/entropy/symbol_encoding.h")
|
||||
|
||||
set(draco_core_sources
|
||||
"${draco_src_root}/core/ans.h"
|
||||
"${draco_src_root}/core/bit_utils.cc"
|
||||
"${draco_src_root}/core/bit_utils.h"
|
||||
"${draco_src_root}/core/bounding_box.cc"
|
||||
"${draco_src_root}/core/bounding_box.h"
|
||||
"${draco_src_root}/core/cycle_timer.cc"
|
||||
"${draco_src_root}/core/cycle_timer.h"
|
||||
"${draco_src_root}/core/data_buffer.cc"
|
||||
@ -425,44 +467,12 @@ set(draco_core_sources
|
||||
"${draco_src_root}/core/options.h"
|
||||
"${draco_src_root}/core/quantization_utils.cc"
|
||||
"${draco_src_root}/core/quantization_utils.h"
|
||||
"${draco_src_root}/core/rans_symbol_coding.h"
|
||||
"${draco_src_root}/core/rans_symbol_decoder.h"
|
||||
"${draco_src_root}/core/rans_symbol_encoder.h"
|
||||
"${draco_src_root}/core/shannon_entropy.cc"
|
||||
"${draco_src_root}/core/shannon_entropy.h"
|
||||
"${draco_src_root}/core/status.h"
|
||||
"${draco_src_root}/core/statusor.h"
|
||||
"${draco_src_root}/core/symbol_coding_utils.cc"
|
||||
"${draco_src_root}/core/symbol_coding_utils.h"
|
||||
"${draco_src_root}/core/symbol_decoding.cc"
|
||||
"${draco_src_root}/core/symbol_decoding.h"
|
||||
"${draco_src_root}/core/symbol_encoding.cc"
|
||||
"${draco_src_root}/core/symbol_encoding.h"
|
||||
"${draco_src_root}/core/varint_decoding.h"
|
||||
"${draco_src_root}/core/varint_encoding.h"
|
||||
"${draco_src_root}/core/vector_d.h")
|
||||
|
||||
set(draco_core_bit_coders_sources
|
||||
"${draco_src_root}/core/bit_coders/adaptive_rans_bit_coding_shared.h"
|
||||
"${draco_src_root}/core/bit_coders/adaptive_rans_bit_decoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/adaptive_rans_bit_decoder.h"
|
||||
"${draco_src_root}/core/bit_coders/adaptive_rans_bit_encoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/adaptive_rans_bit_encoder.h"
|
||||
"${draco_src_root}/core/bit_coders/direct_bit_decoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/direct_bit_decoder.h"
|
||||
"${draco_src_root}/core/bit_coders/direct_bit_encoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/direct_bit_encoder.h"
|
||||
"${draco_src_root}/core/bit_coders/folded_integer_bit_decoder.h"
|
||||
"${draco_src_root}/core/bit_coders/folded_integer_bit_encoder.h"
|
||||
"${draco_src_root}/core/bit_coders/rans_bit_decoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/rans_bit_decoder.h"
|
||||
"${draco_src_root}/core/bit_coders/rans_bit_encoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/rans_bit_encoder.h"
|
||||
"${draco_src_root}/core/bit_coders/symbol_bit_decoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/symbol_bit_decoder.h"
|
||||
"${draco_src_root}/core/bit_coders/symbol_bit_encoder.cc"
|
||||
"${draco_src_root}/core/bit_coders/symbol_bit_encoder.h")
|
||||
|
||||
set(draco_io_sources
|
||||
"${draco_src_root}/io/mesh_io.cc"
|
||||
"${draco_src_root}/io/mesh_io.h"
|
||||
@ -487,9 +497,6 @@ set(draco_mesh_sources
|
||||
"${draco_src_root}/mesh/corner_table.cc"
|
||||
"${draco_src_root}/mesh/corner_table.h"
|
||||
"${draco_src_root}/mesh/corner_table_iterators.h"
|
||||
"${draco_src_root}/mesh/corner_table_traversal_processor.h"
|
||||
"${draco_src_root}/mesh/edgebreaker_observer.h"
|
||||
"${draco_src_root}/mesh/edgebreaker_traverser.h"
|
||||
"${draco_src_root}/mesh/mesh.cc"
|
||||
"${draco_src_root}/mesh/mesh.h"
|
||||
"${draco_src_root}/mesh/mesh_are_equivalent.cc"
|
||||
@ -544,6 +551,17 @@ set(draco_metadata_dec_sources
|
||||
"${draco_src_root}/metadata/metadata_decoder.cc"
|
||||
"${draco_src_root}/metadata/metadata_decoder.h")
|
||||
|
||||
set(draco_animation_sources
|
||||
"${draco_src_root}/animation/keyframe_animation.cc"
|
||||
"${draco_src_root}/animation/keyframe_animation.h")
|
||||
|
||||
set(draco_animation_enc_sources
|
||||
"${draco_src_root}/animation/keyframe_animation_encoder.cc"
|
||||
"${draco_src_root}/animation/keyframe_animation_encoder.h")
|
||||
|
||||
set(draco_animation_dec_sources
|
||||
"${draco_src_root}/animation/keyframe_animation_decoder.cc"
|
||||
"${draco_src_root}/animation/keyframe_animation_decoder.h")
|
||||
|
||||
set(draco_js_dec_sources
|
||||
"${draco_src_root}/javascript/emscripten/decoder_webidl_wrapper.cc"
|
||||
@ -553,20 +571,31 @@ set(draco_js_enc_sources
|
||||
"${draco_src_root}/javascript/emscripten/draco_encoder_glue_wrapper.cc"
|
||||
"${draco_src_root}/javascript/emscripten/encoder_webidl_wrapper.cc")
|
||||
|
||||
set(draco_animation_js_dec_sources
|
||||
"${draco_src_root}/javascript/emscripten/animation_decoder_webidl_wrapper.cc"
|
||||
"${draco_src_root}/javascript/emscripten/draco_animation_decoder_glue_wrapper.cc")
|
||||
|
||||
set(draco_animation_js_enc_sources
|
||||
"${draco_src_root}/javascript/emscripten/animation_encoder_webidl_wrapper.cc"
|
||||
"${draco_src_root}/javascript/emscripten/draco_animation_encoder_glue_wrapper.cc")
|
||||
|
||||
set(draco_test_sources
|
||||
"${draco_src_root}/animation/keyframe_animation_encoding_test.cc"
|
||||
"${draco_src_root}/animation/keyframe_animation_test.cc"
|
||||
"${draco_src_root}/attributes/point_attribute_test.cc"
|
||||
"${draco_src_root}/compression/attributes/point_d_vector_test.cc"
|
||||
"${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc"
|
||||
"${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc"
|
||||
"${draco_src_root}/compression/attributes/point_d_vector_test.cc"
|
||||
"${draco_src_root}/compression/attributes/sequential_integer_attribute_encoding_test.cc"
|
||||
"${draco_src_root}/compression/bit_coders/rans_coding_test.cc"
|
||||
"${draco_src_root}/compression/decode_test.cc"
|
||||
"${draco_src_root}/compression/encode_test.cc"
|
||||
"${draco_src_root}/compression/entropy/shannon_entropy_test.cc"
|
||||
"${draco_src_root}/compression/entropy/symbol_coding_test.cc"
|
||||
"${draco_src_root}/compression/mesh/mesh_edgebreaker_encoding_test.cc"
|
||||
"${draco_src_root}/compression/mesh/mesh_encoder_test.cc"
|
||||
"${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc"
|
||||
"${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoding_test.cc"
|
||||
"${draco_src_root}/core/bit_coders/rans_coding_test.cc"
|
||||
"${draco_src_root}/core/buffer_bit_coding_test.cc"
|
||||
"${draco_src_root}/core/draco_test_base.h"
|
||||
"${draco_src_root}/core/draco_test_utils.cc"
|
||||
@ -574,9 +603,7 @@ set(draco_test_sources
|
||||
"${draco_src_root}/core/draco_tests.cc"
|
||||
"${draco_src_root}/core/math_utils_test.cc"
|
||||
"${draco_src_root}/core/quantization_utils_test.cc"
|
||||
"${draco_src_root}/core/shannon_entropy_test.cc"
|
||||
"${draco_src_root}/core/status_test.cc"
|
||||
"${draco_src_root}/core/symbol_coding_test.cc"
|
||||
"${draco_src_root}/core/vector_d_test.cc"
|
||||
"${draco_src_root}/io/obj_decoder_test.cc"
|
||||
"${draco_src_root}/io/obj_encoder_test.cc"
|
||||
@ -636,6 +663,10 @@ if (EMSCRIPTEN AND ENABLE_JS_GLUE)
|
||||
"${draco_src_root}/javascript/emscripten/draco_web_decoder.idl")
|
||||
set(draco_js_enc_idl
|
||||
"${draco_src_root}/javascript/emscripten/draco_web_encoder.idl")
|
||||
set(draco_animation_js_dec_idl
|
||||
"${draco_src_root}/javascript/emscripten/draco_animation_web_decoder.idl")
|
||||
set(draco_animation_js_enc_idl
|
||||
"${draco_src_root}/javascript/emscripten/draco_animation_web_encoder.idl")
|
||||
|
||||
# Generate ${draco_build_dir}/glue_decoder.cpp at cmake generation time so it
|
||||
# can be added to targets without cmake reporting errors.
|
||||
@ -654,6 +685,20 @@ if (EMSCRIPTEN AND ENABLE_JS_GLUE)
|
||||
message(FATAL_ERROR "Glue generation failed.")
|
||||
endif ()
|
||||
|
||||
if (BUILD_ANIMATION_ENCODING)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE}
|
||||
$ENV{EMSCRIPTEN}/tools/webidl_binder.py
|
||||
${draco_animation_js_dec_idl}
|
||||
${draco_build_dir}/glue_animation_decoder)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE}
|
||||
$ENV{EMSCRIPTEN}/tools/webidl_binder.py
|
||||
${draco_animation_js_enc_idl}
|
||||
${draco_build_dir}/glue_animation_encoder)
|
||||
if (NOT EXISTS "${draco_build_dir}/glue_animation_decoder.cpp" OR
|
||||
NOT EXISTS "${draco_build_dir}/glue_animation_encoder.cpp")
|
||||
message(FATAL_ERROR "Animation glue generation failed.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Add a custom rule depending on the IDL to regenerate
|
||||
# ${draco_build_dir}/glue_decoder.cpp as needed.
|
||||
@ -677,16 +722,38 @@ if (EMSCRIPTEN AND ENABLE_JS_GLUE)
|
||||
WORKING_DIRECTORY ${draco_build_dir}
|
||||
VERBATIM)
|
||||
|
||||
if (BUILD_ANIMATION_ENCODING)
|
||||
add_custom_command(OUTPUT ${draco_build_dir}/glue_animation_decoder.cpp
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
$ENV{EMSCRIPTEN}/tools/webidl_binder.py
|
||||
${draco_animation_js_dec_idl}
|
||||
${draco_build_dir}/glue_animation_decoder
|
||||
DEPENDS ${draco_animation_js_dec_idl}
|
||||
COMMENT "Generating ${draco_build_dir}/glue_animation_decoder.cpp."
|
||||
WORKING_DIRECTORY ${draco_build_dir}
|
||||
VERBATIM)
|
||||
add_custom_command(OUTPUT ${draco_build_dir}/glue_animation_encoder.cpp
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
$ENV{EMSCRIPTEN}/tools/webidl_binder.py
|
||||
${draco_animation_js_enc_idl}
|
||||
${draco_build_dir}/glue_animation_encoder
|
||||
DEPENDS ${draco_animation_js_enc_idl}
|
||||
COMMENT "Generating ${draco_build_dir}/glue_animation_encoder.cpp."
|
||||
WORKING_DIRECTORY ${draco_build_dir}
|
||||
VERBATIM)
|
||||
endif()
|
||||
|
||||
set(draco_decoder_src
|
||||
${draco_attributes_sources}
|
||||
${draco_compression_attributes_dec_sources}
|
||||
${draco_compression_attributes_pred_schemes_dec_sources}
|
||||
${draco_compression_bit_coders_sources}
|
||||
${draco_compression_decode_sources}
|
||||
${draco_compression_entropy_sources}
|
||||
${draco_compression_mesh_traverser_sources}
|
||||
${draco_compression_mesh_dec_sources}
|
||||
${draco_compression_point_cloud_dec_sources}
|
||||
${draco_core_sources}
|
||||
${draco_core_bit_coders_sources}
|
||||
${draco_dec_config_sources}
|
||||
${draco_io_sources}
|
||||
${draco_mesh_sources}
|
||||
@ -695,15 +762,18 @@ if (EMSCRIPTEN AND ENABLE_JS_GLUE)
|
||||
${draco_point_cloud_sources}
|
||||
${draco_points_dec_sources}
|
||||
${draco_version_sources})
|
||||
|
||||
set(draco_encoder_src
|
||||
${draco_attributes_sources}
|
||||
${draco_compression_attributes_enc_sources}
|
||||
${draco_compression_attributes_pred_schemes_enc_sources}
|
||||
${draco_compression_bit_coders_sources}
|
||||
${draco_compression_encode_sources}
|
||||
${draco_compression_entropy_sources}
|
||||
${draco_compression_mesh_traverser_sources}
|
||||
${draco_compression_mesh_enc_sources}
|
||||
${draco_compression_point_cloud_enc_sources}
|
||||
${draco_core_sources}
|
||||
${draco_core_bit_coders_sources}
|
||||
${draco_enc_config_sources}
|
||||
${draco_io_sources}
|
||||
${draco_mesh_sources}
|
||||
@ -751,6 +821,40 @@ if (EMSCRIPTEN AND ENABLE_JS_GLUE)
|
||||
"${draco_build_dir}/glue_encoder.js"
|
||||
"${draco_src_root}/javascript/emscripten/finalize.js")
|
||||
|
||||
if (BUILD_ANIMATION_ENCODING)
|
||||
add_executable(draco_animation_decoder
|
||||
${draco_animation_dec_sources}
|
||||
${draco_animation_js_dec_sources}
|
||||
${draco_animation_sources}
|
||||
${draco_decoder_src})
|
||||
add_executable(draco_animation_encoder
|
||||
${draco_animation_enc_sources}
|
||||
${draco_animation_js_enc_sources}
|
||||
${draco_animation_sources}
|
||||
${draco_encoder_src})
|
||||
append_link_flag_to_target(draco_animation_decoder
|
||||
"-s EXPORT_NAME=\"'DracoAnimationDecoderModule'\"")
|
||||
append_link_flag_to_target(draco_animation_encoder
|
||||
"-s EXPORT_NAME=\"'DracoAnimationEncoderModule'\"")
|
||||
|
||||
set_property(SOURCE ${draco_js_sources} APPEND PROPERTY OBJECT_DEPENDS
|
||||
${draco_build_dir}/glue_animation_decoder.cpp)
|
||||
em_link_pre_js(draco_animation_decoder
|
||||
"${draco_src_root}/javascript/emscripten/prepareCallbacks.js"
|
||||
"${draco_src_root}/javascript/emscripten/version.js")
|
||||
em_link_post_js(draco_animation_decoder
|
||||
"${draco_build_dir}/glue_animation_decoder.js"
|
||||
"${draco_src_root}/javascript/emscripten/finalize.js")
|
||||
|
||||
set_property(SOURCE ${draco_js_enc_sources} APPEND PROPERTY OBJECT_DEPENDS
|
||||
${draco_build_dir}/glue_animation_encoder.cpp)
|
||||
em_link_pre_js(draco_animation_encoder
|
||||
"${draco_src_root}/javascript/emscripten/prepareCallbacks.js"
|
||||
"${draco_src_root}/javascript/emscripten/version.js")
|
||||
em_link_post_js(draco_animation_encoder
|
||||
"${draco_build_dir}/glue_animation_encoder.js"
|
||||
"${draco_src_root}/javascript/emscripten/finalize.js")
|
||||
endif()
|
||||
else ()
|
||||
# Standard Draco libs, encoder and decoder.
|
||||
# Object collections that mirror the Draco directory structure.
|
||||
@ -766,6 +870,8 @@ else ()
|
||||
${draco_compression_attributes_pred_schemes_dec_sources})
|
||||
add_library(draco_compression_attributes_pred_schemes_enc OBJECT
|
||||
${draco_compression_attributes_pred_schemes_enc_sources})
|
||||
add_library(draco_compression_bit_coders OBJECT
|
||||
${draco_compression_bit_coders_sources})
|
||||
add_library(draco_enc_config OBJECT
|
||||
${draco_enc_config_sources})
|
||||
add_library(draco_dec_config OBJECT
|
||||
@ -774,6 +880,10 @@ else ()
|
||||
${draco_compression_decode_sources})
|
||||
add_library(draco_compression_encode OBJECT
|
||||
${draco_compression_encode_sources})
|
||||
add_library(draco_compression_entropy OBJECT
|
||||
${draco_compression_entropy_sources})
|
||||
add_library(draco_compression_mesh_traverser OBJECT
|
||||
${draco_compression_mesh_traverser_sources})
|
||||
add_library(draco_compression_mesh_dec OBJECT
|
||||
${draco_compression_mesh_dec_sources})
|
||||
add_library(draco_compression_mesh_enc OBJECT
|
||||
@ -783,12 +893,14 @@ else ()
|
||||
add_library(draco_compression_point_cloud_enc OBJECT
|
||||
${draco_compression_point_cloud_enc_sources})
|
||||
add_library(draco_core OBJECT ${draco_core_sources})
|
||||
add_library(draco_core_bit_coders OBJECT ${draco_core_bit_coders_sources})
|
||||
add_library(draco_io OBJECT ${draco_io_sources})
|
||||
add_library(draco_mesh OBJECT ${draco_mesh_sources})
|
||||
add_library(draco_metadata_dec OBJECT ${draco_metadata_dec_sources})
|
||||
add_library(draco_metadata_enc OBJECT ${draco_metadata_enc_sources})
|
||||
add_library(draco_metadata OBJECT ${draco_metadata_sources})
|
||||
add_library(draco_animation_dec OBJECT ${draco_animation_dec_sources})
|
||||
add_library(draco_animation_enc OBJECT ${draco_animation_enc_sources})
|
||||
add_library(draco_animation OBJECT ${draco_animation_sources})
|
||||
add_library(draco_point_cloud OBJECT ${draco_point_cloud_sources})
|
||||
add_library(draco_points_dec OBJECT
|
||||
${draco_points_common_sources}
|
||||
@ -813,31 +925,37 @@ else ()
|
||||
$<TARGET_OBJECTS:draco_attributes>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_decode>
|
||||
$<TARGET_OBJECTS:draco_compression_entropy>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_core>
|
||||
$<TARGET_OBJECTS:draco_core_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_dec_config>
|
||||
$<TARGET_OBJECTS:draco_io>
|
||||
$<TARGET_OBJECTS:draco_mesh>
|
||||
$<TARGET_OBJECTS:draco_metadata>
|
||||
$<TARGET_OBJECTS:draco_metadata_dec>
|
||||
$<TARGET_OBJECTS:draco_animation>
|
||||
$<TARGET_OBJECTS:draco_animation_dec>
|
||||
$<TARGET_OBJECTS:draco_point_cloud>
|
||||
$<TARGET_OBJECTS:draco_points_dec>)
|
||||
add_library(dracoenc
|
||||
${draco_version_sources}
|
||||
$<TARGET_OBJECTS:draco_attributes>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_entropy>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_pred_schemes_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_compression_encode>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_enc>
|
||||
$<TARGET_OBJECTS:draco_core>
|
||||
$<TARGET_OBJECTS:draco_core_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_enc_config>
|
||||
$<TARGET_OBJECTS:draco_mesh>
|
||||
$<TARGET_OBJECTS:draco_metadata>
|
||||
$<TARGET_OBJECTS:draco_metadata_enc>
|
||||
$<TARGET_OBJECTS:draco_animation>
|
||||
$<TARGET_OBJECTS:draco_animation_enc>
|
||||
$<TARGET_OBJECTS:draco_point_cloud>
|
||||
$<TARGET_OBJECTS:draco_points_enc>)
|
||||
add_library(draco
|
||||
@ -847,21 +965,25 @@ else ()
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_pred_schemes_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_pred_schemes_enc>
|
||||
$<TARGET_OBJECTS:draco_enc_config>
|
||||
$<TARGET_OBJECTS:draco_dec_config>
|
||||
$<TARGET_OBJECTS:draco_compression_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_compression_decode>
|
||||
$<TARGET_OBJECTS:draco_compression_encode>
|
||||
$<TARGET_OBJECTS:draco_compression_entropy>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_enc>
|
||||
$<TARGET_OBJECTS:draco_core>
|
||||
$<TARGET_OBJECTS:draco_core_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_dec_config>
|
||||
$<TARGET_OBJECTS:draco_enc_config>
|
||||
$<TARGET_OBJECTS:draco_io>
|
||||
$<TARGET_OBJECTS:draco_mesh>
|
||||
$<TARGET_OBJECTS:draco_metadata>
|
||||
$<TARGET_OBJECTS:draco_metadata_dec>
|
||||
$<TARGET_OBJECTS:draco_metadata_enc>
|
||||
$<TARGET_OBJECTS:draco_animation>
|
||||
$<TARGET_OBJECTS:draco_animation_dec>
|
||||
$<TARGET_OBJECTS:draco_animation_enc>
|
||||
$<TARGET_OBJECTS:draco_point_cloud>
|
||||
$<TARGET_OBJECTS:draco_points_dec>
|
||||
$<TARGET_OBJECTS:draco_points_enc>)
|
||||
@ -869,21 +991,22 @@ else ()
|
||||
add_library(dracodec_unity
|
||||
MODULE
|
||||
${draco_version_sources}
|
||||
$<TARGET_OBJECTS:draco_unity_plugin>
|
||||
$<TARGET_OBJECTS:draco_attributes>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_compression_decode>
|
||||
$<TARGET_OBJECTS:draco_compression_entropy>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_dec>
|
||||
$<TARGET_OBJECTS:draco_core>
|
||||
$<TARGET_OBJECTS:draco_core_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_dec_config>
|
||||
$<TARGET_OBJECTS:draco_io>
|
||||
$<TARGET_OBJECTS:draco_mesh>
|
||||
$<TARGET_OBJECTS:draco_metadata>
|
||||
$<TARGET_OBJECTS:draco_metadata_dec>
|
||||
$<TARGET_OBJECTS:draco_point_cloud>
|
||||
$<TARGET_OBJECTS:draco_points_dec>)
|
||||
$<TARGET_OBJECTS:draco_points_dec>
|
||||
$<TARGET_OBJECTS:draco_unity_plugin>)
|
||||
# For Mac, we need to build a .bundle for plugin.
|
||||
if (APPLE)
|
||||
set_target_properties(dracodec_unity PROPERTIES BUNDLE true)
|
||||
@ -894,28 +1017,28 @@ else ()
|
||||
add_library(draco_maya_wrapper
|
||||
MODULE
|
||||
${draco_version_sources}
|
||||
$<TARGET_OBJECTS:draco_maya_plugin>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_pred_schemes_enc>
|
||||
$<TARGET_OBJECTS:draco_attributes>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_decode>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_attributes_pred_schemes_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_compression_decode>
|
||||
$<TARGET_OBJECTS:draco_compression_encode>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_mesh_enc>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_dec>
|
||||
$<TARGET_OBJECTS:draco_compression_point_cloud_enc>
|
||||
$<TARGET_OBJECTS:draco_core>
|
||||
$<TARGET_OBJECTS:draco_core_bit_coders>
|
||||
$<TARGET_OBJECTS:draco_enc_config>
|
||||
$<TARGET_OBJECTS:draco_dec_config>
|
||||
$<TARGET_OBJECTS:draco_enc_config>
|
||||
$<TARGET_OBJECTS:draco_io>
|
||||
$<TARGET_OBJECTS:draco_maya_plugin>
|
||||
$<TARGET_OBJECTS:draco_mesh>
|
||||
$<TARGET_OBJECTS:draco_metadata>
|
||||
$<TARGET_OBJECTS:draco_metadata_dec>
|
||||
$<TARGET_OBJECTS:draco_metadata_enc>
|
||||
$<TARGET_OBJECTS:draco_point_cloud>
|
||||
$<TARGET_OBJECTS:draco_points_dec>
|
||||
$<TARGET_OBJECTS:draco_metadata_enc>
|
||||
$<TARGET_OBJECTS:draco_points_enc>)
|
||||
|
||||
# For Mac, we need to build a .bundle for plugin.
|
||||
@ -926,6 +1049,7 @@ else ()
|
||||
|
||||
set(draco_header_only_targets
|
||||
draco_compression_attributes_pred_schemes_dec
|
||||
draco_compression_mesh_traverser
|
||||
draco_dec_config
|
||||
draco_enc_config)
|
||||
|
||||
|
@ -1,774 +0,0 @@
|
||||
#########
|
||||
# Makefile for emscripten
|
||||
CC=emcc
|
||||
CXX=em++
|
||||
AR=emar
|
||||
LD=emcc
|
||||
|
||||
######### Configurations defining feature set #########
|
||||
# Use "make target DRACO_CONFIG=full|limited" to set the desired configuration
|
||||
|
||||
# Select the correct version based on the input flags.
|
||||
DRACO_CONFIG ?= full
|
||||
|
||||
# Full config - all features included.
|
||||
DRACO_FULL_MESH_CONFIG_DEFINES := -DDRACO_MESH_COMPRESSION_SUPPORTED
|
||||
DRACO_FULL_MESH_CONFIG_DEFINES += -DDRACO_STANDARD_EDGEBREAKER_SUPPORTED
|
||||
DRACO_FULL_MESH_CONFIG_DEFINES += -DDRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED
|
||||
|
||||
DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES := -DDRACO_POINT_CLOUD_COMPRESSION_SUPPORTED
|
||||
|
||||
DRACO_FULL_CONFIG_DEFINES := $(DRACO_FULL_MESH_CONFIG_DEFINES)
|
||||
DRACO_FULL_CONFIG_DEFINES += $(DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES)
|
||||
|
||||
# Default limited config with only some core features enabled.
|
||||
DRACO_LIMITED_CONFIG_DEFINES := -DDRACO_STANDARD_EDGEBREAKER_SUPPORTED
|
||||
DRACO_LIMITED_CONFIG_DEFINES += -DDRACO_POINT_CLOUD_COMPRESSION_SUPPORTED
|
||||
DRACO_LIMITED_CONFIG_DEFINES += -DDRACO_MESH_COMPRESSION_SUPPORTED
|
||||
|
||||
ifeq ($(DRACO_CONFIG), limited)
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_LIMITED_CONFIG_DEFINES)
|
||||
else ifeq ($(DRACO_CONFIG), full_mesh)
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_FULL_MESH_CONFIG_DEFINES)
|
||||
else ifeq ($(DRACO_CONFIG), full_point_cloud)
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES)
|
||||
else
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_FULL_CONFIG_DEFINES)
|
||||
endif
|
||||
#########
|
||||
|
||||
DEFINES := $(DRACO_CONFIG_DEFINES)
|
||||
INCLUDES := -I../../ -I./ -I./src/
|
||||
SRCDIR := src/draco
|
||||
OBJDIR := obj
|
||||
LIBDIR := libs
|
||||
IDL := $(SRCDIR)/javascript/emscripten/draco_web_decoder.idl
|
||||
BINDER := $(EMSCRIPTEN)/tools/webidl_binder.py
|
||||
|
||||
# In order to open an input mesh file with test_mesh_encoder, you need to add
|
||||
# the mesh here. Then you need to add the test_mesh_encoder command line
|
||||
# arguments to the generated html file. E.g.
|
||||
# arguments: ["-m","1","-q","9", "-noerror","-no3rdparty","-f","cube.obj"],
|
||||
#MESH_FILE := --preload-file cube.obj
|
||||
MESH_FILE :=
|
||||
|
||||
ALL_C_OPTS := -std=c++11
|
||||
|
||||
# Options to reduce JavaScript size.
|
||||
#ALL_C_OPTS += -Oz -s NO_FILESYSTEM=1 -s DISABLE_EXCEPTION_CATCHING=1
|
||||
#ALL_C_OPTS += -s USE_SDL=0 -s USE_SDL_IMAGE=0 -s USE_SDL_TTF=0
|
||||
|
||||
# Options for speed.
|
||||
ifeq ($(IE_COMPATIBLE), true)
|
||||
ALL_C_OPTS += -g
|
||||
else
|
||||
ALL_C_OPTS += -O3
|
||||
endif
|
||||
ALL_C_OPTS += -s NO_FILESYSTEM=1 -s ELIMINATE_DUPLICATE_FUNCTIONS=1
|
||||
ALL_C_OPTS += -s EXPORTED_RUNTIME_METHODS=[]
|
||||
ALL_C_OPTS += -s PRECISE_F32=1
|
||||
|
||||
# Option to get about a 10% speed increase at the cost of about 10% in size.
|
||||
# Use "make target DRACO_PERFORMANCE_TYPE=extra_speed"
|
||||
ifeq ($(DRACO_PERFORMANCE_TYPE), extra_speed)
|
||||
ALL_C_OPTS += --llvm-lto 1
|
||||
endif
|
||||
|
||||
# Options for debug
|
||||
#ALL_C_OPTS += -g -s DEMANGLE_SUPPORT=1
|
||||
|
||||
# If you use -s ALLOW_MEMORY_GROWTH=1 it may turn off some optimizations which
|
||||
# will hurt performance.
|
||||
ALL_C_OPTS += -s ALLOW_MEMORY_GROWTH=1
|
||||
#ALL_C_OPTS += -s TOTAL_MEMORY=67108864
|
||||
|
||||
# Allow legacy vm support for IE11
|
||||
ifeq ($(IE_COMPATIBLE), true)
|
||||
ALL_C_OPTS += -s LEGACY_VM_SUPPORT=1
|
||||
endif
|
||||
|
||||
# Export the main module as "DracoDecoderModule".
|
||||
ALL_C_OPTS += -s MODULARIZE=1 -s EXPORT_NAME="'DracoDecoderModule'"
|
||||
|
||||
# Do not create a .mem file.
|
||||
ALL_C_OPTS += --memory-init-file 0
|
||||
|
||||
# Options to separate asm.js and mem file.
|
||||
#ALL_C_OPTS += --separate-asm --memory-init-file 1
|
||||
|
||||
# Options to output WebAssembly code.
|
||||
# Use "make target DRACO_BUILD_TYPE=wasm"
|
||||
ifeq ($(DRACO_BUILD_TYPE), wasm)
|
||||
ALL_C_OPTS += -s WASM=1
|
||||
endif
|
||||
|
||||
CFLAGS := $(ALL_C_OPTS)
|
||||
CXXFLAGS := $(ALL_C_OPTS)
|
||||
CFLAGS += -Wno-sign-compare -fno-omit-frame-pointer
|
||||
CXXFLAGS += -Wno-sign-compare -fno-omit-frame-pointer
|
||||
|
||||
ALL_CXXFLAGS := -MMD -MP $(DEFINES) $(INCLUDES) $(CXXFLAGS)
|
||||
|
||||
DATA_BUFFER_A := libdata_buffer.a
|
||||
DATA_BUFFER_OBJS := core/data_buffer.o
|
||||
|
||||
QUANTIZATION_UTILS_A := libquantization_utils.a
|
||||
QUANTIZATION_UTILS_OBJS := core/quantization_utils.o
|
||||
CYCLE_TIMER_A := libcycle_timer.a
|
||||
CYCLE_TIMER_OBJS := core/cycle_timer.o
|
||||
|
||||
ENCODER_BUFFER_A := libencoder_buffer.a
|
||||
ENCODER_BUFFER_OBJS := core/encoder_buffer.o
|
||||
|
||||
DECODER_BUFFER_A := libdecoder_buffer.a
|
||||
DECODER_BUFFER_OBJS := core/decoder_buffer.o
|
||||
|
||||
RANS_BIT_DECODER_A := librans_bit_decoder.a
|
||||
RANS_BIT_DECODER_OBJS := core/divide.o core/bit_coders/rans_bit_decoder.o
|
||||
|
||||
RANS_BIT_ENCODER_A := librans_bit_encoder.a
|
||||
RANS_BIT_ENCODER_OBJS := core/divide.o core/bit_coders/rans_bit_encoder.o
|
||||
|
||||
ADAPTIVE_RANS_BIT_DECODER_A := libadaptive_rans_bit_decoder.a
|
||||
ADAPTIVE_RANS_BIT_DECODER_OBJS := core/bit_coders/adaptive_rans_bit_decoder.o
|
||||
|
||||
ADAPTIVE_RANS_BIT_ENCODER_A := libadaptive_rans_bit_encoder.a
|
||||
ADAPTIVE_RANS_BIT_ENCODER_OBJS := core/bit_coders/adaptive_rans_bit_encoder.o
|
||||
|
||||
CORNER_TABLE_A := libcorner_table.a
|
||||
CORNER_TABLE_OBJS := mesh/corner_table.o
|
||||
|
||||
SHANNON_ENTROPY_A := libshannon_entropy.a
|
||||
SHANNON_ENTROPY_OBJS := core/shannon_entropy.o
|
||||
|
||||
SYMBOL_CODING_A := libsymbol_coding.a
|
||||
SYMBOL_CODING_OBJS := \
|
||||
core/symbol_decoding.o core/symbol_encoding.o core/symbol_coding_utils.o
|
||||
|
||||
DIRECT_BIT_DECODER_A := libdirect_bit_decoder.a
|
||||
DIRECT_BIT_DECODER_OBJS := core/bit_coders/direct_bit_decoder.o
|
||||
|
||||
DIRECT_BIT_ENCODER_A := libdirect_bit_encoder.a
|
||||
DIRECT_BIT_ENCODER_OBJS := core/bit_coders/direct_bit_encoder.o
|
||||
|
||||
DRACO_TYPES_A := libdraco_types.a
|
||||
DRACO_TYPES_OBJS := core/draco_types.o
|
||||
|
||||
METADATA_A := metadata/libmetadata.a
|
||||
METADATA_OBJS := metadata/metadata.o
|
||||
GEOMETRY_METADATA_A := metadata/libgeometry_metadata.a
|
||||
GEOMETRY_METADATA_OBJS := metadata/geometry_metadata.o
|
||||
METADATA_ENCODER_A := metadata/libmetadata_encoder.a
|
||||
METADATA_ENCODER_OBJS := metadata/metadata_encoder.o
|
||||
METADATA_DECODER_A := metadata/libmetadata_decoder.a
|
||||
METADATA_DECODER_OBJS := metadata/metadata_decoder.o
|
||||
|
||||
GEOMETRY_ATTRIBUTE_A := geometry_attribute.a
|
||||
GEOMETRY_ATTRIBUTE_OBJS := attributes/geometry_attribute.o
|
||||
POINT_ATTRIBUTE_A := point_attribute.a
|
||||
POINT_ATTRIBUTE_OBJS := attributes/point_attribute.o
|
||||
ATTRIBUTE_OCTAHEDRON_TRANSFORM_A := attribute_octahedron_transform.a
|
||||
ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS := attributes/attribute_octahedron_transform.o
|
||||
ATTRIBUTE_QUANTIZATION_TRANSFORM_A := attribute_quantization_transform.a
|
||||
ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS := attributes/attribute_quantization_transform.o
|
||||
ATTRIBUTE_TRANSFORM_A := attribute_transform.a
|
||||
ATTRIBUTE_TRANSFORM_OBJS := attributes/attribute_transform.o
|
||||
POINT_CLOUD_A := point_cloud.a
|
||||
POINT_CLOUD_OBJS := point_cloud/point_cloud.o
|
||||
MESH_A := libmesh.a
|
||||
MESH_OBJS := mesh/mesh.o
|
||||
MESH_STRIPIFIER_A := libmesh_stripifier.a
|
||||
MESH_STRIPIFIER_OBJS := mesh/mesh_stripifier.o
|
||||
OPTIONS_A := options.a
|
||||
OPTIONS_OBJS := core/options.o
|
||||
POINT_CLOUD_ENCODER_BASE_A := point_cloud_encoder_base.a
|
||||
POINT_CLOUD_ENCODER_BASE_OBJS := compression/attributes/attributes_encoder.o
|
||||
POINT_CLOUD_ENCODER_BASE_OBJS += compression/point_cloud/point_cloud_encoder.o
|
||||
POINT_CLOUD_DECODER_BASE_A := point_cloud_decoder_base.a
|
||||
POINT_CLOUD_DECODER_BASE_OBJS := compression/attributes/attributes_decoder.o
|
||||
POINT_CLOUD_DECODER_BASE_OBJS += compression/point_cloud/point_cloud_decoder.o
|
||||
|
||||
MESH_ENCODER_BASE_A := mesh_encoder_base.a
|
||||
MESH_ENCODER_BASE_OBJS := compression/mesh/mesh_encoder.o
|
||||
MESH_DECODER_BASE_A := mesh_decoder_base.a
|
||||
MESH_DECODER_BASE_OBJS := compression/mesh/mesh_decoder.o
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_A := sequential_attribute_encoder.a
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_attribute_encoder.o
|
||||
SEQUENTIAL_ATTRIBUTE_DECODER_A := sequential_attribute_decoder.a
|
||||
SEQUENTIAL_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_attribute_decoder.o
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_A := \
|
||||
sequential_integer_attribute_encoder.a
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_integer_attribute_encoder.o
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_A := \
|
||||
sequential_integer_attribute_decoder.a
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_integer_attribute_decoder.o
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_A := \
|
||||
sequential_quantization_attribute_encoder.a
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_quantization_attribute_encoder.o
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_A := \
|
||||
sequential_quantization_attribute_decoder.a
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_quantization_attribute_decoder.o
|
||||
KD_TREE_ATTRIBUTES_ENCODER_A := kd_tree_attributes_encoder.a
|
||||
KD_TREE_ATTRIBUTES_ENCODER_OBJS := \
|
||||
compression/attributes/kd_tree_attributes_encoder.o
|
||||
KD_TREE_ATTRIBUTES_DECODER_A := kd_tree_attributes_decoder.a
|
||||
KD_TREE_ATTRIBUTES_DECODER_OBJS := \
|
||||
compression/attributes/kd_tree_attributes_decoder.o
|
||||
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_A := \
|
||||
sequential_normal_attribute_encoder.a
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_normal_attribute_encoder.o
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_A := \
|
||||
sequential_normal_attribute_decoder.a
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_normal_attribute_decoder.o
|
||||
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_A := \
|
||||
sequential_attribute_encoders_controller.a
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJS := \
|
||||
compression/attributes/sequential_attribute_encoders_controller.o
|
||||
SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_A := \
|
||||
sequential_attribute_decoders_controller.a
|
||||
SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJS := \
|
||||
compression/attributes/sequential_attribute_decoders_controller.o
|
||||
POINT_CLOUD_SEQUENTIAL_ENCODER_A := point_cloud_sequential_encoder.a
|
||||
POINT_CLOUD_SEQUENTIAL_ENCODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_sequential_encoder.o
|
||||
POINT_CLOUD_SEQUENTIAL_DECODER_A := point_cloud_sequential_decoder.a
|
||||
POINT_CLOUD_SEQUENTIAL_DECODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_sequential_decoder.o
|
||||
POINT_CLOUD_KD_TREE_ENCODER_A := point_cloud_kd_tree_encoder.a
|
||||
POINT_CLOUD_KD_TREE_ENCODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_kd_tree_encoder.o
|
||||
POINT_CLOUD_KD_TREE_DECODER_A := point_cloud_kd_tree_decoder.a
|
||||
POINT_CLOUD_KD_TREE_DECODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_kd_tree_decoder.o
|
||||
MESH_SEQUENTIAL_ENCODER_A := mesh_sequential_encoder.a
|
||||
MESH_SEQUENTIAL_ENCODER_OBJS := compression/mesh/mesh_sequential_encoder.o
|
||||
MESH_SEQUENTIAL_DECODER_A := mesh_sequential_decoder.a
|
||||
MESH_SEQUENTIAL_DECODER_OBJS := compression/mesh/mesh_sequential_decoder.o
|
||||
|
||||
MESH_EDGEBREAKER_ENCODER_A := mesh_edgebreaker_encoder.a
|
||||
MESH_EDGEBREAKER_ENCODER_OBJS := compression/mesh/mesh_edgebreaker_encoder.o
|
||||
MESH_EDGEBREAKER_ENCODER_OBJS += \
|
||||
compression/mesh/mesh_edgebreaker_encoder_impl.o
|
||||
MESH_EDGEBREAKER_DECODER_A := mesh_edgebreaker_encoder.a
|
||||
MESH_EDGEBREAKER_DECODER_OBJS := compression/mesh/mesh_edgebreaker_decoder.o
|
||||
MESH_EDGEBREAKER_DECODER_OBJS += \
|
||||
compression/mesh/mesh_edgebreaker_decoder_impl.o
|
||||
ENCODE_A := encode.a
|
||||
ENCODE_OBJS := compression/encode.o
|
||||
DECODE_A := decode.a
|
||||
DECODE_OBJS := compression/decode.o
|
||||
|
||||
OBJ_DECODER_A := libobj_decoder.a
|
||||
OBJ_DECODER_OBJS := io/obj_decoder.o
|
||||
|
||||
PLY_DECODER_A := libply_decoder.a
|
||||
PLY_DECODER_OBJS := core/hash_utils.o io/ply_decoder.o
|
||||
|
||||
PLY_ENCODER_A := libply_encoder.a
|
||||
PLY_ENCODER_OBJS := io/ply_encoder.o
|
||||
|
||||
MESH_IO_A := libmesh_io.a
|
||||
MESH_IO_OBJS := io/mesh_io.o
|
||||
|
||||
MESH_ATTRIBUTE_CORNER_TABLE_A := libmesh_attribute_corner_table.a
|
||||
MESH_ATTRIBUTE_CORNER_TABLE_OBJS := mesh/mesh_attribute_corner_table.o
|
||||
|
||||
MESH_MISC_A := libmesh_misc.a
|
||||
MESH_MISC_OBJS := mesh/mesh_misc_functions.o
|
||||
|
||||
FLOAT_POINTS_TREE_DECODER_A := \
|
||||
libfloat_points_tree_decoder.a
|
||||
FLOAT_POINTS_TREE_DECODER_OBJS := \
|
||||
compression/point_cloud/algorithms/float_points_tree_decoder.o
|
||||
|
||||
FLOAT_POINTS_TREE_ENCODER_A := \
|
||||
libfloat_points_tree_encoder.a
|
||||
FLOAT_POINTS_TREE_ENCODER_OBJS := \
|
||||
compression/point_cloud/algorithms/float_points_tree_encoder.o
|
||||
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_A := \
|
||||
libdynamic_integer_points_kd_tree_decoder.a
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS := \
|
||||
compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.o
|
||||
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_A := \
|
||||
libdynamic_integer_points_kd_tree_encoder.a
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS := \
|
||||
compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.o
|
||||
|
||||
CORNER_TABLE_OBJSA := $(addprefix $(OBJDIR)/,$(CORNER_TABLE_OBJS:.o=_a.o))
|
||||
SHANNON_ENTROPY_OBJSA := $(addprefix $(OBJDIR)/,$(SHANNON_ENTROPY_OBJS:.o=_a.o))
|
||||
SYMBOL_CODING_OBJSA := $(addprefix $(OBJDIR)/,$(SYMBOL_CODING_OBJS:.o=_a.o))
|
||||
DIRECT_BIT_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DIRECT_BIT_DECODER_OBJS:.o=_a.o))
|
||||
DIRECT_BIT_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DIRECT_BIT_ENCODER_OBJS:.o=_a.o))
|
||||
DECODER_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DECODER_BUFFER_OBJS:.o=_a.o))
|
||||
DATA_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DATA_BUFFER_OBJS:.o=_a.o))
|
||||
DRACO_TYPES_OBJSA := $(addprefix $(OBJDIR)/,$(DRACO_TYPES_OBJS:.o=_a.o))
|
||||
|
||||
METADATA_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(METADATA_OBJS:.o=_a.o))
|
||||
GEOMETRY_METADATA_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(GEOMETRY_METADATA_OBJS:.o=_a.o))
|
||||
METADATA_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(METADATA_ENCODER_OBJS:.o=_a.o))
|
||||
METADATA_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(METADATA_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
GEOMETRY_ATTRIBUTE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(GEOMETRY_ATTRIBUTE_OBJS:.o=_a.o))
|
||||
POINT_ATTRIBUTE_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_ATTRIBUTE_OBJS:.o=_a.o))
|
||||
ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS:.o=_a.o))
|
||||
ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS:.o=_a.o))
|
||||
ATTRIBUTE_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_TRANSFORM_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_CLOUD_OBJS:.o=_a.o))
|
||||
MESH_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_OBJS:.o=_a.o))
|
||||
MESH_STRIPIFIER_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_STRIPIFIER_OBJS:.o=_a.o))
|
||||
OPTIONS_OBJSA := $(addprefix $(OBJDIR)/,$(OPTIONS_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_ENCODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_ENCODER_BASE_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_DECODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_DECODER_BASE_OBJS:.o=_a.o))
|
||||
|
||||
MESH_ENCODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_ENCODER_BASE_OBJS:.o=_a.o))
|
||||
MESH_DECODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_DECODER_BASE_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
KD_TREE_ATTRIBUTES_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, $(KD_TREE_ATTRIBUTES_ENCODER_OBJS:.o=_a.o))
|
||||
KD_TREE_ATTRIBUTES_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, $(KD_TREE_ATTRIBUTES_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_SEQUENTIAL_DECODER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_KD_TREE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_KD_TREE_ENCODER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_KD_TREE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_KD_TREE_DECODER_OBJS:.o=_a.o))
|
||||
MESH_SEQUENTIAL_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_SEQUENTIAL_ENCODER_OBJS:.o=_a.o))
|
||||
MESH_SEQUENTIAL_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_SEQUENTIAL_DECODER_OBJS:.o=_a.o))
|
||||
MESH_EDGEBREAKER_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_EDGEBREAKER_ENCODER_OBJS:.o=_a.o))
|
||||
MESH_EDGEBREAKER_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_EDGEBREAKER_DECODER_OBJS:.o=_a.o))
|
||||
ENCODE_OBJSA := $(addprefix $(OBJDIR)/,$(ENCODE_OBJS:.o=_a.o))
|
||||
DECODE_OBJSA := $(addprefix $(OBJDIR)/,$(DECODE_OBJS:.o=_a.o))
|
||||
|
||||
MESH_MISC_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_MISC_OBJS:.o=_a.o))
|
||||
MESH_ATTRIBUTE_CORNER_TABLE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_ATTRIBUTE_CORNER_TABLE_OBJS:.o=_a.o))
|
||||
|
||||
QUANTIZATION_UTILS_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(QUANTIZATION_UTILS_OBJS:.o=_a.o))
|
||||
CYCLE_TIMER_OBJSA := $(addprefix $(OBJDIR)/,$(CYCLE_TIMER_OBJS:.o=_a.o))
|
||||
|
||||
ENCODER_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(ENCODER_BUFFER_OBJS:.o=_a.o))
|
||||
RANS_BIT_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(RANS_BIT_DECODER_OBJS:.o=_a.o))
|
||||
RANS_BIT_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(RANS_BIT_ENCODER_OBJS:.o=_a.o))
|
||||
ADAPTIVE_RANS_BIT_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(ADAPTIVE_RANS_BIT_DECODER_OBJS:.o=_a.o))
|
||||
ADAPTIVE_RANS_BIT_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(ADAPTIVE_RANS_BIT_ENCODER_OBJS:.o=_a.o))
|
||||
OBJ_DECODER_OBJSA := $(addprefix $(OBJDIR)/,$(OBJ_DECODER_OBJS:.o=_a.o))
|
||||
MESH_IO_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_IO_OBJS:.o=_a.o))
|
||||
PLY_ENCODER_OBJSA := $(addprefix $(OBJDIR)/,$(PLY_ENCODER_OBJS:.o=_a.o))
|
||||
PLY_DECODER_OBJSA := $(addprefix $(OBJDIR)/,$(PLY_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
FLOAT_POINTS_TREE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_DECODER_OBJS:.o=_a.o))
|
||||
FLOAT_POINTS_TREE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_ENCODER_OBJS:.o=_a.o))
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS:.o=_a.o))
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS:.o=_a.o))
|
||||
|
||||
# Core objs
|
||||
DRACO_CORE_OBJSA := $(DRACO_TYPES_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(DIRECT_BIT_DECODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(DIRECT_BIT_ENCODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(RANS_BIT_DECODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(RANS_BIT_ENCODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(ADAPTIVE_RANS_BIT_DECODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(ADAPTIVE_RANS_BIT_ENCODER_OBJSA)
|
||||
|
||||
# Shared objs needed for both encoder and decoder
|
||||
DRACO_SHARED_OBJSA := $(CORNER_TABLE_OBJSA) $(SYMBOL_CODING_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(SHANNON_ENTROPY_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(DATA_BUFFER_OBJSA) $(DRACO_CORE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(GEOMETRY_ATTRIBUTE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(POINT_ATTRIBUTE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(ATTRIBUTE_TRANSFORM_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(POINT_CLOUD_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(MESH_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(MESH_MISC_OBJSA) $(MESH_ATTRIBUTE_CORNER_TABLE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(METADATA_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(GEOMETRY_METADATA_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(CYCLE_TIMER_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(RANS_BIT_DECODER_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(RANS_BIT_ENCODER_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(QUANTIZATION_UTILS_OBJSA)
|
||||
|
||||
# Encoder specific objs
|
||||
DRACO_ENCODER_OBJSA := $(OPTIONS_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(POINT_CLOUD_ENCODER_BASE_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(MESH_ENCODER_BASE_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(METADATA_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(POINT_CLOUD_KD_TREE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(KD_TREE_ATTRIBUTES_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(FLOAT_POINTS_TREE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(MESH_SEQUENTIAL_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(MESH_EDGEBREAKER_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(ENCODE_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(ENCODER_BUFFER_OBJSA)
|
||||
|
||||
# Decoder specific objs
|
||||
DRACO_DECODER_OBJSA := $(DECODER_BUFFER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(OPTIONS_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(POINT_CLOUD_DECODER_BASE_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(MESH_DECODER_BASE_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(METADATA_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(POINT_CLOUD_KD_TREE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(KD_TREE_ATTRIBUTES_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(FLOAT_POINTS_TREE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(MESH_STRIPIFIER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(MESH_SEQUENTIAL_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(MESH_EDGEBREAKER_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(DECODE_OBJSA)
|
||||
|
||||
# I/O objs
|
||||
DRACO_IO_OBJSA := $(OBJ_DECODER_OBJSA) $(MESH_IO_OBJSA)
|
||||
DRACO_IO_OBJSA += $(PLY_ENCODER_OBJSA) $(PLY_DECODER_OBJSA)
|
||||
|
||||
# All objs
|
||||
DRACO_OBJSA := $(DRACO_SHARED_OBJSA)
|
||||
DRACO_OBJSA += $(DRACO_ENCODER_OBJSA)
|
||||
DRACO_OBJSA += $(DRACO_DECODER_OBJSA)
|
||||
DRACO_OBJSA += $(DRACO_IO_OBJSA)
|
||||
|
||||
OBJSA := $(DRACO_OBJSA)
|
||||
|
||||
LIBS := $(LIBDIR)/libmesh_io.a
|
||||
LIBS += $(LIBDIR)/libply_decoder.a
|
||||
LIBS += $(LIBDIR)/libply_encoder.a
|
||||
LIBS += $(LIBDIR)/libobj_decoder.a
|
||||
LIBS += $(LIBDIR)/libgeometry_attribute.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud.a
|
||||
LIBS += $(LIBDIR)/libpoint_attribute.a
|
||||
LIBS += $(LIBDIR)/libattribute_octahedron_transform.a
|
||||
LIBS += $(LIBDIR)/libattribute_quantization_transform.a
|
||||
LIBS += $(LIBDIR)/libattribute_transform.a
|
||||
LIBS += $(LIBDIR)/liboptions.a
|
||||
LIBS += $(LIBDIR)/libencode.a
|
||||
LIBS += $(LIBDIR)/libdecode.a
|
||||
LIBS += $(LIBDIR)/libmesh.a
|
||||
LIBS += $(LIBDIR)/libmesh_decoder_base.a
|
||||
LIBS += $(LIBDIR)/libmesh_stripifier.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_sequential_decoder.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_kd_tree_decoder.a
|
||||
LIBS += $(LIBDIR)/libkd_tree_attributes_decoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_sequential_decoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_edgebreaker_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_decoders_controller.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_decoder_base.a
|
||||
LIBS += $(LIBDIR)/libsequential_integer_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_quantization_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_normal_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libquantization_utils.a
|
||||
LIBS += $(LIBDIR)/libmesh_encoder_base.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_sequential_encoder.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_kd_tree_encoder.a
|
||||
LIBS += $(LIBDIR)/libkd_tree_attributes_encoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_sequential_encoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_edgebreaker_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_encoders_controller.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_encoder_base.a
|
||||
LIBS += $(LIBDIR)/libsequential_integer_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_quantization_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_normal_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libcorner_table.a
|
||||
LIBS += $(LIBDIR)/libmesh_attribute_corner_table.a
|
||||
LIBS += $(LIBDIR)/libmesh_misc.a
|
||||
LIBS += $(LIBDIR)/libshannon_entropy.a
|
||||
LIBS += $(LIBDIR)/libsymbol_coding.a
|
||||
LIBS += $(LIBDIR)/librans_bit_decoder.a
|
||||
LIBS += $(LIBDIR)/librans_bit_encoder.a
|
||||
LIBS += $(LIBDIR)/libdata_buffer.a
|
||||
LIBS += $(LIBDIR)/libdraco_types.a
|
||||
LIBS += $(LIBDIR)/libmetadata.a
|
||||
LIBS += $(LIBDIR)/libgeometry_metadata.a
|
||||
LIBS += $(LIBDIR)/libmetadata_encoder.a
|
||||
LIBS += $(LIBDIR)/libmetadata_decoder.a
|
||||
LIBS += $(LIBDIR)/libdecoder_buffer.a
|
||||
LIBS += $(LIBDIR)/libencoder_buffer.a
|
||||
LIBS += $(LIBDIR)/libcycle_timer.a
|
||||
|
||||
POINTS_LIBS := $(LIBDIR)/libfloat_points_tree_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libfloat_points_tree_encoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdirect_bit_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdirect_bit_encoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_encoder.a
|
||||
|
||||
DEPS := $(DRACO_OBJSA:_a.o=.d)
|
||||
CLEAN := $(DEPS) $(OBJSA) $(LIBS) $(POINTS_LIBS)
|
||||
CLEAN += glue_decoder.cpp glue_decoder.js draco_decoder.js WebIDLGrammar.pkl parser.out
|
||||
CLEAN += $(OBJDIR)/javascript/emscripten/draco_decoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/draco_decoder_glue_wrapper.d
|
||||
CLEAN += $(OBJDIR)/javascript/emscripten/decoder_webidl_wrapper.o $(OBJDIR)/javascript/emscripten/decoder_webidl_wrapper.d
|
||||
|
||||
all: jslib
|
||||
|
||||
jslib: build_glue draco_decoder
|
||||
|
||||
build_glue:
|
||||
python $(BINDER) $(IDL) glue_decoder
|
||||
|
||||
draco_decoder: $(OBJDIR)/javascript/emscripten/draco_decoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/decoder_webidl_wrapper.o $(DRACO_CORE_OBJSA) $(DRACO_SHARED_OBJSA) $(DRACO_DECODER_OBJSA)
|
||||
$(CXX) $(ALL_C_OPTS) $^ --pre-js $(SRCDIR)/javascript/emscripten/prepareCallbacks.js --pre-js $(SRCDIR)/javascript/emscripten/version.js --post-js glue_decoder.js --post-js $(SRCDIR)/javascript/emscripten/finalize.js -o $@.js
|
||||
|
||||
$(LIBDIR)/libcorner_table.a: $(CORNER_TABLE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libshannon_entropy.a: $(SHANNON_ENTROPY_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libsymbol_coding.a: $(SYMBOL_CODING_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdirect_bit_decoder.a: $(DIRECT_BIT_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdirect_bit_encoder.a: $(DIRECT_BIT_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdecoder_buffer.a: $(DECODER_BUFFER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdata_buffer.a: $(DATA_BUFFER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdraco_types.a: $(DRACO_TYPES_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmetadata.a: $(MEATDATA_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libgeometry_metadata.a: $(GEOMETRY_MEATDATA_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmetadata_encoder.a: $(MEATDATA_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmetadata_decoder.a: $(MEATDATA_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libgeometry_attribute.a: $(GEOMETRY_ATTRIBUTE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_attribute.a: $(POINT_ATTRIBUTE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libattribute_octahedron_transform.a: $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libattribute_quantization_transform.a: $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libattribute_transform.a: $(ATTRIBUTE_TRANSFORM_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud.a: $(POINT_CLOUD_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh.a: $(MESH_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_stripifier.a: $(MESH_STRIPIFIER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/liboptions.a: $(OPTIONS_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_encoder_base.a: $(POINT_CLOUD_ENCODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_decoder_base.a: $(POINT_CLOUD_DECODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_encoder_base.a: $(MESH_ENCODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_decoder_base.a: $(MESH_DECODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_integer_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_integer_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_quantization_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_quantization_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libkd_tree_attributes_encoder.a: $(KD_TREE_ATTRIBUTES_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libkd_tree_attributes_decoder.a: $(KD_TREE_ATTRIBUTES_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_normal_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_normal_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_encoders_controller.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_decoders_controller.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_sequential_encoder.a: \
|
||||
$(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_sequential_decoder.a: \
|
||||
$(POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_kd_tree_encoder.a: \
|
||||
$(POINT_CLOUD_KD_TREE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_kd_tree_decoder.a: \
|
||||
$(POINT_CLOUD_KD_TREE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_sequential_encoder.a: $(MESH_SEQUENTIAL_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_sequential_decoder.a: $(MESH_SEQUENTIAL_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_edgebreaker_encoder.a: $(MESH_EDGEBREAKER_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_edgebreaker_decoder.a: $(MESH_EDGEBREAKER_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libencode.a: $(ENCODE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libdecode.a: $(DECODE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_misc.a: $(MESH_MISC_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_attribute_corner_table.a: $(MESH_ATTRIBUTE_CORNER_TABLE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libencoder_buffer.a: $(ENCODER_BUFFER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libquantization_utils.a: $(QUANTIZATION_UTILS_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libcycle_timer.a: $(CYCLE_TIMER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/librans_bit_decoder.a: $(RANS_BIT_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/librans_bit_encoder.a: $(RANS_BIT_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libadaptive_rans_bit_decoder.a: $(ADAPTIVE_RANS_BIT_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libadaptive_rans_bit_encoder.a: $(ADAPTIVE_RANS_BIT_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libobj_decoder.a: $(OBJ_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_io.a: $(MESH_IO_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libply_encoder.a: $(PLY_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libply_decoder.a: $(PLY_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libfloat_points_tree_decoder.a: $(FLOAT_POINTS_TREE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libfloat_points_tree_encoder.a: $(FLOAT_POINTS_TREE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a: \
|
||||
$(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a: \
|
||||
$(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(OBJDIR)/%.o: $(SRCDIR)/%.cc
|
||||
@mkdir -p $(@D)
|
||||
$(CXX) $(ALL_CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/%_a.o: $(SRCDIR)/%.cc
|
||||
@mkdir -p $(@D)
|
||||
$(CXX) $(ALL_CXXFLAGS) $< -o $@
|
||||
|
||||
clean:
|
||||
$(RM) $(CLEAN)
|
@ -1,777 +0,0 @@
|
||||
#########
|
||||
# Makefile for emscripten
|
||||
CC=emcc
|
||||
CXX=em++
|
||||
AR=emar
|
||||
LD=emcc
|
||||
|
||||
######### Configurations defining feature set #########
|
||||
# Use "make target DRACO_CONFIG=full|limited" to set the desired configuration
|
||||
|
||||
# Select the correct version based on the input flags.
|
||||
DRACO_CONFIG ?= full
|
||||
|
||||
# Full config - all features included.
|
||||
DRACO_FULL_MESH_CONFIG_DEFINES := -DDRACO_MESH_COMPRESSION_SUPPORTED
|
||||
DRACO_FULL_MESH_CONFIG_DEFINES += -DDRACO_STANDARD_EDGEBREAKER_SUPPORTED
|
||||
DRACO_FULL_MESH_CONFIG_DEFINES += -DDRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED
|
||||
|
||||
DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES := -DDRACO_POINT_CLOUD_COMPRESSION_SUPPORTED
|
||||
|
||||
DRACO_FULL_CONFIG_DEFINES := $(DRACO_FULL_MESH_CONFIG_DEFINES)
|
||||
DRACO_FULL_CONFIG_DEFINES += $(DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES)
|
||||
|
||||
# Default limited config with only some core features enabled.
|
||||
DRACO_LIMITED_CONFIG_DEFINES := -DDRACO_STANDARD_EDGEBREAKER_SUPPORTED
|
||||
DRACO_LIMITED_CONFIG_DEFINES += -DDRACO_POINT_CLOUD_COMPRESSION_SUPPORTED
|
||||
DRACO_LIMITED_CONFIG_DEFINES += -DDRACO_MESH_COMPRESSION_SUPPORTED
|
||||
|
||||
ifeq ($(DRACO_CONFIG), limited)
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_LIMITED_CONFIG_DEFINES)
|
||||
else ifeq ($(DRACO_CONFIG), full_mesh)
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_FULL_MESH_CONFIG_DEFINES)
|
||||
else ifeq ($(DRACO_CONFIG), full_point_cloud)
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES)
|
||||
else
|
||||
DRACO_CONFIG_DEFINES := $(DRACO_FULL_CONFIG_DEFINES)
|
||||
endif
|
||||
|
||||
DRACO_CONFIG_DEFINES += -DDRACO_ATTRIBUTE_DEDUPLICATION_SUPPORTED
|
||||
#########
|
||||
|
||||
DEFINES := $(DRACO_CONFIG_DEFINES)
|
||||
INCLUDES := -I../../ -I./ -I./src/
|
||||
SRCDIR := src/draco
|
||||
OBJDIR := obj
|
||||
LIBDIR := libs
|
||||
IDL := $(SRCDIR)/javascript/emscripten/draco_web_encoder.idl
|
||||
BINDER := $(EMSCRIPTEN)/tools/webidl_binder.py
|
||||
|
||||
# In order to open an input mesh file with test_mesh_encoder, you need to add
|
||||
# the mesh here. Then you need to add the test_mesh_encoder command line
|
||||
# arguments to the generated html file. E.g.
|
||||
# arguments: ["-m","1","-q","9", "-noerror","-no3rdparty","-f","cube.obj"],
|
||||
#MESH_FILE := --preload-file cube.obj
|
||||
MESH_FILE :=
|
||||
|
||||
ALL_C_OPTS := -std=c++11
|
||||
|
||||
# Options to reduce JavaScript size.
|
||||
#ALL_C_OPTS += -Oz -s NO_FILESYSTEM=1 -s DISABLE_EXCEPTION_CATCHING=1
|
||||
#ALL_C_OPTS += -s USE_SDL=0 -s USE_SDL_IMAGE=0 -s USE_SDL_TTF=0
|
||||
|
||||
# Options for speed.
|
||||
ALL_C_OPTS += -O3
|
||||
ALL_C_OPTS += -s NO_FILESYSTEM=1 -s ELIMINATE_DUPLICATE_FUNCTIONS=1
|
||||
ALL_C_OPTS += -s EXPORTED_RUNTIME_METHODS=[]
|
||||
ALL_C_OPTS += -s PRECISE_F32=1
|
||||
|
||||
# Option to get about a 10% speed increase at the cost of about 10% in size.
|
||||
# Use "make target DRACO_PERFORMANCE_TYPE=extra_speed"
|
||||
ifeq ($(DRACO_PERFORMANCE_TYPE), extra_speed)
|
||||
ALL_C_OPTS += --llvm-lto 1
|
||||
endif
|
||||
|
||||
# Options for debug
|
||||
#ALL_C_OPTS += -g -s DEMANGLE_SUPPORT=1
|
||||
|
||||
# If you use -s ALLOW_MEMORY_GROWTH=1 it may turn off some optimizations which
|
||||
# will hurt performance.
|
||||
ALL_C_OPTS += -s ALLOW_MEMORY_GROWTH=1
|
||||
#ALL_C_OPTS += -s TOTAL_MEMORY=67108864
|
||||
|
||||
# Export the main module as "DracoEncoderModule".
|
||||
ALL_C_OPTS += -s MODULARIZE=1 -s EXPORT_NAME="'DracoEncoderModule'"
|
||||
|
||||
# Do not create a .mem file.
|
||||
ALL_C_OPTS += --memory-init-file 0
|
||||
|
||||
# Options to separate asm.js and mem file.
|
||||
#ALL_C_OPTS += --separate-asm --memory-init-file 1
|
||||
|
||||
# Options to output WebAssembly code.
|
||||
# Use "make target DRACO_BUILD_TYPE=wasm"
|
||||
ifeq ($(DRACO_BUILD_TYPE), wasm)
|
||||
ALL_C_OPTS += -s WASM=1 -s BINARYEN_IMPRECISE=1
|
||||
endif
|
||||
|
||||
CFLAGS := $(ALL_C_OPTS)
|
||||
CXXFLAGS := $(ALL_C_OPTS)
|
||||
CFLAGS += -Wno-sign-compare -fno-omit-frame-pointer
|
||||
CXXFLAGS += -Wno-sign-compare -fno-omit-frame-pointer
|
||||
|
||||
ALL_CXXFLAGS := -MMD -MP $(DEFINES) $(INCLUDES) $(CXXFLAGS)
|
||||
|
||||
DATA_BUFFER_A := libdata_buffer.a
|
||||
DATA_BUFFER_OBJS := core/data_buffer.o
|
||||
|
||||
QUANTIZATION_UTILS_A := libquantization_utils.a
|
||||
QUANTIZATION_UTILS_OBJS := core/quantization_utils.o
|
||||
CYCLE_TIMER_A := libcycle_timer.a
|
||||
CYCLE_TIMER_OBJS := core/cycle_timer.o
|
||||
|
||||
ENCODER_BUFFER_A := libencoder_buffer.a
|
||||
ENCODER_BUFFER_OBJS := core/encoder_buffer.o
|
||||
|
||||
DECODER_BUFFER_A := libdecoder_buffer.a
|
||||
DECODER_BUFFER_OBJS := core/decoder_buffer.o
|
||||
|
||||
RANS_BIT_DECODER_A := librans_bit_decoder.a
|
||||
RANS_BIT_DECODER_OBJS := core/divide.o core/bit_coders/rans_bit_decoder.o
|
||||
|
||||
RANS_BIT_ENCODER_A := librans_bit_encoder.a
|
||||
RANS_BIT_ENCODER_OBJS := core/divide.o core/bit_coders/rans_bit_encoder.o
|
||||
|
||||
ADAPTIVE_RANS_BIT_DECODER_A := libadaptive_rans_bit_decoder.a
|
||||
ADAPTIVE_RANS_BIT_DECODER_OBJS := core/bit_coders/adaptive_rans_bit_decoder.o
|
||||
|
||||
ADAPTIVE_RANS_BIT_ENCODER_A := libadaptive_rans_bit_encoder.a
|
||||
ADAPTIVE_RANS_BIT_ENCODER_OBJS := core/bit_coders/adaptive_rans_bit_encoder.o
|
||||
|
||||
CORNER_TABLE_A := libcorner_table.a
|
||||
CORNER_TABLE_OBJS := mesh/corner_table.o
|
||||
|
||||
SHANNON_ENTROPY_A := libshannon_entropy.a
|
||||
SHANNON_ENTROPY_OBJS := core/shannon_entropy.o
|
||||
|
||||
SYMBOL_CODING_A := libsymbol_coding.a
|
||||
SYMBOL_CODING_OBJS := \
|
||||
core/symbol_decoding.o core/symbol_encoding.o core/symbol_coding_utils.o
|
||||
|
||||
DIRECT_BIT_DECODER_A := libdirect_bit_decoder.a
|
||||
DIRECT_BIT_DECODER_OBJS := core/bit_coders/direct_bit_decoder.o
|
||||
|
||||
DIRECT_BIT_ENCODER_A := libdirect_bit_encoder.a
|
||||
DIRECT_BIT_ENCODER_OBJS := core/bit_coders/direct_bit_encoder.o
|
||||
|
||||
DRACO_TYPES_A := libdraco_types.a
|
||||
DRACO_TYPES_OBJS := core/draco_types.o
|
||||
|
||||
METADATA_A :=metadata/metadata.a
|
||||
METADATA_OBJS :=metadata/metadata.o
|
||||
GEOMETRY_METADATA_A :=metadata/geometry_metadata.a
|
||||
GEOMETRY_METADATA_OBJS :=metadata/geometry_metadata.o
|
||||
METADATA_ENCODER_A :=metadata/metadata_encoder.a
|
||||
METADATA_ENCODER_OBJS :=metadata/metadata_encoder.o
|
||||
METADATA_DECODER_A :=metadata/metadata_decoder.a
|
||||
METADATA_DECODER_OBJS :=metadata/metadata_decoder.o
|
||||
|
||||
GEOMETRY_ATTRIBUTE_A := geometry_attribute.a
|
||||
GEOMETRY_ATTRIBUTE_OBJS := attributes/geometry_attribute.o
|
||||
POINT_ATTRIBUTE_A := point_attribute.a
|
||||
POINT_ATTRIBUTE_OBJS := attributes/point_attribute.o
|
||||
ATTRIBUTE_OCTAHEDRON_TRANSFORM_A := attribute_octahedron_transform.a
|
||||
ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS := attributes/attribute_octahedron_transform.o
|
||||
ATTRIBUTE_QUANTIZATION_TRANSFORM_A := attribute_quantization_transform.a
|
||||
ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS := attributes/attribute_quantization_transform.o
|
||||
ATTRIBUTE_TRANSFORM_A := attribute_transform.a
|
||||
ATTRIBUTE_TRANSFORM_OBJS := attributes/attribute_transform.o
|
||||
POINT_CLOUD_A := point_cloud.a
|
||||
POINT_CLOUD_OBJS := point_cloud/point_cloud.o
|
||||
MESH_A := libmesh.a
|
||||
MESH_OBJS := mesh/mesh.o
|
||||
OPTIONS_A := options.a
|
||||
OPTIONS_OBJS := core/options.o
|
||||
POINT_CLOUD_ENCODER_BASE_A := point_cloud_encoder_base.a
|
||||
POINT_CLOUD_ENCODER_BASE_OBJS := compression/attributes/attributes_encoder.o
|
||||
POINT_CLOUD_ENCODER_BASE_OBJS += compression/point_cloud/point_cloud_encoder.o
|
||||
POINT_CLOUD_DECODER_BASE_A := point_cloud_decoder_base.a
|
||||
POINT_CLOUD_DECODER_BASE_OBJS := compression/attributes/attributes_decoder.o
|
||||
POINT_CLOUD_DECODER_BASE_OBJS += compression/point_cloud/point_cloud_decoder.o
|
||||
|
||||
MESH_ENCODER_BASE_A := mesh_encoder_base.a
|
||||
MESH_ENCODER_BASE_OBJS := compression/mesh/mesh_encoder.o
|
||||
MESH_DECODER_BASE_A := mesh_decoder_base.a
|
||||
MESH_DECODER_BASE_OBJS := compression/mesh/mesh_decoder.o
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_A := sequential_attribute_encoder.a
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_attribute_encoder.o
|
||||
SEQUENTIAL_ATTRIBUTE_DECODER_A := sequential_attribute_decoder.a
|
||||
SEQUENTIAL_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_attribute_decoder.o
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_A := \
|
||||
sequential_integer_attribute_encoder.a
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_integer_attribute_encoder.o
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_A := \
|
||||
sequential_integer_attribute_decoder.a
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_integer_attribute_decoder.o
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_A := \
|
||||
sequential_quantization_attribute_encoder.a
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_quantization_attribute_encoder.o
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_A := \
|
||||
sequential_quantization_attribute_decoder.a
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_quantization_attribute_decoder.o
|
||||
KD_TREE_ATTRIBUTES_ENCODER_A := kd_tree_attributes_encoder.a
|
||||
KD_TREE_ATTRIBUTES_ENCODER_OBJS := \
|
||||
compression/attributes/kd_tree_attributes_encoder.o
|
||||
KD_TREE_ATTRIBUTES_DECODER_A := kd_tree_attributes_decoder.a
|
||||
KD_TREE_ATTRIBUTES_DECODER_OBJS := \
|
||||
compression/attributes/kd_tree_attributes_decoder.o
|
||||
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_A := \
|
||||
sequential_normal_attribute_encoder.a
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJS := \
|
||||
compression/attributes/sequential_normal_attribute_encoder.o
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_A := \
|
||||
sequential_normal_attribute_decoder.a
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJS := \
|
||||
compression/attributes/sequential_normal_attribute_decoder.o
|
||||
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_A := \
|
||||
sequential_attribute_encoders_controller.a
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJS := \
|
||||
compression/attributes/sequential_attribute_encoders_controller.o
|
||||
SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_A := \
|
||||
sequential_attribute_decoders_controller.a
|
||||
SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJS := \
|
||||
compression/attributes/sequential_attribute_decoders_controller.o
|
||||
PREDICTION_SCHEME_ENCODER_FACTORY_A := \
|
||||
prediction_scheme_encoder_factory.a
|
||||
PREDICTION_SCHEME_ENCODER_FACTORY_OBJS := \
|
||||
compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.o
|
||||
|
||||
POINT_CLOUD_SEQUENTIAL_ENCODER_A := point_cloud_sequential_encoder.a
|
||||
POINT_CLOUD_SEQUENTIAL_ENCODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_sequential_encoder.o
|
||||
POINT_CLOUD_SEQUENTIAL_DECODER_A := point_cloud_sequential_decoder.a
|
||||
POINT_CLOUD_SEQUENTIAL_DECODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_sequential_decoder.o
|
||||
POINT_CLOUD_KD_TREE_ENCODER_A := point_cloud_kd_tree_encoder.a
|
||||
POINT_CLOUD_KD_TREE_ENCODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_kd_tree_encoder.o
|
||||
POINT_CLOUD_KD_TREE_DECODER_A := point_cloud_kd_tree_decoder.a
|
||||
POINT_CLOUD_KD_TREE_DECODER_OBJS := \
|
||||
compression/point_cloud/point_cloud_kd_tree_decoder.o
|
||||
MESH_SEQUENTIAL_ENCODER_A := mesh_sequential_encoder.a
|
||||
MESH_SEQUENTIAL_ENCODER_OBJS := compression/mesh/mesh_sequential_encoder.o
|
||||
MESH_SEQUENTIAL_DECODER_A := mesh_sequential_decoder.a
|
||||
MESH_SEQUENTIAL_DECODER_OBJS := compression/mesh/mesh_sequential_decoder.o
|
||||
|
||||
MESH_EDGEBREAKER_ENCODER_A := mesh_edgebreaker_encoder.a
|
||||
MESH_EDGEBREAKER_ENCODER_OBJS := compression/mesh/mesh_edgebreaker_encoder.o
|
||||
MESH_EDGEBREAKER_ENCODER_OBJS += \
|
||||
compression/mesh/mesh_edgebreaker_encoder_impl.o
|
||||
MESH_EDGEBREAKER_DECODER_A := mesh_edgebreaker_encoder.a
|
||||
MESH_EDGEBREAKER_DECODER_OBJS := compression/mesh/mesh_edgebreaker_decoder.o
|
||||
MESH_EDGEBREAKER_DECODER_OBJS += \
|
||||
compression/mesh/mesh_edgebreaker_decoder_impl.o
|
||||
ENCODE_A := encode.a
|
||||
ENCODE_OBJS := compression/encode.o
|
||||
ENCODE_A := expert_encode.a
|
||||
EXPERT_ENCODE_OBJS := compression/expert_encode.o
|
||||
DECODE_A := decode.a
|
||||
DECODE_OBJS := compression/decode.o
|
||||
|
||||
OBJ_DECODER_A := libobj_decoder.a
|
||||
OBJ_DECODER_OBJS := io/obj_decoder.o
|
||||
|
||||
PLY_DECODER_A := libply_decoder.a
|
||||
PLY_DECODER_OBJS := core/hash_utils.o io/ply_decoder.o
|
||||
|
||||
PLY_ENCODER_A := libply_encoder.a
|
||||
PLY_ENCODER_OBJS := io/ply_encoder.o
|
||||
|
||||
MESH_IO_A := libmesh_io.a
|
||||
MESH_IO_OBJS := io/mesh_io.o
|
||||
|
||||
MESH_ATTRIBUTE_CORNER_TABLE_A := libmesh_attribute_corner_table.a
|
||||
MESH_ATTRIBUTE_CORNER_TABLE_OBJS := mesh/mesh_attribute_corner_table.o
|
||||
|
||||
MESH_MISC_A := libmesh_misc.a
|
||||
MESH_MISC_OBJS := mesh/mesh_misc_functions.o
|
||||
|
||||
FLOAT_POINTS_TREE_DECODER_A := \
|
||||
libfloat_points_tree_decoder.a
|
||||
FLOAT_POINTS_TREE_DECODER_OBJS := \
|
||||
compression/point_cloud/algorithms/float_points_tree_decoder.o
|
||||
|
||||
FLOAT_POINTS_TREE_ENCODER_A := \
|
||||
libfloat_points_tree_encoder.a
|
||||
FLOAT_POINTS_TREE_ENCODER_OBJS := \
|
||||
compression/point_cloud/algorithms/float_points_tree_encoder.o
|
||||
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_A := \
|
||||
libdynamic_integer_points_kd_tree_decoder.a
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS := \
|
||||
compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.o
|
||||
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_A := \
|
||||
libdynamic_integer_points_kd_tree_encoder.a
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS := \
|
||||
compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.o
|
||||
|
||||
CORNER_TABLE_OBJSA := $(addprefix $(OBJDIR)/,$(CORNER_TABLE_OBJS:.o=_a.o))
|
||||
SHANNON_ENTROPY_OBJSA := $(addprefix $(OBJDIR)/,$(SHANNON_ENTROPY_OBJS:.o=_a.o))
|
||||
SYMBOL_CODING_OBJSA := $(addprefix $(OBJDIR)/,$(SYMBOL_CODING_OBJS:.o=_a.o))
|
||||
DIRECT_BIT_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DIRECT_BIT_DECODER_OBJS:.o=_a.o))
|
||||
DIRECT_BIT_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DIRECT_BIT_ENCODER_OBJS:.o=_a.o))
|
||||
DECODER_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DECODER_BUFFER_OBJS:.o=_a.o))
|
||||
DATA_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DATA_BUFFER_OBJS:.o=_a.o))
|
||||
DRACO_TYPES_OBJSA := $(addprefix $(OBJDIR)/,$(DRACO_TYPES_OBJS:.o=_a.o))
|
||||
|
||||
METADATA_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(METADATA_OBJS:.o=_a.o))
|
||||
GEOMETRY_METADATA_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(GEOMETRY_METADATA_OBJS:.o=_a.o))
|
||||
METADATA_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(METADATA_ENCODER_OBJS:.o=_a.o))
|
||||
METADATA_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(METADATA_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
GEOMETRY_ATTRIBUTE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(GEOMETRY_ATTRIBUTE_OBJS:.o=_a.o))
|
||||
POINT_ATTRIBUTE_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_ATTRIBUTE_OBJS:.o=_a.o))
|
||||
ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS:.o=_a.o))
|
||||
ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS:.o=_a.o))
|
||||
ATTRIBUTE_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_TRANSFORM_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_CLOUD_OBJS:.o=_a.o))
|
||||
MESH_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_OBJS:.o=_a.o))
|
||||
OPTIONS_OBJSA := $(addprefix $(OBJDIR)/,$(OPTIONS_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_ENCODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_ENCODER_BASE_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_DECODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_DECODER_BASE_OBJS:.o=_a.o))
|
||||
|
||||
MESH_ENCODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_ENCODER_BASE_OBJS:.o=_a.o))
|
||||
MESH_DECODER_BASE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_DECODER_BASE_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
PREDICTION_SCHEME_ENCODER_FACTORY_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(PREDICTION_SCHEME_ENCODER_FACTORY_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
KD_TREE_ATTRIBUTES_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, $(KD_TREE_ATTRIBUTES_ENCODER_OBJS:.o=_a.o))
|
||||
KD_TREE_ATTRIBUTES_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, $(KD_TREE_ATTRIBUTES_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJS:.o=_a.o))
|
||||
SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/, \
|
||||
$(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_SEQUENTIAL_DECODER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_KD_TREE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_KD_TREE_ENCODER_OBJS:.o=_a.o))
|
||||
POINT_CLOUD_KD_TREE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(POINT_CLOUD_KD_TREE_DECODER_OBJS:.o=_a.o))
|
||||
MESH_SEQUENTIAL_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_SEQUENTIAL_ENCODER_OBJS:.o=_a.o))
|
||||
MESH_SEQUENTIAL_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_SEQUENTIAL_DECODER_OBJS:.o=_a.o))
|
||||
MESH_EDGEBREAKER_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_EDGEBREAKER_ENCODER_OBJS:.o=_a.o))
|
||||
MESH_EDGEBREAKER_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_EDGEBREAKER_DECODER_OBJS:.o=_a.o))
|
||||
ENCODE_OBJSA := $(addprefix $(OBJDIR)/,$(ENCODE_OBJS:.o=_a.o))
|
||||
EXPERT_ENCODE_OBJSA := $(addprefix $(OBJDIR)/,$(EXPERT_ENCODE_OBJS:.o=_a.o))
|
||||
DECODE_OBJSA := $(addprefix $(OBJDIR)/,$(DECODE_OBJS:.o=_a.o))
|
||||
|
||||
MESH_MISC_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_MISC_OBJS:.o=_a.o))
|
||||
MESH_ATTRIBUTE_CORNER_TABLE_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(MESH_ATTRIBUTE_CORNER_TABLE_OBJS:.o=_a.o))
|
||||
|
||||
QUANTIZATION_UTILS_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(QUANTIZATION_UTILS_OBJS:.o=_a.o))
|
||||
CYCLE_TIMER_OBJSA := $(addprefix $(OBJDIR)/,$(CYCLE_TIMER_OBJS:.o=_a.o))
|
||||
|
||||
ENCODER_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(ENCODER_BUFFER_OBJS:.o=_a.o))
|
||||
RANS_BIT_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(RANS_BIT_DECODER_OBJS:.o=_a.o))
|
||||
RANS_BIT_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(RANS_BIT_ENCODER_OBJS:.o=_a.o))
|
||||
ADAPTIVE_RANS_BIT_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(ADAPTIVE_RANS_BIT_DECODER_OBJS:.o=_a.o))
|
||||
ADAPTIVE_RANS_BIT_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(ADAPTIVE_RANS_BIT_ENCODER_OBJS:.o=_a.o))
|
||||
OBJ_DECODER_OBJSA := $(addprefix $(OBJDIR)/,$(OBJ_DECODER_OBJS:.o=_a.o))
|
||||
MESH_IO_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_IO_OBJS:.o=_a.o))
|
||||
PLY_ENCODER_OBJSA := $(addprefix $(OBJDIR)/,$(PLY_ENCODER_OBJS:.o=_a.o))
|
||||
PLY_DECODER_OBJSA := $(addprefix $(OBJDIR)/,$(PLY_DECODER_OBJS:.o=_a.o))
|
||||
|
||||
FLOAT_POINTS_TREE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_DECODER_OBJS:.o=_a.o))
|
||||
FLOAT_POINTS_TREE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_ENCODER_OBJS:.o=_a.o))
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS:.o=_a.o))
|
||||
DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA := \
|
||||
$(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS:.o=_a.o))
|
||||
|
||||
# Core objs
|
||||
DRACO_CORE_OBJSA := $(DRACO_TYPES_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(DIRECT_BIT_DECODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(DIRECT_BIT_ENCODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(RANS_BIT_DECODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(RANS_BIT_ENCODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(ADAPTIVE_RANS_BIT_DECODER_OBJSA)
|
||||
DRACO_CORE_OBJSA += $(ADAPTIVE_RANS_BIT_ENCODER_OBJSA)
|
||||
|
||||
# Shared objs needed for both encoder and decoder
|
||||
DRACO_SHARED_OBJSA := $(CORNER_TABLE_OBJSA) $(SYMBOL_CODING_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(SHANNON_ENTROPY_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(DATA_BUFFER_OBJSA) $(DRACO_CORE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(GEOMETRY_ATTRIBUTE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(POINT_ATTRIBUTE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(ATTRIBUTE_TRANSFORM_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(POINT_CLOUD_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(MESH_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(MESH_MISC_OBJSA) $(MESH_ATTRIBUTE_CORNER_TABLE_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(METADATA_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(GEOMETRY_METADATA_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(CYCLE_TIMER_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(RANS_BIT_DECODER_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(RANS_BIT_ENCODER_OBJSA)
|
||||
DRACO_SHARED_OBJSA += $(QUANTIZATION_UTILS_OBJSA)
|
||||
|
||||
# Encoder specific objs
|
||||
DRACO_ENCODER_OBJSA := $(OPTIONS_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(POINT_CLOUD_ENCODER_BASE_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(MESH_ENCODER_BASE_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(METADATA_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(PREDICTION_SCHEME_ENCODER_FACTORY_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(POINT_CLOUD_KD_TREE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(KD_TREE_ATTRIBUTES_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(FLOAT_POINTS_TREE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(MESH_SEQUENTIAL_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(MESH_EDGEBREAKER_ENCODER_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(ENCODE_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(EXPERT_ENCODE_OBJSA)
|
||||
DRACO_ENCODER_OBJSA += $(ENCODER_BUFFER_OBJSA)
|
||||
|
||||
# Decoder specific objs
|
||||
DRACO_DECODER_OBJSA := $(DECODER_BUFFER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(POINT_CLOUD_DECODER_BASE_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(MESH_DECODER_BASE_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(METADATA_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(POINT_CLOUD_KD_TREE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(KD_TREE_ATTRIBUTES_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(FLOAT_POINTS_TREE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(MESH_SEQUENTIAL_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(MESH_EDGEBREAKER_DECODER_OBJSA)
|
||||
DRACO_DECODER_OBJSA += $(DECODE_OBJSA)
|
||||
|
||||
# I/O objs
|
||||
DRACO_IO_OBJSA := $(OBJ_DECODER_OBJSA) $(MESH_IO_OBJSA)
|
||||
DRACO_IO_OBJSA += $(PLY_ENCODER_OBJSA) $(PLY_DECODER_OBJSA)
|
||||
|
||||
# All objs
|
||||
DRACO_OBJSA := $(DRACO_SHARED_OBJSA)
|
||||
DRACO_OBJSA += $(DRACO_ENCODER_OBJSA)
|
||||
DRACO_OBJSA += $(DRACO_DECODER_OBJSA)
|
||||
DRACO_OBJSA += $(DRACO_IO_OBJSA)
|
||||
|
||||
OBJSA := $(DRACO_OBJSA)
|
||||
|
||||
LIBS := $(LIBDIR)/libmesh_io.a
|
||||
LIBS += $(LIBDIR)/libply_decoder.a
|
||||
LIBS += $(LIBDIR)/libply_encoder.a
|
||||
LIBS += $(LIBDIR)/libobj_decoder.a
|
||||
LIBS += $(LIBDIR)/libgeometry_attribute.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud.a
|
||||
LIBS += $(LIBDIR)/libpoint_attribute.a
|
||||
LIBS += $(LIBDIR)/libattribute_octahedron_transform.a
|
||||
LIBS += $(LIBDIR)/libattribute_quantization_transform.a
|
||||
LIBS += $(LIBDIR)/libattribute_transform.a
|
||||
LIBS += $(LIBDIR)/liboptions.a
|
||||
LIBS += $(LIBDIR)/libencode.a
|
||||
LIBS += $(LIBDIR)/libexpert_encode.a
|
||||
LIBS += $(LIBDIR)/libdecode.a
|
||||
LIBS += $(LIBDIR)/libmesh.a
|
||||
LIBS += $(LIBDIR)/libmesh_decoder_base.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_sequential_decoder.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_kd_tree_decoder.a
|
||||
LIBS += $(LIBDIR)/libkd_tree_attributes_decoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_sequential_decoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_edgebreaker_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_decoders_controller.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_decoder_base.a
|
||||
LIBS += $(LIBDIR)/libsequential_integer_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_quantization_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_normal_attribute_decoder.a
|
||||
LIBS += $(LIBDIR)/libquantization_utils.a
|
||||
LIBS += $(LIBDIR)/libmesh_encoder_base.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_sequential_encoder.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_kd_tree_encoder.a
|
||||
LIBS += $(LIBDIR)/libkd_tree_attributes_encoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_sequential_encoder.a
|
||||
LIBS += $(LIBDIR)/libmesh_edgebreaker_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_attribute_encoders_controller.a
|
||||
LIBS += $(LIBDIR)/libpoint_cloud_encoder_base.a
|
||||
LIBS += $(LIBDIR)/libsequential_integer_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_quantization_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libsequential_normal_attribute_encoder.a
|
||||
LIBS += $(LIBDIR)/libcorner_table.a
|
||||
LIBS += $(LIBDIR)/libmesh_attribute_corner_table.a
|
||||
LIBS += $(LIBDIR)/libmesh_misc.a
|
||||
LIBS += $(LIBDIR)/libshannon_entropy.a
|
||||
LIBS += $(LIBDIR)/libsymbol_coding.a
|
||||
LIBS += $(LIBDIR)/librans_bit_decoder.a
|
||||
LIBS += $(LIBDIR)/librans_bit_encoder.a
|
||||
LIBS += $(LIBDIR)/libdata_buffer.a
|
||||
LIBS += $(LIBDIR)/libdraco_types.a
|
||||
LIBS += $(LIBDIR)/libmetadata.a
|
||||
LIBS += $(LIBDIR)/libgeometry_metadata.a
|
||||
LIBS += $(LIBDIR)/libmetadata_encoder.a
|
||||
LIBS += $(LIBDIR)/libmetadata_decoder.a
|
||||
LIBS += $(LIBDIR)/libdecoder_buffer.a
|
||||
LIBS += $(LIBDIR)/libencoder_buffer.a
|
||||
LIBS += $(LIBDIR)/libcycle_timer.a
|
||||
|
||||
POINTS_LIBS := $(LIBDIR)/libfloat_points_tree_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libfloat_points_tree_encoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdirect_bit_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libdirect_bit_encoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_decoder.a
|
||||
POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_encoder.a
|
||||
|
||||
DEPS := $(DRACO_OBJSA:_a.o=.d)
|
||||
CLEAN := $(DEPS) $(OBJSA) $(LIBS) $(POINTS_LIBS)
|
||||
CLEAN += glue_encoder.cpp glue_encoder.js draco_encoder.js WebIDLGrammar.pkl parser.out
|
||||
CLEAN += $(OBJDIR)/javascript/emscripten/draco_encoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/draco_encoder_glue_wrapper.d
|
||||
CLEAN += $(OBJDIR)/javascript/emscripten/encoder_webidl_wrapper.o $(OBJDIR)/javascript/emscripten/encoder_webidl_wrapper.d
|
||||
|
||||
all: jslib
|
||||
|
||||
jslib: build_glue draco_encoder
|
||||
|
||||
build_glue:
|
||||
python $(BINDER) $(IDL) glue_encoder
|
||||
|
||||
draco_encoder: $(OBJDIR)/javascript/emscripten/draco_encoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/encoder_webidl_wrapper.o $(DRACO_CORE_OBJSA) $(DRACO_SHARED_OBJSA) $(DRACO_ENCODER_OBJSA)
|
||||
$(CXX) $(ALL_C_OPTS) $^ --pre-js $(SRCDIR)/javascript/emscripten/prepareCallbacks.js --pre-js $(SRCDIR)/javascript/emscripten/version.js --post-js glue_encoder.js --post-js $(SRCDIR)/javascript/emscripten/finalize.js -o $@.js
|
||||
|
||||
$(LIBDIR)/libcorner_table.a: $(CORNER_TABLE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libshannon_entropy.a: $(SHANNON_ENTROPY_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libsymbol_coding.a: $(SYMBOL_CODING_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdirect_bit_decoder.a: $(DIRECT_BIT_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdirect_bit_encoder.a: $(DIRECT_BIT_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdecoder_buffer.a: $(DECODER_BUFFER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdata_buffer.a: $(DATA_BUFFER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdraco_types.a: $(DRACO_TYPES_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmetadata.a: $(MEATDATA_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libgeometry_metadata.a: $(GEOMETRY_MEATDATA_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmetadata_encoder.a: $(MEATDATA_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmetadata_decoder.a: $(MEATDATA_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libgeometry_attribute.a: $(GEOMETRY_ATTRIBUTE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_attribute.a: $(POINT_ATTRIBUTE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libattribute_octahedron_transform.a: $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libattribute_quantization_transform.a: $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libattribute_transform.a: $(ATTRIBUTE_TRANSFORM_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud.a: $(POINT_CLOUD_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh.a: $(MESH_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/liboptions.a: $(OPTIONS_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_encoder_base.a: $(POINT_CLOUD_ENCODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_decoder_base.a: $(POINT_CLOUD_DECODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_encoder_base.a: $(MESH_ENCODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_decoder_base.a: $(MESH_DECODER_BASE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_integer_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpredicion_scheme_encoder_factory.a: \
|
||||
$(PREDICTION_SCHEME_ENCODER_FACTORY_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_integer_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_quantization_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_quantization_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libkd_tree_attributes_encoder.a: $(KD_TREE_ATTRIBUTES_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libkd_tree_attributes_decoder.a: $(KD_TREE_ATTRIBUTES_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_normal_attribute_encoder.a: \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_normal_attribute_decoder.a: \
|
||||
$(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_encoders_controller.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libsequential_attribute_decoders_controller.a: \
|
||||
$(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_sequential_encoder.a: \
|
||||
$(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_sequential_decoder.a: \
|
||||
$(POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_kd_tree_encoder.a: \
|
||||
$(POINT_CLOUD_KD_TREE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libpoint_cloud_kd_tree_decoder.a: \
|
||||
$(POINT_CLOUD_KD_TREE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_sequential_encoder.a: $(MESH_SEQUENTIAL_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_sequential_decoder.a: $(MESH_SEQUENTIAL_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_edgebreaker_encoder.a: $(MESH_EDGEBREAKER_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libmesh_edgebreaker_decoder.a: $(MESH_EDGEBREAKER_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libencode.a: $(ENCODE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libencode.a: $(EXPERT_ENCODE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
$(LIBDIR)/libdecode.a: $(DECODE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_misc.a: $(MESH_MISC_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_attribute_corner_table.a: $(MESH_ATTRIBUTE_CORNER_TABLE_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libencoder_buffer.a: $(ENCODER_BUFFER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libquantization_utils.a: $(QUANTIZATION_UTILS_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libcycle_timer.a: $(CYCLE_TIMER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/librans_bit_decoder.a: $(RANS_BIT_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/librans_bit_encoder.a: $(RANS_BIT_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libadaptive_rans_bit_decoder.a: $(ADAPTIVE_RANS_BIT_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libadaptive_rans_bit_encoder.a: $(ADAPTIVE_RANS_BIT_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libobj_decoder.a: $(OBJ_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libmesh_io.a: $(MESH_IO_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libply_encoder.a: $(PLY_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libply_decoder.a: $(PLY_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libfloat_points_tree_decoder.a: $(FLOAT_POINTS_TREE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libfloat_points_tree_encoder.a: $(FLOAT_POINTS_TREE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a: \
|
||||
$(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a: \
|
||||
$(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(OBJDIR)/%.o: $(SRCDIR)/%.cc
|
||||
@mkdir -p $(@D)
|
||||
$(CXX) $(ALL_CXXFLAGS) $< -o $@
|
||||
|
||||
$(OBJDIR)/%_a.o: $(SRCDIR)/%.cc
|
||||
@mkdir -p $(@D)
|
||||
$(CXX) $(ALL_CXXFLAGS) $< -o $@
|
||||
|
||||
clean:
|
||||
$(RM) $(CLEAN)
|
@ -5,6 +5,11 @@
|
||||
|
||||
News
|
||||
=======
|
||||
### Version 1.3.4 release
|
||||
* Released Draco Animation code
|
||||
* Fixes for Unity
|
||||
* Various file location and name changes
|
||||
|
||||
### Version 1.3.3 release
|
||||
* Added ExpertEncoder to the Javascript API
|
||||
* Allows developers to set quantization options per attribute id
|
||||
@ -565,7 +570,7 @@ The Javascript decoder is built with dynamic memory. This will let the decoder
|
||||
work with all of the compressed data. But this option is not the fastest.
|
||||
Pre-allocating the memory sees about a 2x decoder speed improvement. If you
|
||||
know all of your project's memory requirements, you can turn on static memory
|
||||
by changing `Makefile.emcc` and running `make -f Makefile.emcc`.
|
||||
by changing `CMakeLists.txt` accordingly.
|
||||
|
||||
Metadata API
|
||||
------------
|
||||
|
30
javascript/animation/draco_animation_decoder.js
Normal file
30
javascript/animation/draco_animation_decoder.js
Normal file
File diff suppressed because one or more lines are too long
31
javascript/animation/draco_animation_encoder.js
Normal file
31
javascript/animation/draco_animation_encoder.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -1,129 +1,119 @@
|
||||
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(d,f,n){d!=Array.prototype&&d!=Object.prototype&&(d[f]=n.value)};$jscomp.getGlobal=function(d){return"undefined"!=typeof window&&window===d?d:"undefined"!=typeof global&&null!=global?global:d};$jscomp.global=$jscomp.getGlobal(this);
|
||||
$jscomp.polyfill=function(d,f,n,w){if(f){n=$jscomp.global;d=d.split(".");for(w=0;w<d.length-1;w++){var g=d[w];g in n||(n[g]={});n=n[g]}d=d[d.length-1];w=n[d];f=f(w);f!=w&&null!=f&&$jscomp.defineProperty(n,d,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Math.imul",function(d){return d?d:function(f,d){f=Number(f);d=Number(d);var n=f&65535,g=d&65535;return n*g+((f>>>16&65535)*g+n*(d>>>16&65535)<<16>>>0)|0}},"es6","es3");
|
||||
$jscomp.polyfill("Math.clz32",function(d){return d?d:function(f){f=Number(f)>>>0;if(0===f)return 32;var d=0;0===(f&4294901760)&&(f<<=16,d+=16);0===(f&4278190080)&&(f<<=8,d+=8);0===(f&4026531840)&&(f<<=4,d+=4);0===(f&3221225472)&&(f<<=2,d+=2);0===(f&2147483648)&&d++;return d}},"es6","es3");$jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var f=Math.floor(Math.abs(d));return 0>d?-f:f}},"es6","es3");
|
||||
$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(d){return $jscomp.SYMBOL_PREFIX+(d||"")+$jscomp.symbolCounter_++};
|
||||
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var d=$jscomp.global.Symbol.iterator;d||(d=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[d]&&$jscomp.defineProperty(Array.prototype,d,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(d){var f=0;return $jscomp.iteratorPrototype(function(){return f<d.length?{done:!1,value:d[f++]}:{done:!0}})};
|
||||
$jscomp.iteratorPrototype=function(d){$jscomp.initSymbolIterator();d={next:d};d[$jscomp.global.Symbol.iterator]=function(){return this};return d};$jscomp.makeIterator=function(d){$jscomp.initSymbolIterator();var f=d[Symbol.iterator];return f?f.call(d):$jscomp.arrayIterator(d)};$jscomp.FORCE_POLYFILL_PROMISE=!1;
|
||||
$jscomp.polyfill("Promise",function(d){function f(){this.batch_=null}function n(d){return d instanceof g?d:new g(function(f,D){f(d)})}if(d&&!$jscomp.FORCE_POLYFILL_PROMISE)return d;f.prototype.asyncExecute=function(d){null==this.batch_&&(this.batch_=[],this.asyncExecuteBatch_());this.batch_.push(d);return this};f.prototype.asyncExecuteBatch_=function(){var d=this;this.asyncExecuteFunction(function(){d.executeBatch_()})};var w=$jscomp.global.setTimeout;f.prototype.asyncExecuteFunction=function(d){w(d,
|
||||
0)};f.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var d=this.batch_;this.batch_=[];for(var f=0;f<d.length;++f){var g=d[f];delete d[f];try{g()}catch(la){this.asyncThrow_(la)}}}this.batch_=null};f.prototype.asyncThrow_=function(d){this.asyncExecuteFunction(function(){throw d;})};var g=function(d){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var f=this.createResolveAndReject_();try{d(f.resolve,f.reject)}catch(u){f.reject(u)}};g.prototype.createResolveAndReject_=
|
||||
function(){function d(d){return function(D){g||(g=!0,d.call(f,D))}}var f=this,g=!1;return{resolve:d(this.resolveTo_),reject:d(this.reject_)}};g.prototype.resolveTo_=function(d){if(d===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(d instanceof g)this.settleSameAsPromise_(d);else{a:switch(typeof d){case "object":var f=null!=d;break a;case "function":f=!0;break a;default:f=!1}f?this.resolveToNonPromiseObj_(d):this.fulfill_(d)}};g.prototype.resolveToNonPromiseObj_=function(d){var f=
|
||||
void 0;try{f=d.then}catch(u){this.reject_(u);return}"function"==typeof f?this.settleSameAsThenable_(f,d):this.fulfill_(d)};g.prototype.reject_=function(d){this.settle_(2,d)};g.prototype.fulfill_=function(d){this.settle_(1,d)};g.prototype.settle_=function(d,f){if(0!=this.state_)throw Error("Cannot settle("+d+", "+f|"): Promise already settled in state"+this.state_);this.state_=d;this.result_=f;this.executeOnSettledCallbacks_()};g.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var d=
|
||||
this.onSettledCallbacks_,f=0;f<d.length;++f)d[f].call(),d[f]=null;this.onSettledCallbacks_=null}};var ma=new f;g.prototype.settleSameAsPromise_=function(d){var f=this.createResolveAndReject_();d.callWhenSettled_(f.resolve,f.reject)};g.prototype.settleSameAsThenable_=function(d,f){var g=this.createResolveAndReject_();try{d.call(f,g.resolve,g.reject)}catch(la){g.reject(la)}};g.prototype.then=function(d,f){function u(d,f){return"function"==typeof d?function(f){try{n(d(f))}catch(ea){D(ea)}}:f}var n,D,
|
||||
w=new g(function(d,f){n=d;D=f});this.callWhenSettled_(u(d,n),u(f,D));return w};g.prototype.catch=function(d){return this.then(void 0,d)};g.prototype.callWhenSettled_=function(d,f){function g(){switch(n.state_){case 1:d(n.result_);break;case 2:f(n.result_);break;default:throw Error("Unexpected state: "+n.state_);}}var n=this;null==this.onSettledCallbacks_?ma.asyncExecute(g):this.onSettledCallbacks_.push(function(){ma.asyncExecute(g)})};g.resolve=n;g.reject=function(d){return new g(function(f,g){g(d)})};
|
||||
g.race=function(d){return new g(function(f,g){for(var u=$jscomp.makeIterator(d),w=u.next();!w.done;w=u.next())n(w.value).callWhenSettled_(f,g)})};g.all=function(d){var f=$jscomp.makeIterator(d),u=f.next();return u.done?n([]):new g(function(d,g){function w(f){return function(g){D[f]=g;Q--;0==Q&&d(D)}}var D=[],Q=0;do D.push(void 0),Q++,n(u.value).callWhenSettled_(w(D.length-1),g),u=f.next();while(!u.done)})};return g},"es6","es3");
|
||||
var DracoDecoderModule=function(d){function f(a,b){a||W("Assertion failed: "+b)}function n(e,b){if(0===b||!e)return"";for(var c=0,l,d=0;;){l=T[e+d>>0];c|=l;if(0==l&&!b)break;d++;if(b&&d==b)break}b||(b=d);l="";if(128>c){for(;0<b;)c=String.fromCharCode.apply(String,T.subarray(e,e+Math.min(b,1024))),l=l?l+c:c,e+=1024,b-=1024;return l}return a.UTF8ToString(e)}function w(a){return a.replace(/__Z[\w\d_]+/g,function(a){return a===a?a:a+" ["+a+"]"})}function g(){a:{var e=Error();if(!e.stack){try{throw Error(0);
|
||||
}catch(b){e=b}if(!e.stack){e="(no stack trace available)";break a}}e=e.stack.toString()}a.extraStackTrace&&(e+="\n"+a.extraStackTrace());return w(e)}function ma(a,b){0<a%b&&(a+=b-a%b);return a}function D(){a.HEAP8=fa=new Int8Array(F);a.HEAP16=za=new Int16Array(F);a.HEAP32=x=new Int32Array(F);a.HEAPU8=T=new Uint8Array(F);a.HEAPU16=Oa=new Uint16Array(F);a.HEAPU32=Pa=new Uint32Array(F);a.HEAPF32=Qa=new Float32Array(F);a.HEAPF64=Ra=new Float64Array(F)}function Ma(){var e=a.usingWasm?Aa:Sa,b=2147483648-
|
||||
e;if(x[ba>>2]>b)return!1;var c=y;for(y=Math.max(y,ib);y<x[ba>>2];)y=536870912>=y?ma(2*y,e):Math.min(ma((3*y+2147483648)/4,e),b);e=a.reallocBuffer(y);if(!e||e.byteLength!=y)return y=c,!1;a.buffer=F=e;D();return!0}function u(e){for(;0<e.length;){var b=e.shift();if("function"==typeof b)b();else{var c=b.func;"number"===typeof c?void 0===b.arg?a.dynCall_v(c):a.dynCall_vi(c,b.arg):c(void 0===b.arg?null:b.arg)}}}function la(e){ha++;a.monitorRunDependencies&&a.monitorRunDependencies(ha)}function Na(e){ha--;
|
||||
a.monitorRunDependencies&&a.monitorRunDependencies(ha);0==ha&&(null!==Ba&&(clearInterval(Ba),Ba=null),sa&&(e=sa,sa=null,e()))}function na(){return!!na.uncaught_exception}function qa(){var e=A.last;if(!e)return(m.setTempRet0(0),0)|0;var b=A.infos[e],c=b.type;if(!c)return(m.setTempRet0(0),e)|0;var l=Array.prototype.slice.call(arguments);a.___cxa_is_pointer_type(c);qa.buffer||(qa.buffer=Ta(4));x[qa.buffer>>2]=e;e=qa.buffer;for(var d=0;d<l.length;d++)if(l[d]&&a.___cxa_can_catch(l[d],c,e))return e=x[e>>
|
||||
2],b.adjusted=e,(m.setTempRet0(l[d]),e)|0;e=x[e>>2];return(m.setTempRet0(c),e)|0}function Q(e,b){v.varargs=b;try{var c=v.get(),l=v.get(),d=v.get();e=0;Q.buffer||(Q.buffers=[null,[],[]],Q.printChar=function(b,c){var e=Q.buffers[b];f(e);if(0===c||10===c){b=1===b?a.print:a.printErr;a:{for(var l=c=0;e[l];)++l;if(16<l-c&&e.subarray&&Ua)c=Ua.decode(e.subarray(c,l));else for(l="";;){var d=e[c++];if(!d){c=l;break a}if(d&128){var g=e[c++]&63;if(192==(d&224))l+=String.fromCharCode((d&31)<<6|g);else{var h=e[c++]&
|
||||
63;if(224==(d&240))d=(d&15)<<12|g<<6|h;else{var E=e[c++]&63;if(240==(d&248))d=(d&7)<<18|g<<12|h<<6|E;else{var k=e[c++]&63;if(248==(d&252))d=(d&3)<<24|g<<18|h<<12|E<<6|k;else{var ta=e[c++]&63;d=(d&1)<<30|g<<24|h<<18|E<<12|k<<6|ta}}}65536>d?l+=String.fromCharCode(d):(d-=65536,l+=String.fromCharCode(55296|d>>10,56320|d&1023))}}else l+=String.fromCharCode(d)}}b(c);e.length=0}else e.push(c)});for(b=0;b<d;b++){for(var h=x[l+8*b>>2],g=x[l+(8*b+4)>>2],k=0;k<g;k++)Q.printChar(c,T[h+k]);e+=g}return e}catch(Ca){return"undefined"!==
|
||||
typeof FS&&Ca instanceof FS.ErrnoError||W(Ca),-Ca.errno}}function ra(e,b){ra.seen||(ra.seen={});e in ra.seen||(a.dynCall_v(b),ra.seen[e]=1)}function ea(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}function Da(e){function b(){if(!a.calledRun&&(a.calledRun=!0,!ua)){Va||(Va=!0,u(Wa));u(Xa);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ya.unshift(a.postRun.shift());
|
||||
u(Ya)}}null===Za&&(Za=Date.now());if(!(0<ha)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)$a.unshift(a.preRun.shift());u($a);0<ha||a.calledRun||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1);b()},1)):b())}}function W(e){if(a.onAbort)a.onAbort(e);void 0!==e?(a.print(e),a.printErr(e),e=JSON.stringify(e)):e="";ua=!0;var b="abort("+e+") at "+g()+"\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";
|
||||
ab&&ab.forEach(function(a){b=a(b,e)});throw b;}function p(){}function t(a){return(a||p).__cache__}function X(a,b){var c=t(b),e=c[a];if(e)return e;e=Object.create((b||p).prototype);e.ptr=a;return c[a]=e}function Y(a){if("string"===typeof a){for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++c)&1023);127>=e?++b:b=2047>=e?b+2:65535>=e?b+3:2097151>=e?b+4:67108863>=e?b+5:b+6}b=Array(b+1);c=0;e=b.length;if(0<e){e=c+e-1;for(var d=0;d<a.length;++d){var f=
|
||||
a.charCodeAt(d);55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++d)&1023);if(127>=f){if(c>=e)break;b[c++]=f}else{if(2047>=f){if(c+1>=e)break;b[c++]=192|f>>6}else{if(65535>=f){if(c+2>=e)break;b[c++]=224|f>>12}else{if(2097151>=f){if(c+3>=e)break;b[c++]=240|f>>18}else{if(67108863>=f){if(c+4>=e)break;b[c++]=248|f>>24}else{if(c+5>=e)break;b[c++]=252|f>>30;b[c++]=128|f>>24&63}b[c++]=128|f>>18&63}b[c++]=128|f>>12&63}b[c++]=128|f>>6&63}b[c++]=128|f&63}}b[c]=0}a=k.alloc(b,fa);k.copy(b,fa,a)}return a}
|
||||
function B(){throw"cannot construct a Status, no constructor in IDL";}function G(){this.ptr=lb();t(G)[this.ptr]=this}function H(){this.ptr=mb();t(H)[this.ptr]=this}function I(){this.ptr=nb();t(I)[this.ptr]=this}function J(){this.ptr=ob();t(J)[this.ptr]=this}function K(){this.ptr=pb();t(K)[this.ptr]=this}function q(){this.ptr=qb();t(q)[this.ptr]=this}function P(){this.ptr=rb();t(P)[this.ptr]=this}function z(){this.ptr=sb();t(z)[this.ptr]=this}function L(){this.ptr=tb();t(L)[this.ptr]=this}function r(){this.ptr=
|
||||
ub();t(r)[this.ptr]=this}function M(){this.ptr=vb();t(M)[this.ptr]=this}function N(){this.ptr=wb();t(N)[this.ptr]=this}function Z(){this.ptr=xb();t(Z)[this.ptr]=this}function R(){this.ptr=yb();t(R)[this.ptr]=this}function h(){this.ptr=zb();t(h)[this.ptr]=this}function C(){this.ptr=Ab();t(C)[this.ptr]=this}function ca(){throw"cannot construct a VoidPtr, no constructor in IDL";}function O(){this.ptr=Bb();t(O)[this.ptr]=this}function S(){this.ptr=Cb();t(S)[this.ptr]=this}var a=d=d||{},bb=!1,cb=!1;a.onRuntimeInitialized=
|
||||
function(){bb=!0;if(cb&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){cb=!0;if(bb&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(a){if("string"!==typeof a)return!1;a=a.split(".");return 2>a.length||3<a.length?!1:1==a[0]&&0<=a[1]&&3>=a[1]?!0:0!=a[0]||10<a[1]?!1:!0};a||(a=("undefined"!==typeof d?d:null)||{});var va={},da;for(da in a)a.hasOwnProperty(da)&&(va[da]=a[da]);var oa=!1,ka=!1,pa=!1,wa=!1;if(a.ENVIRONMENT)if("WEB"===
|
||||
a.ENVIRONMENT)oa=!0;else if("WORKER"===a.ENVIRONMENT)ka=!0;else if("NODE"===a.ENVIRONMENT)pa=!0;else if("SHELL"===a.ENVIRONMENT)wa=!0;else throw Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else oa="object"===typeof window,ka="function"===typeof importScripts,pa="object"===typeof process&&"function"===typeof require&&!oa&&!ka,wa=!oa&&!pa&&!ka;if(pa){a.print||(a.print=console.log);a.printErr||(a.printErr=console.warn);var Ea,Fa;a.read=function(a,
|
||||
b){Ea||(Ea=require("fs"));Fa||(Fa=require("path"));a=Fa.normalize(a);a=Ea.readFileSync(a);return b?a:a.toString()};a.readBinary=function(e){e=a.read(e,!0);e.buffer||(e=new Uint8Array(e));f(e.buffer);return e};a.thisProgram||(a.thisProgram=1<process.argv.length?process.argv[1].replace(/\\/g,"/"):"unknown-program");a.arguments=process.argv.slice(2);process.on("uncaughtException",function(a){if(!(a instanceof ea))throw a;});a.inspect=function(){return"[Emscripten Module object]"}}else if(wa)a.print||
|
||||
(a.print=print),"undefined"!=typeof printErr&&(a.printErr=printErr),a.read="undefined"!=typeof read?function(a){return read(a)}:function(){throw"no read() available";},a.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");f("object"===typeof a);return a},"undefined"!=typeof scriptArgs?a.arguments=scriptArgs:"undefined"!=typeof arguments&&(a.arguments=arguments),"function"===typeof quit&&(a.quit=function(a,b){quit(a)});else if(oa||ka)a.read=
|
||||
function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},ka&&(a.readBinary=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),a.readAsync=function(a,b,c){var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=function(){200==e.status||0==e.status&&e.response?b(e.response):c()};e.onerror=c;e.send(null)},"undefined"!=typeof arguments&&(a.arguments=arguments),
|
||||
"undefined"!==typeof console?(a.print||(a.print=function(a){console.log(a)}),a.printErr||(a.printErr=function(a){console.warn(a)})):a.print||(a.print=function(a){}),"undefined"===typeof a.setWindowTitle&&(a.setWindowTitle=function(a){document.title=a});else throw Error("Unknown runtime environment. Where are we?");a.print||(a.print=function(){});a.printErr||(a.printErr=a.print);a.arguments||(a.arguments=[]);a.thisProgram||(a.thisProgram="./this.program");a.quit||(a.quit=function(a,b){throw b;});a.print=
|
||||
a.print;a.printErr=a.printErr;a.preRun=[];a.postRun=[];for(da in va)va.hasOwnProperty(da)&&(a[da]=va[da]);va=void 0;var m={setTempRet0:function(a){return tempRet0=a},getTempRet0:function(){return tempRet0},stackSave:function(){return U},stackRestore:function(a){U=a},getNativeTypeSize:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:return"*"===a[a.length-1]?m.QUANTUM_SIZE:"i"===a[0]?
|
||||
(a=parseInt(a.substr(1)),f(0===a%8),a/8):0}},getNativeFieldSize:function(a){return Math.max(m.getNativeTypeSize(a),m.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(a,b){"double"===b||"i64"===b?a&7&&(f(4===(a&7)),a+=4):f(0===(a&3));return a},getAlignSize:function(a,b,c){return c||"i64"!=a&&"double"!=a?a?Math.min(b||(a?m.getNativeFieldSize(a):0),m.QUANTUM_SIZE):Math.min(b,8):8},dynCall:function(e,b,c){return c&&c.length?a["dynCall_"+e].apply(null,[b].concat(c)):a["dynCall_"+e].call(null,b)},functionPointers:[],
|
||||
addFunction:function(a){for(var b=0;b<m.functionPointers.length;b++)if(!m.functionPointers[b])return m.functionPointers[b]=a,2*(1+b);throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";},removeFunction:function(a){m.functionPointers[(a-2)/2]=null},warnOnce:function(e){m.warnOnce.shown||(m.warnOnce.shown={});m.warnOnce.shown[e]||(m.warnOnce.shown[e]=1,a.printErr(e))},funcWrappers:{},getFuncWrapper:function(a,b){if(a){f(b);m.funcWrappers[b]||(m.funcWrappers[b]=
|
||||
{});var c=m.funcWrappers[b];c[a]||(c[a]=1===b.length?function(){return m.dynCall(b,a)}:2===b.length?function(c){return m.dynCall(b,a,[c])}:function(){return m.dynCall(b,a,Array.prototype.slice.call(arguments))});return c[a]}},getCompilerSetting:function(a){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work";},stackAlloc:function(a){var b=U;U=U+a|0;U=U+15&-16;return b},staticAlloc:function(a){var b=aa;aa=aa+a|0;aa=aa+15&
|
||||
-16;return b},dynamicAlloc:function(a){var b=x[ba>>2];a=(b+a+15|0)&-16;x[ba>>2]=a;return a>=y&&!Ma()?(x[ba>>2]=b,0):b},alignMemory:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},makeBigInt:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0},ua=0,Ua="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var Aa=65536,Sa=16777216,ib=16777216,fa,T,za,
|
||||
Oa,x,Pa,Qa,Ra,aa,Ga,U,xa,Ha,ba;var Ia=aa=Ga=U=xa=Ha=ba=0;a.reallocBuffer||(a.reallocBuffer=function(a){try{if(ArrayBuffer.transfer)var b=ArrayBuffer.transfer(F,a);else{var c=fa;b=new ArrayBuffer(a);(new Int8Array(b)).set(c)}}catch(l){return!1}return Db(b)?b:!1});try{var Ja=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);Ja(new ArrayBuffer(4))}catch(e){Ja=function(a){return a.byteLength}}var Ka=a.TOTAL_STACK||5242880,y=a.TOTAL_MEMORY||16777216;
|
||||
y<Ka&&a.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+y+"! (TOTAL_STACK="+Ka+")");if(a.buffer)var F=a.buffer;else"object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(a.wasmMemory=new WebAssembly.Memory({initial:y/Aa}),F=a.wasmMemory.buffer):F=new ArrayBuffer(y);D();x[0]=1668509029;za[1]=25459;if(115!==T[2]||99!==T[3])throw"Runtime error: expected the system to be little-endian!";a.HEAP=void 0;a.buffer=F;a.HEAP8=fa;a.HEAP16=za;a.HEAP32=x;a.HEAPU8=T;a.HEAPU16=Oa;
|
||||
a.HEAPU32=Pa;a.HEAPF32=Qa;a.HEAPF64=Ra;var $a=[],Wa=[],Xa=[],db=[],Ya=[],Va=!1;f(Math.imul&&Math.fround&&Math.clz32&&Math.trunc,"this is a legacy browser, build with LEGACY_VM_SUPPORT");var ha=0,Ba=null,sa=null;a.preloadedImages={};a.preloadedAudios={};var V=null;(function(){function e(){try{if(a.wasmBinary)return new Uint8Array(a.wasmBinary);if(a.readBinary)return a.readBinary(d);throw"on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)";
|
||||
}catch(jb){W(jb)}}function b(){return a.wasmBinary||!oa&&!ka||"function"!==typeof fetch?new Promise(function(a,b){a(e())}):fetch(d,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+d+"'";return a.arrayBuffer()}).catch(function(){return e()})}function c(c,e,l){function f(b,c){h=b.exports;if(h.memory){b=h.memory;c=a.buffer;b.byteLength<c.byteLength&&a.printErr("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here");
|
||||
c=new Int8Array(c);var e=new Int8Array(b);V||c.set(e.subarray(a.STATIC_BASE,a.STATIC_BASE+a.STATIC_BUMP),a.STATIC_BASE);e.set(c);a.buffer=F=b;D()}a.asm=h;a.usingWasm=!0;Na("wasm-instantiate")}function E(a){f(a.instance,a.module)}function k(c){b().then(function(a){return WebAssembly.instantiate(a,g)}).then(c).catch(function(b){a.printErr("failed to asynchronously prepare wasm: "+b);W(b)})}if("object"!==typeof WebAssembly)return a.printErr("no native wasm support detected"),!1;if(!(a.wasmMemory instanceof
|
||||
WebAssembly.Memory))return a.printErr("no native wasm Memory in use"),!1;e.memory=a.wasmMemory;g.global={NaN:NaN,Infinity:Infinity};g["global.Math"]=c.Math;g.env=e;la("wasm-instantiate");if(a.instantiateWasm)try{return a.instantiateWasm(g,f)}catch(kb){return a.printErr("Module.instantiateWasm callback failed with error: "+kb),!1}a.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||0===d.indexOf("data:")||"function"!==typeof fetch?k(E):WebAssembly.instantiateStreaming(fetch(d,{credentials:"same-origin"}),
|
||||
g).then(E).catch(function(b){a.printErr("wasm streaming compile failed: "+b);a.printErr("falling back to ArrayBuffer instantiation");k(E)});return{}}var d="draco_decoder.wasm",f="draco_decoder.temp.asm.js";"function"===typeof a.locateFile&&(a.locateFile("draco_decoder.wast"),d=a.locateFile(d),f=a.locateFile(f));var g={global:null,env:null,asm2wasm:{"f64-rem":function(a,b){return a%b},"debugger":function(){debugger}},parent:a},h=null;a.asmPreload=a.asm;var k=a.reallocBuffer;a.reallocBuffer=function(b){if("asmjs"===
|
||||
m)var c=k(b);else a:{b=ma(b,a.usingWasm?Aa:Sa);var e=a.buffer.byteLength;if(a.usingWasm)try{c=-1!==a.wasmMemory.grow((b-e)/65536)?a.buffer=a.wasmMemory.buffer:null;break a}catch(Jd){c=null;break a}c=void 0}return c};var m="";a.asm=function(b,e,d){if(!e.table){var l=a.wasmTableSize;void 0===l&&(l=1024);var f=a.wasmMaxTableSize;e.table="object"===typeof WebAssembly&&"function"===typeof WebAssembly.Table?void 0!==f?new WebAssembly.Table({initial:l,maximum:f,element:"anyfunc"}):new WebAssembly.Table({initial:l,
|
||||
element:"anyfunc"}):Array(l);a.wasmTable=e.table}e.memoryBase||(e.memoryBase=a.STATIC_BASE);e.tableBase||(e.tableBase=0);(b=c(b,e,d))||W("no binaryen method succeeded. consider enabling more options, like interpreting, if you want that: https://github.com/kripken/emscripten/wiki/WebAssembly#binaryen-methods");return b}})();Ia=m.GLOBAL_BASE;aa=Ia+19104;Wa.push();V=null;a.STATIC_BASE=Ia;a.STATIC_BUMP=19104;var Eb=aa;aa+=16;var A={last:0,caught:[],infos:{},deAdjust:function(a){if(!a||A.infos[a])return a;
|
||||
for(var b in A.infos)if(A.infos[b].adjusted===a)return b;return a},addRef:function(a){a&&A.infos[a].refcount++},decRef:function(e){if(e){var b=A.infos[e];f(0<b.refcount);b.refcount--;0!==b.refcount||b.rethrown||(b.destructor&&a.dynCall_vi(b.destructor,e),delete A.infos[e],___cxa_free_exception(e))}},clearRef:function(a){a&&(A.infos[a].refcount=0)}},v={varargs:0,get:function(a){v.varargs+=4;return x[v.varargs-4>>2]},getStr:function(){return n(v.get())},get64:function(){var a=v.get(),b=v.get();0<=a?
|
||||
f(0===b):f(-1===b);return a},getZero:function(){f(0===v.get())}},ya={},La=1;db.push(function(){var e=a._fflush;e&&e(0);if(e=Q.printChar){var b=Q.buffers;b[1].length&&e(1,10);b[2].length&&e(2,10)}});ba=m.staticAlloc(4);Ga=U=m.alignMemory(aa);xa=Ga+Ka;Ha=m.alignMemory(xa);x[ba>>2]=Ha;a.wasmTableSize=492;a.wasmMaxTableSize=492;a.asmGlobalArg={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,
|
||||
Float64Array:Float64Array,NaN:NaN,Infinity:Infinity,byteLength:Ja};a.asmLibraryArg={abort:W,assert:f,enlargeMemory:Ma,getTotalMemory:function(){return y},abortOnCannotGrowMemory:function(){W("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+y+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},
|
||||
invoke_ii:function(e,b){try{return a.dynCall_ii(e,b)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_iii:function(e,b,c){try{return a.dynCall_iii(e,b,c)}catch(l){if("number"!==typeof l&&"longjmp"!==l)throw l;a.setThrew(1,0)}},invoke_iiii:function(e,b,c,d){try{return a.dynCall_iiii(e,b,c,d)}catch(E){if("number"!==typeof E&&"longjmp"!==E)throw E;a.setThrew(1,0)}},invoke_iiiiiii:function(e,b,c,d,f,g,h){try{return a.dynCall_iiiiiii(e,b,c,d,f,g,h)}catch(ja){if("number"!==
|
||||
typeof ja&&"longjmp"!==ja)throw ja;a.setThrew(1,0)}},invoke_v:function(e){try{a.dynCall_v(e)}catch(b){if("number"!==typeof b&&"longjmp"!==b)throw b;a.setThrew(1,0)}},invoke_vi:function(e,b){try{a.dynCall_vi(e,b)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_vii:function(e,b,c){try{a.dynCall_vii(e,b,c)}catch(l){if("number"!==typeof l&&"longjmp"!==l)throw l;a.setThrew(1,0)}},invoke_viii:function(e,b,c,d){try{a.dynCall_viii(e,b,c,d)}catch(E){if("number"!==typeof E&&
|
||||
"longjmp"!==E)throw E;a.setThrew(1,0)}},invoke_viiii:function(e,b,c,d,f){try{a.dynCall_viiii(e,b,c,d,f)}catch(ta){if("number"!==typeof ta&&"longjmp"!==ta)throw ta;a.setThrew(1,0)}},invoke_viiiii:function(e,b,c,d,f,g){try{a.dynCall_viiiii(e,b,c,d,f,g)}catch(ia){if("number"!==typeof ia&&"longjmp"!==ia)throw ia;a.setThrew(1,0)}},invoke_viiiiii:function(e,b,c,d,f,g,h){try{a.dynCall_viiiiii(e,b,c,d,f,g,h)}catch(ja){if("number"!==typeof ja&&"longjmp"!==ja)throw ja;a.setThrew(1,0)}},__ZSt18uncaught_exceptionv:na,
|
||||
___cxa_allocate_exception:function(a){return Ta(a)},___cxa_begin_catch:function(a){var b=A.infos[a];b&&!b.caught&&(b.caught=!0,na.uncaught_exception--);b&&(b.rethrown=!1);A.caught.push(a);A.addRef(A.deAdjust(a));return a},___cxa_find_matching_catch:qa,___cxa_pure_virtual:function(){ua=!0;throw"Pure virtual function called!";},___cxa_throw:function(a,b,c){A.infos[a]={ptr:a,adjusted:a,type:b,destructor:c,refcount:0,caught:!1,rethrown:!1};A.last=a;"uncaught_exception"in na?na.uncaught_exception++:na.uncaught_exception=
|
||||
1;throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},___gxx_personality_v0:function(){},___resumeException:function(a){A.last||(A.last=a);throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},___setErrNo:function(e){a.___errno_location&&(x[a.___errno_location()>>2]=e);return e},
|
||||
___syscall140:function(a,b){v.varargs=b;try{var c=v.getStreamFromFD();v.get();var e=v.get(),d=v.get(),f=v.get();FS.llseek(c,e,f);x[d>>2]=c.position;c.getdents&&0===e&&0===f&&(c.getdents=null);return 0}catch(ia){return"undefined"!==typeof FS&&ia instanceof FS.ErrnoError||W(ia),-ia.errno}},___syscall146:Q,___syscall54:function(a,b){v.varargs=b;return 0},___syscall6:function(a,b){v.varargs=b;try{var c=v.getStreamFromFD();FS.close(c);return 0}catch(l){return"undefined"!==typeof FS&&l instanceof FS.ErrnoError||
|
||||
W(l),-l.errno}},_abort:function(){a.abort()},_emscripten_memcpy_big:function(a,b,c){T.set(T.subarray(b,b+c),a);return a},_pthread_getspecific:function(a){return ya[a]||0},_pthread_key_create:function(a,b){if(0==a)return 22;x[a>>2]=La;ya[La]=0;La++;return 0},_pthread_once:ra,_pthread_setspecific:function(a,b){if(!(a in ya))return 22;ya[a]=b;return 0},DYNAMICTOP_PTR:ba,tempDoublePtr:Eb,ABORT:ua,STACKTOP:U,STACK_MAX:xa};var eb=a.asm(a.asmGlobalArg,a.asmLibraryArg,F);a.asm=eb;a.___cxa_can_catch=function(){return a.asm.___cxa_can_catch.apply(null,
|
||||
arguments)};a.___cxa_is_pointer_type=function(){return a.asm.___cxa_is_pointer_type.apply(null,arguments)};var pb=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,arguments)},Fb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},
|
||||
Gb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null,arguments)},Hb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,arguments)},sb=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,
|
||||
arguments)},Ib=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},Jb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,arguments)},Kb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,
|
||||
arguments)},Lb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)},Mb=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,arguments)},rb=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return a.asm._emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,
|
||||
arguments)},Nb=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm._emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},Ob=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm._emscripten_bind_AttributeTransformData_transform_type_0.apply(null,arguments)},yb=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm._emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},Pb=a._emscripten_bind_DecoderBuffer_Init_2=
|
||||
function(){return a.asm._emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},Qb=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm._emscripten_bind_DecoderBuffer___destroy___0.apply(null,arguments)},Rb=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null,arguments)},Sb=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,
|
||||
arguments)},zb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm._emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},Tb=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeByUniqueId_2.apply(null,arguments)},Ub=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Vb=a._emscripten_bind_Decoder_GetAttributeFloat_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Wb=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},Xb=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,arguments)},Yb=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeId_2.apply(null,
|
||||
arguments)},Zb=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3.apply(null,arguments)},$b=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3.apply(null,arguments)},ac=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3.apply(null,arguments)},
|
||||
bc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3.apply(null,arguments)},cc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null,arguments)},dc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3.apply(null,arguments)},ec=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3.apply(null,arguments)},fc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3.apply(null,arguments)},gc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return a.asm._emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},hc=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=function(){return a.asm._emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,
|
||||
arguments)},ic=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm._emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},jc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm._emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},kc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,arguments)},lc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm._emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,
|
||||
arguments)},mc=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm._emscripten_bind_Decoder___destroy___0.apply(null,arguments)},wb=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null,arguments)},nc=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},oc=a._emscripten_bind_DracoFloat32Array___destroy___0=
|
||||
function(){return a.asm._emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},pc=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_size_0.apply(null,arguments)},vb=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return a.asm._emscripten_bind_DracoInt16Array_DracoInt16Array_0.apply(null,arguments)},qc=a._emscripten_bind_DracoInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt16Array_GetValue_1.apply(null,
|
||||
arguments)},rc=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt16Array___destroy___0.apply(null,arguments)},sc=a._emscripten_bind_DracoInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoInt16Array_size_0.apply(null,arguments)},Bb=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm._emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,arguments)},tc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt32Array_GetValue_1.apply(null,
|
||||
arguments)},uc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},vc=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoInt32Array_size_0.apply(null,arguments)},tb=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return a.asm._emscripten_bind_DracoInt8Array_DracoInt8Array_0.apply(null,arguments)},wc=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt8Array_GetValue_1.apply(null,
|
||||
arguments)},xc=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt8Array___destroy___0.apply(null,arguments)},yc=a._emscripten_bind_DracoInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoInt8Array_size_0.apply(null,arguments)},lb=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0.apply(null,arguments)},zc=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt16Array_GetValue_1.apply(null,
|
||||
arguments)},Ac=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt16Array___destroy___0.apply(null,arguments)},Bc=a._emscripten_bind_DracoUInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_size_0.apply(null,arguments)},ob=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0.apply(null,arguments)},Cc=a._emscripten_bind_DracoUInt32Array_GetValue_1=
|
||||
function(){return a.asm._emscripten_bind_DracoUInt32Array_GetValue_1.apply(null,arguments)},Dc=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt32Array___destroy___0.apply(null,arguments)},Ec=a._emscripten_bind_DracoUInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_size_0.apply(null,arguments)},nb=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0.apply(null,
|
||||
arguments)},Fc=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt8Array_GetValue_1.apply(null,arguments)},Gc=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt8Array___destroy___0.apply(null,arguments)},Hc=a._emscripten_bind_DracoUInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_size_0.apply(null,arguments)},xb=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm._emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null,
|
||||
arguments)},Ic=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm._emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},Ab=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm._emscripten_bind_Mesh_Mesh_0.apply(null,arguments)},Jc=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm._emscripten_bind_Mesh___destroy___0.apply(null,arguments)},Kc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm._emscripten_bind_Mesh_num_attributes_0.apply(null,
|
||||
arguments)},Lc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm._emscripten_bind_Mesh_num_faces_0.apply(null,arguments)},Mc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm._emscripten_bind_Mesh_num_points_0.apply(null,arguments)},Nc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},Oc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetEntryName_2.apply(null,
|
||||
arguments)},Pc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},Qc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},Rc=a._emscripten_bind_MetadataQuerier_HasDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasDoubleEntry_2.apply(null,arguments)},Sc=a._emscripten_bind_MetadataQuerier_HasEntry_2=
|
||||
function(){return a.asm._emscripten_bind_MetadataQuerier_HasEntry_2.apply(null,arguments)},Tc=a._emscripten_bind_MetadataQuerier_HasIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasIntEntry_2.apply(null,arguments)},Uc=a._emscripten_bind_MetadataQuerier_HasStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasStringEntry_2.apply(null,arguments)},ub=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm._emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,
|
||||
arguments)},Vc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return a.asm._emscripten_bind_MetadataQuerier_NumEntries_1.apply(null,arguments)},Wc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm._emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},Cb=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm._emscripten_bind_Metadata_Metadata_0.apply(null,arguments)},Xc=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm._emscripten_bind_Metadata___destroy___0.apply(null,
|
||||
arguments)},Yc=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm._emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},qb=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return a.asm._emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},Zc=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm._emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},$c=a._emscripten_bind_PointAttribute_attribute_type_0=
|
||||
function(){return a.asm._emscripten_bind_PointAttribute_attribute_type_0.apply(null,arguments)},ad=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},bd=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_stride_0.apply(null,arguments)},cd=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm._emscripten_bind_PointAttribute_data_type_0.apply(null,
|
||||
arguments)},dd=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm._emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},ed=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm._emscripten_bind_PointAttribute_num_components_0.apply(null,arguments)},fd=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm._emscripten_bind_PointAttribute_size_0.apply(null,arguments)},gd=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm._emscripten_bind_PointAttribute_unique_id_0.apply(null,
|
||||
arguments)},mb=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm._emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},hd=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm._emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},id=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm._emscripten_bind_PointCloud_num_attributes_0.apply(null,arguments)},jd=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm._emscripten_bind_PointCloud_num_points_0.apply(null,
|
||||
arguments)},kd=a._emscripten_bind_Status___destroy___0=function(){return a.asm._emscripten_bind_Status___destroy___0.apply(null,arguments)},ld=a._emscripten_bind_Status_code_0=function(){return a.asm._emscripten_bind_Status_code_0.apply(null,arguments)},md=a._emscripten_bind_Status_error_msg_0=function(){return a.asm._emscripten_bind_Status_error_msg_0.apply(null,arguments)},nd=a._emscripten_bind_Status_ok_0=function(){return a.asm._emscripten_bind_Status_ok_0.apply(null,arguments)},od=a._emscripten_bind_VoidPtr___destroy___0=
|
||||
function(){return a.asm._emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},pd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null,arguments)},qd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)},rd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=
|
||||
function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null,arguments)},sd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},td=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null,
|
||||
arguments)},ud=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},vd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},wd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},xd=
|
||||
a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)},yd=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},zd=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},Ad=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=
|
||||
function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},Bd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},Cd=a._emscripten_enum_draco_StatusCode_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_ERROR.apply(null,arguments)},Dd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return a.asm._emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,
|
||||
arguments)},Ed=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},Fd=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm._emscripten_enum_draco_StatusCode_OK.apply(null,arguments)},Gd=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},Hd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null,
|
||||
arguments)};a._emscripten_get_global_libc=function(){return a.asm._emscripten_get_global_libc.apply(null,arguments)};var Db=a._emscripten_replace_memory=function(){return a.asm._emscripten_replace_memory.apply(null,arguments)};a._free=function(){return a.asm._free.apply(null,arguments)};a._llvm_bswap_i32=function(){return a.asm._llvm_bswap_i32.apply(null,arguments)};var Ta=a._malloc=function(){return a.asm._malloc.apply(null,arguments)};a._memcpy=function(){return a.asm._memcpy.apply(null,arguments)};
|
||||
a._memmove=function(){return a.asm._memmove.apply(null,arguments)};a._memset=function(){return a.asm._memset.apply(null,arguments)};a._sbrk=function(){return a.asm._sbrk.apply(null,arguments)};a.establishStackSpace=function(){return a.asm.establishStackSpace.apply(null,arguments)};a.getTempRet0=function(){return a.asm.getTempRet0.apply(null,arguments)};a.runPostSets=function(){return a.asm.runPostSets.apply(null,arguments)};a.setTempRet0=function(){return a.asm.setTempRet0.apply(null,arguments)};
|
||||
a.setThrew=function(){return a.asm.setThrew.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};
|
||||
a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)};a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,
|
||||
arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};m.stackAlloc=a.stackAlloc;m.stackSave=a.stackSave;m.stackRestore=a.stackRestore;m.establishStackSpace=a.establishStackSpace;m.setTempRet0=a.setTempRet0;m.getTempRet0=a.getTempRet0;a.asm=eb;if(V)if("function"===typeof a.locateFile?V=a.locateFile(V):a.memoryInitializerPrefixURL&&(V=a.memoryInitializerPrefixURL+V),pa||wa){var Id=a.readBinary(V);T.set(Id,m.GLOBAL_BASE)}else{var gb=function(){a.readAsync(V,fb,
|
||||
function(){throw"could not load memory initializer "+V;})};la("memory initializer");var fb=function(d){d.byteLength&&(d=new Uint8Array(d));T.set(d,m.GLOBAL_BASE);a.memoryInitializerRequest&&delete a.memoryInitializerRequest.response;Na("memory initializer")};if(a.memoryInitializerRequest){var hb=function(){var d=a.memoryInitializerRequest,b=d.response;200!==d.status&&0!==d.status?(console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+d.status+", retrying "+
|
||||
V),gb()):fb(b)};a.memoryInitializerRequest.response?setTimeout(hb,0):a.memoryInitializerRequest.addEventListener("load",hb)}else gb()}a.then=function(d){if(a.calledRun)d(a);else{var b=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){b&&b();d(a)}}return a};ea.prototype=Error();ea.prototype.constructor=ea;var Za=null;sa=function b(){a.calledRun||Da();a.calledRun||(sa=b)};a.run=Da;a.exit=function(b,c){if(!c||!a.noExitRuntime){if(!a.noExitRuntime&&(ua=!0,U=void 0,u(db),a.onExit))a.onExit(b);pa&&
|
||||
process.exit(b);a.quit(b,new ea(b))}};var ab=[];a.abort=W;if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();Da();p.prototype=Object.create(p.prototype);p.prototype.constructor=p;p.prototype.__class__=p;p.__cache__={};a.WrapperObject=p;a.getCache=t;a.wrapPointer=X;a.castObject=function(a,c){return X(a.ptr,c)};a.NULL=X(0);a.destroy=function(a){if(!a.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";a.__destroy__();
|
||||
delete t(a.__class__)[a.ptr]};a.compare=function(a,c){return a.ptr===c.ptr};a.getPointer=function(a){return a.ptr};a.getClass=function(a){return a.__class__};var k={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(k.needed){for(var b=0;b<k.temps.length;b++)a._free(k.temps[b]);k.temps.length=0;a._free(k.buffer);k.buffer=0;k.size+=k.needed;k.needed=0}k.buffer||(k.size+=128,k.buffer=a._malloc(k.size),f(k.buffer));k.pos=0},alloc:function(b,c){f(k.buffer);b=b.length*c.BYTES_PER_ELEMENT;b=
|
||||
b+7&-8;k.pos+b>=k.size?(f(0<b),k.needed+=b,c=a._malloc(b),k.temps.push(c)):(c=k.buffer+k.pos,k.pos+=b);return c},copy:function(a,c,d){switch(c.BYTES_PER_ELEMENT){case 2:d>>=1;break;case 4:d>>=2;break;case 8:d>>=3}for(var b=0;b<a.length;b++)c[d+b]=a[b]}};B.prototype=Object.create(p.prototype);B.prototype.constructor=B;B.prototype.__class__=B;B.__cache__={};a.Status=B;B.prototype.code=B.prototype.code=function(){return ld(this.ptr)};B.prototype.ok=B.prototype.ok=function(){return!!nd(this.ptr)};B.prototype.error_msg=
|
||||
B.prototype.error_msg=function(){return n(md(this.ptr))};B.prototype.__destroy__=B.prototype.__destroy__=function(){kd(this.ptr)};G.prototype=Object.create(p.prototype);G.prototype.constructor=G;G.prototype.__class__=G;G.__cache__={};a.DracoUInt16Array=G;G.prototype.GetValue=G.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return zc(b,a)};G.prototype.size=G.prototype.size=function(){return Bc(this.ptr)};G.prototype.__destroy__=G.prototype.__destroy__=function(){Ac(this.ptr)};
|
||||
H.prototype=Object.create(p.prototype);H.prototype.constructor=H;H.prototype.__class__=H;H.__cache__={};a.PointCloud=H;H.prototype.num_attributes=H.prototype.num_attributes=function(){return id(this.ptr)};H.prototype.num_points=H.prototype.num_points=function(){return jd(this.ptr)};H.prototype.__destroy__=H.prototype.__destroy__=function(){hd(this.ptr)};I.prototype=Object.create(p.prototype);I.prototype.constructor=I;I.prototype.__class__=I;I.__cache__={};a.DracoUInt8Array=I;I.prototype.GetValue=
|
||||
I.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Fc(b,a)};I.prototype.size=I.prototype.size=function(){return Hc(this.ptr)};I.prototype.__destroy__=I.prototype.__destroy__=function(){Gc(this.ptr)};J.prototype=Object.create(p.prototype);J.prototype.constructor=J;J.prototype.__class__=J;J.__cache__={};a.DracoUInt32Array=J;J.prototype.GetValue=J.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Cc(b,a)};J.prototype.size=J.prototype.size=
|
||||
function(){return Ec(this.ptr)};J.prototype.__destroy__=J.prototype.__destroy__=function(){Dc(this.ptr)};K.prototype=Object.create(p.prototype);K.prototype.constructor=K;K.prototype.__class__=K;K.__cache__={};a.AttributeOctahedronTransform=K;K.prototype.InitFromAttribute=K.prototype.InitFromAttribute=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!Fb(b,a)};K.prototype.quantization_bits=K.prototype.quantization_bits=function(){return Hb(this.ptr)};K.prototype.__destroy__=K.prototype.__destroy__=
|
||||
function(){Gb(this.ptr)};q.prototype=Object.create(p.prototype);q.prototype.constructor=q;q.prototype.__class__=q;q.__cache__={};a.PointAttribute=q;q.prototype.size=q.prototype.size=function(){return fd(this.ptr)};q.prototype.GetAttributeTransformData=q.prototype.GetAttributeTransformData=function(){return X(Yc(this.ptr),P)};q.prototype.attribute_type=q.prototype.attribute_type=function(){return $c(this.ptr)};q.prototype.data_type=q.prototype.data_type=function(){return cd(this.ptr)};q.prototype.num_components=
|
||||
q.prototype.num_components=function(){return ed(this.ptr)};q.prototype.normalized=q.prototype.normalized=function(){return!!dd(this.ptr)};q.prototype.byte_stride=q.prototype.byte_stride=function(){return bd(this.ptr)};q.prototype.byte_offset=q.prototype.byte_offset=function(){return ad(this.ptr)};q.prototype.unique_id=q.prototype.unique_id=function(){return gd(this.ptr)};q.prototype.__destroy__=q.prototype.__destroy__=function(){Zc(this.ptr)};P.prototype=Object.create(p.prototype);P.prototype.constructor=
|
||||
P;P.prototype.__class__=P;P.__cache__={};a.AttributeTransformData=P;P.prototype.transform_type=P.prototype.transform_type=function(){return Ob(this.ptr)};P.prototype.__destroy__=P.prototype.__destroy__=function(){Nb(this.ptr)};z.prototype=Object.create(p.prototype);z.prototype.constructor=z;z.prototype.__class__=z;z.__cache__={};a.AttributeQuantizationTransform=z;z.prototype.InitFromAttribute=z.prototype.InitFromAttribute=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!Ib(b,a)};
|
||||
z.prototype.quantization_bits=z.prototype.quantization_bits=function(){return Lb(this.ptr)};z.prototype.min_value=z.prototype.min_value=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Kb(b,a)};z.prototype.range=z.prototype.range=function(){return Mb(this.ptr)};z.prototype.__destroy__=z.prototype.__destroy__=function(){Jb(this.ptr)};L.prototype=Object.create(p.prototype);L.prototype.constructor=L;L.prototype.__class__=L;L.__cache__={};a.DracoInt8Array=L;L.prototype.GetValue=L.prototype.GetValue=
|
||||
function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return wc(b,a)};L.prototype.size=L.prototype.size=function(){return yc(this.ptr)};L.prototype.__destroy__=L.prototype.__destroy__=function(){xc(this.ptr)};r.prototype=Object.create(p.prototype);r.prototype.constructor=r;r.prototype.__class__=r;r.__cache__={};a.MetadataQuerier=r;r.prototype.HasEntry=r.prototype.HasEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return!!Sc(b,
|
||||
a,c)};r.prototype.HasIntEntry=r.prototype.HasIntEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return!!Tc(b,a,c)};r.prototype.GetIntEntry=r.prototype.GetIntEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return Pc(b,a,c)};r.prototype.HasDoubleEntry=r.prototype.HasDoubleEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===
|
||||
typeof c?c.ptr:Y(c);return!!Rc(b,a,c)};r.prototype.GetDoubleEntry=r.prototype.GetDoubleEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return Nc(b,a,c)};r.prototype.HasStringEntry=r.prototype.HasStringEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return!!Uc(b,a,c)};r.prototype.GetStringEntry=r.prototype.GetStringEntry=function(a,c){var b=this.ptr;k.prepare();
|
||||
a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return n(Qc(b,a,c))};r.prototype.NumEntries=r.prototype.NumEntries=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Vc(b,a)};r.prototype.GetEntryName=r.prototype.GetEntryName=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return n(Oc(b,a,c))};r.prototype.__destroy__=r.prototype.__destroy__=function(){Wc(this.ptr)};M.prototype=Object.create(p.prototype);M.prototype.constructor=
|
||||
M;M.prototype.__class__=M;M.__cache__={};a.DracoInt16Array=M;M.prototype.GetValue=M.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return qc(b,a)};M.prototype.size=M.prototype.size=function(){return sc(this.ptr)};M.prototype.__destroy__=M.prototype.__destroy__=function(){rc(this.ptr)};N.prototype=Object.create(p.prototype);N.prototype.constructor=N;N.prototype.__class__=N;N.__cache__={};a.DracoFloat32Array=N;N.prototype.GetValue=N.prototype.GetValue=function(a){var b=
|
||||
this.ptr;a&&"object"===typeof a&&(a=a.ptr);return nc(b,a)};N.prototype.size=N.prototype.size=function(){return pc(this.ptr)};N.prototype.__destroy__=N.prototype.__destroy__=function(){oc(this.ptr)};Z.prototype=Object.create(p.prototype);Z.prototype.constructor=Z;Z.prototype.__class__=Z;Z.__cache__={};a.GeometryAttribute=Z;Z.prototype.__destroy__=Z.prototype.__destroy__=function(){Ic(this.ptr)};R.prototype=Object.create(p.prototype);R.prototype.constructor=R;R.prototype.__class__=R;R.__cache__={};
|
||||
a.DecoderBuffer=R;R.prototype.Init=R.prototype.Init=function(a,c){var b=this.ptr;k.prepare();if("object"==typeof a&&"object"===typeof a){var d=k.alloc(a,fa);k.copy(a,fa,d);a=d}c&&"object"===typeof c&&(c=c.ptr);Pb(b,a,c)};R.prototype.__destroy__=R.prototype.__destroy__=function(){Qb(this.ptr)};h.prototype=Object.create(p.prototype);h.prototype.constructor=h;h.prototype.__class__=h;h.__cache__={};a.Decoder=h;h.prototype.GetEncodedGeometryType=h.prototype.GetEncodedGeometryType=function(a){var b=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);return hc(b,a)};h.prototype.DecodeBufferToPointCloud=h.prototype.DecodeBufferToPointCloud=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(Sb(b,a,c),B)};h.prototype.DecodeBufferToMesh=h.prototype.DecodeBufferToMesh=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(Rb(b,a,c),B)};h.prototype.GetAttributeId=h.prototype.GetAttributeId=function(a,c){var b=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return Yb(b,a,c)};h.prototype.GetAttributeIdByName=h.prototype.GetAttributeIdByName=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return Xb(b,a,c)};h.prototype.GetAttributeIdByMetadataEntry=h.prototype.GetAttributeIdByMetadataEntry=function(a,c,d){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);d=d&&"object"===typeof d?
|
||||
d.ptr:Y(d);return Wb(b,a,c,d)};h.prototype.GetAttribute=h.prototype.GetAttribute=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(gc(b,a,c),q)};h.prototype.GetAttributeByUniqueId=h.prototype.GetAttributeByUniqueId=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(Tb(b,a,c),q)};h.prototype.GetMetadata=h.prototype.GetMetadata=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return X(jc(b,
|
||||
a),S)};h.prototype.GetAttributeMetadata=h.prototype.GetAttributeMetadata=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(cc(b,a,c),S)};h.prototype.GetFaceFromMesh=h.prototype.GetFaceFromMesh=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!ic(b,a,c,d)};h.prototype.GetTriangleStripsFromMesh=h.prototype.GetTriangleStripsFromMesh=function(a,c){var b=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return kc(b,a,c)};h.prototype.GetAttributeFloat=h.prototype.GetAttributeFloat=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Vb(b,a,c,d)};h.prototype.GetAttributeFloatForAllPoints=h.prototype.GetAttributeFloatForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&
|
||||
(d=d.ptr);return!!Ub(b,a,c,d)};h.prototype.GetAttributeIntForAllPoints=h.prototype.GetAttributeIntForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!bc(b,a,c,d)};h.prototype.GetAttributeInt8ForAllPoints=h.prototype.GetAttributeInt8ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!ac(b,a,c,d)};
|
||||
h.prototype.GetAttributeUInt8ForAllPoints=h.prototype.GetAttributeUInt8ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!fc(b,a,c,d)};h.prototype.GetAttributeInt16ForAllPoints=h.prototype.GetAttributeInt16ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Zb(b,a,c,d)};h.prototype.GetAttributeUInt16ForAllPoints=
|
||||
h.prototype.GetAttributeUInt16ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!dc(b,a,c,d)};h.prototype.GetAttributeInt32ForAllPoints=h.prototype.GetAttributeInt32ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!$b(b,a,c,d)};h.prototype.GetAttributeUInt32ForAllPoints=h.prototype.GetAttributeUInt32ForAllPoints=
|
||||
function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!ec(b,a,c,d)};h.prototype.SkipAttributeTransform=h.prototype.SkipAttributeTransform=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);lc(b,a)};h.prototype.__destroy__=h.prototype.__destroy__=function(){mc(this.ptr)};C.prototype=Object.create(p.prototype);C.prototype.constructor=C;C.prototype.__class__=C;C.__cache__={};a.Mesh=C;C.prototype.num_faces=
|
||||
C.prototype.num_faces=function(){return Lc(this.ptr)};C.prototype.num_attributes=C.prototype.num_attributes=function(){return Kc(this.ptr)};C.prototype.num_points=C.prototype.num_points=function(){return Mc(this.ptr)};C.prototype.__destroy__=C.prototype.__destroy__=function(){Jc(this.ptr)};ca.prototype=Object.create(p.prototype);ca.prototype.constructor=ca;ca.prototype.__class__=ca;ca.__cache__={};a.VoidPtr=ca;ca.prototype.__destroy__=ca.prototype.__destroy__=function(){od(this.ptr)};O.prototype=
|
||||
Object.create(p.prototype);O.prototype.constructor=O;O.prototype.__class__=O;O.__cache__={};a.DracoInt32Array=O;O.prototype.GetValue=O.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return tc(b,a)};O.prototype.size=O.prototype.size=function(){return vc(this.ptr)};O.prototype.__destroy__=O.prototype.__destroy__=function(){uc(this.ptr)};S.prototype=Object.create(p.prototype);S.prototype.constructor=S;S.prototype.__class__=S;S.__cache__={};a.Metadata=S;S.prototype.__destroy__=
|
||||
S.prototype.__destroy__=function(){Xc(this.ptr)};(function(){function b(){a.OK=Fd();a.ERROR=Cd();a.IO_ERROR=Ed();a.INVALID_PARAMETER=Dd();a.UNSUPPORTED_VERSION=Hd();a.UNKNOWN_VERSION=Gd();a.INVALID_GEOMETRY_TYPE=td();a.POINT_CLOUD=ud();a.TRIANGULAR_MESH=vd();a.ATTRIBUTE_INVALID_TRANSFORM=pd();a.ATTRIBUTE_NO_TRANSFORM=qd();a.ATTRIBUTE_QUANTIZATION_TRANSFORM=sd();a.ATTRIBUTE_OCTAHEDRON_TRANSFORM=rd();a.INVALID=yd();a.POSITION=Ad();a.NORMAL=zd();a.COLOR=wd();a.TEX_COORD=Bd();a.GENERIC=xd()}a.calledRun?
|
||||
b():Xa.unshift(b)})();if("function"===typeof a.onModuleParsed)a.onModuleParsed();return d};"object"===typeof module&&module.exports&&(module.exports=DracoDecoderModule);
|
||||
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(d,k,f){d!=Array.prototype&&d!=Object.prototype&&(d[k]=f.value)};$jscomp.getGlobal=function(d){return"undefined"!=typeof window&&window===d?d:"undefined"!=typeof global&&null!=global?global:d};$jscomp.global=$jscomp.getGlobal(this);
|
||||
$jscomp.polyfill=function(d,k,f,v){if(k){f=$jscomp.global;d=d.split(".");for(v=0;v<d.length-1;v++){var h=d[v];h in f||(f[h]={});f=f[h]}d=d[d.length-1];v=f[d];k=k(v);k!=v&&null!=k&&$jscomp.defineProperty(f,d,{configurable:!0,writable:!0,value:k})}};$jscomp.polyfill("Math.imul",function(d){return d?d:function(d,f){d=Number(d);f=Number(f);var k=d&65535,h=f&65535;return k*h+((d>>>16&65535)*h+k*(f>>>16&65535)<<16>>>0)|0}},"es6","es3");
|
||||
$jscomp.polyfill("Math.clz32",function(d){return d?d:function(d){d=Number(d)>>>0;if(0===d)return 32;var f=0;0===(d&4294901760)&&(d<<=16,f+=16);0===(d&4278190080)&&(d<<=8,f+=8);0===(d&4026531840)&&(d<<=4,f+=4);0===(d&3221225472)&&(d<<=2,f+=2);0===(d&2147483648)&&f++;return f}},"es6","es3");$jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var f=Math.floor(Math.abs(d));return 0>d?-f:f}},"es6","es3");
|
||||
$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var d=0;return function(k){return $jscomp.SYMBOL_PREFIX+(k||"")+d++}}();
|
||||
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var d=$jscomp.global.Symbol.iterator;d||(d=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[d]&&$jscomp.defineProperty(Array.prototype,d,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(d){var k=0;return $jscomp.iteratorPrototype(function(){return k<d.length?{done:!1,value:d[k++]}:{done:!0}})};
|
||||
$jscomp.iteratorPrototype=function(d){$jscomp.initSymbolIterator();d={next:d};d[$jscomp.global.Symbol.iterator]=function(){return this};return d};$jscomp.makeIterator=function(d){$jscomp.initSymbolIterator();var k=d[Symbol.iterator];return k?k.call(d):$jscomp.arrayIterator(d)};$jscomp.FORCE_POLYFILL_PROMISE=!1;
|
||||
$jscomp.polyfill("Promise",function(d){function k(){this.batch_=null}function f(d){return d instanceof h?d:new h(function(r,f){r(d)})}if(d&&!$jscomp.FORCE_POLYFILL_PROMISE)return d;k.prototype.asyncExecute=function(d){null==this.batch_&&(this.batch_=[],this.asyncExecuteBatch_());this.batch_.push(d);return this};k.prototype.asyncExecuteBatch_=function(){var d=this;this.asyncExecuteFunction(function(){d.executeBatch_()})};var v=$jscomp.global.setTimeout;k.prototype.asyncExecuteFunction=function(d){v(d,
|
||||
0)};k.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var d=this.batch_;this.batch_=[];for(var B=0;B<d.length;++B){var f=d[B];delete d[B];try{f()}catch(w){this.asyncThrow_(w)}}}this.batch_=null};k.prototype.asyncThrow_=function(d){this.asyncExecuteFunction(function(){throw d;})};var h=function(d){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var r=this.createResolveAndReject_();try{d(r.resolve,r.reject)}catch(Y){r.reject(Y)}};h.prototype.createResolveAndReject_=
|
||||
function(){function d(d){return function(r){h||(h=!0,d.call(f,r))}}var f=this,h=!1;return{resolve:d(this.resolveTo_),reject:d(this.reject_)}};h.prototype.resolveTo_=function(d){if(d===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(d instanceof h)this.settleSameAsPromise_(d);else{a:switch(typeof d){case "object":var f=null!=d;break a;case "function":f=!0;break a;default:f=!1}f?this.resolveToNonPromiseObj_(d):this.fulfill_(d)}};h.prototype.resolveToNonPromiseObj_=function(d){var f=
|
||||
void 0;try{f=d.then}catch(Y){this.reject_(Y);return}"function"==typeof f?this.settleSameAsThenable_(f,d):this.fulfill_(d)};h.prototype.reject_=function(d){this.settle_(2,d)};h.prototype.fulfill_=function(d){this.settle_(1,d)};h.prototype.settle_=function(d,f){if(0!=this.state_)throw Error("Cannot settle("+d+", "+f|"): Promise already settled in state"+this.state_);this.state_=d;this.result_=f;this.executeOnSettledCallbacks_()};h.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var d=
|
||||
this.onSettledCallbacks_,f=0;f<d.length;++f)d[f].call(),d[f]=null;this.onSettledCallbacks_=null}};var ha=new k;h.prototype.settleSameAsPromise_=function(d){var f=this.createResolveAndReject_();d.callWhenSettled_(f.resolve,f.reject)};h.prototype.settleSameAsThenable_=function(d,f){var h=this.createResolveAndReject_();try{d.call(f,h.resolve,h.reject)}catch(w){h.reject(w)}};h.prototype.then=function(d,f){function k(d,f){return"function"==typeof d?function(f){try{w(d(f))}catch(O){r(O)}}:f}var w,r,B=new h(function(d,
|
||||
f){w=d;r=f});this.callWhenSettled_(k(d,w),k(f,r));return B};h.prototype.catch=function(d){return this.then(void 0,d)};h.prototype.callWhenSettled_=function(d,f){function h(){switch(k.state_){case 1:d(k.result_);break;case 2:f(k.result_);break;default:throw Error("Unexpected state: "+k.state_);}}var k=this;null==this.onSettledCallbacks_?ha.asyncExecute(h):this.onSettledCallbacks_.push(function(){ha.asyncExecute(h)})};h.resolve=f;h.reject=function(d){return new h(function(f,h){h(d)})};h.race=function(d){return new h(function(h,
|
||||
k){for(var w=$jscomp.makeIterator(d),r=w.next();!r.done;r=w.next())f(r.value).callWhenSettled_(h,k)})};h.all=function(d){var k=$jscomp.makeIterator(d),r=k.next();return r.done?f([]):new h(function(d,h){function w(f){return function(h){v[f]=h;B--;0==B&&d(v)}}var v=[],B=0;do v.push(void 0),B++,f(r.value).callWhenSettled_(w(v.length-1),h),r=k.next();while(!r.done)})};return h},"es6","es3");
|
||||
var DracoDecoderModule=function(d){function k(a,b){b||(b=16);return Math.ceil(a/b)*b}function f(a,b){a||O("Assertion failed: "+b)}function v(a,b){if(0===b||!a)return"";for(var c=0,e,d=0;;){e=W[a+d>>0];c|=e;if(0==e&&!b)break;d++;if(b&&d==b)break}b||(b=d);e="";if(128>c){for(;0<b;)c=String.fromCharCode.apply(String,W.subarray(a,a+Math.min(b,1024))),e=e?e+c:c,a+=1024,b-=1024;return e}return h(W,a)}function h(a,b){for(var c=b;a[c];)++c;if(16<c-b&&a.subarray&&Ia)return Ia.decode(a.subarray(b,c));for(c=
|
||||
"";;){var e=a[b++];if(!e)return c;if(e&128){var d=a[b++]&63;if(192==(e&224))c+=String.fromCharCode((e&31)<<6|d);else{var f=a[b++]&63;if(224==(e&240))e=(e&15)<<12|d<<6|f;else{var g=a[b++]&63;if(240==(e&248))e=(e&7)<<18|d<<12|f<<6|g;else{var h=a[b++]&63;if(248==(e&252))e=(e&3)<<24|d<<18|f<<12|g<<6|h;else{var k=a[b++]&63;e=(e&1)<<30|d<<24|f<<18|g<<12|h<<6|k}}}65536>e?c+=String.fromCharCode(e):(e-=65536,c+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else c+=String.fromCharCode(e)}}function ha(a,b){0<
|
||||
a%b&&(a+=b-a%b);return a}function r(){a.HEAP8=ia=new Int8Array(D);a.HEAP16=Ja=new Int16Array(D);a.HEAP32=E=new Int32Array(D);a.HEAPU8=W=new Uint8Array(D);a.HEAPU16=new Uint16Array(D);a.HEAPU32=new Uint32Array(D);a.HEAPF32=new Float32Array(D);a.HEAPF64=new Float64Array(D)}function B(e){for(;0<e.length;){var b=e.shift();if("function"==typeof b)b();else{var c=b.func;"number"===typeof c?void 0===b.arg?a.dynCall_v(c):a.dynCall_vi(c,b.arg):c(void 0===b.arg?null:b.arg)}}}function Y(a){return String.prototype.startsWith?
|
||||
a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}function w(){return!!w.uncaught_exception}function la(){var e=y.last;if(!e)return(sa(0),0)|0;var b=y.infos[e],c=b.type;if(!c)return(sa(0),e)|0;var p=Array.prototype.slice.call(arguments);a.___cxa_is_pointer_type(c);la.buffer||(la.buffer=Ka(4));E[la.buffer>>2]=e;e=la.buffer;for(var d=0;d<p.length;d++)if(p[d]&&a.___cxa_can_catch(p[d],c,e))return e=E[e>>2],b.adjusted=e,(sa(p[d]),e)|0;e=E[e>>2];
|
||||
return(sa(c),e)|0}function Z(e,b){u.varargs=b;try{var c=u.get(),p=u.get(),d=u.get();e=0;Z.buffers||(Z.buffers=[null,[],[]],Z.printChar=function(b,c){var e=Z.buffers[b];f(e);0===c||10===c?((1===b?a.print:a.printErr)(h(e,0)),e.length=0):e.push(c)});for(b=0;b<d;b++){for(var g=E[p+8*b>>2],k=E[p+(8*b+4)>>2],l=0;l<k;l++)Z.printChar(c,W[g+l]);e+=k}return e}catch(ya){return"undefined"!==typeof FS&&ya instanceof FS.ErrnoError||O(ya),-ya.errno}}function ma(e,b){ma.seen||(ma.seen={});e in ma.seen||(a.dynCall_v(b),
|
||||
ma.seen[e]=1)}function na(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}function wa(e){function b(){if(!a.calledRun&&(a.calledRun=!0,!oa)){La||(La=!0,B(Ma));B(Na);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Oa.unshift(a.postRun.shift());B(Oa)}}if(!(0<ea)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Pa.unshift(a.preRun.shift());
|
||||
B(Pa);0<ea||a.calledRun||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1);b()},1)):b())}}function O(e){if(a.onAbort)a.onAbort(e);void 0!==e?(a.print(e),a.printErr(e),e=JSON.stringify(e)):e="";oa=!0;throw"abort("+e+"). Build with -s ASSERTIONS=1 for more info.";}function m(){}function t(a){return(a||m).__cache__}function T(a,b){var c=t(b),e=c[a];if(e)return e;e=Object.create((b||m).prototype);e.ptr=a;return c[a]=e}function U(a){if("string"===typeof a){for(var b=
|
||||
0,c=0;c<a.length;++c){var e=a.charCodeAt(c);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++c)&1023);127>=e?++b:b=2047>=e?b+2:65535>=e?b+3:2097151>=e?b+4:67108863>=e?b+5:b+6}b=Array(b+1);c=0;e=b.length;if(0<e){e=c+e-1;for(var d=0;d<a.length;++d){var f=a.charCodeAt(d);55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++d)&1023);if(127>=f){if(c>=e)break;b[c++]=f}else{if(2047>=f){if(c+1>=e)break;b[c++]=192|f>>6}else{if(65535>=f){if(c+2>=e)break;b[c++]=224|f>>12}else{if(2097151>=f){if(c+
|
||||
3>=e)break;b[c++]=240|f>>18}else{if(67108863>=f){if(c+4>=e)break;b[c++]=248|f>>24}else{if(c+5>=e)break;b[c++]=252|f>>30;b[c++]=128|f>>24&63}b[c++]=128|f>>18&63}b[c++]=128|f>>12&63}b[c++]=128|f>>6&63}b[c++]=128|f&63}}b[c]=0}a=l.alloc(b,ia);l.copy(b,ia,a)}return a}function z(){throw"cannot construct a Status, no constructor in IDL";}function F(){this.ptr=Wa();t(F)[this.ptr]=this}function G(){this.ptr=Xa();t(G)[this.ptr]=this}function H(){this.ptr=Ya();t(H)[this.ptr]=this}function I(){this.ptr=Za();
|
||||
t(I)[this.ptr]=this}function J(){this.ptr=$a();t(J)[this.ptr]=this}function n(){this.ptr=ab();t(n)[this.ptr]=this}function P(){this.ptr=bb();t(P)[this.ptr]=this}function x(){this.ptr=cb();t(x)[this.ptr]=this}function K(){this.ptr=db();t(K)[this.ptr]=this}function q(){this.ptr=eb();t(q)[this.ptr]=this}function L(){this.ptr=fb();t(L)[this.ptr]=this}function M(){this.ptr=gb();t(M)[this.ptr]=this}function V(){this.ptr=hb();t(V)[this.ptr]=this}function Q(){this.ptr=ib();t(Q)[this.ptr]=this}function g(){this.ptr=
|
||||
jb();t(g)[this.ptr]=this}function C(){this.ptr=kb();t(C)[this.ptr]=this}function X(){throw"cannot construct a VoidPtr, no constructor in IDL";}function N(){this.ptr=lb();t(N)[this.ptr]=this}function R(){this.ptr=mb();t(R)[this.ptr]=this}d=d||{};var a="undefined"!==typeof d?d:{},Qa=!1,Ra=!1;a.onRuntimeInitialized=function(){Qa=!0;if(Ra&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Ra=!0;if(Qa&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=
|
||||
function(a){if("string"!==typeof a)return!1;a=a.split(".");return 2>a.length||3<a.length?!1:1==a[0]&&0<=a[1]&&3>=a[1]?!0:0!=a[0]||10<a[1]?!1:!0};var pa={},aa;for(aa in a)a.hasOwnProperty(aa)&&(pa[aa]=a[aa]);a.arguments=[];a.thisProgram="./this.program";a.quit=function(a,b){throw b;};a.preRun=[];a.postRun=[];var ja=!1,fa=!1,qa=!1,za=!1;if(a.ENVIRONMENT)if("WEB"===a.ENVIRONMENT)ja=!0;else if("WORKER"===a.ENVIRONMENT)fa=!0;else if("NODE"===a.ENVIRONMENT)qa=!0;else if("SHELL"===a.ENVIRONMENT)za=!0;else throw Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.");
|
||||
else ja="object"===typeof window,fa="function"===typeof importScripts,qa="object"===typeof process&&"function"===typeof require&&!ja&&!fa,za=!ja&&!qa&&!fa;if(qa){var Aa,Ba;a.read=function(a,b){Aa||(Aa=require("fs"));Ba||(Ba=require("path"));a=Ba.normalize(a);a=Aa.readFileSync(a);return b?a:a.toString()};a.readBinary=function(e){e=a.read(e,!0);e.buffer||(e=new Uint8Array(e));f(e.buffer);return e};1<process.argv.length&&(a.thisProgram=process.argv[1].replace(/\\/g,"/"));a.arguments=process.argv.slice(2);
|
||||
process.on("uncaughtException",function(a){if(!(a instanceof na))throw a;});process.on("unhandledRejection",function(a,b){process.exit(1)});a.inspect=function(){return"[Emscripten Module object]"}}else if(za)"undefined"!=typeof read&&(a.read=function(a){return read(a)}),a.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");f("object"===typeof a);return a},"undefined"!=typeof scriptArgs?a.arguments=scriptArgs:"undefined"!=typeof arguments&&
|
||||
(a.arguments=arguments),"function"===typeof quit&&(a.quit=function(a,b){quit(a)});else if(ja||fa)a.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},fa&&(a.readBinary=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),a.readAsync=function(a,b,c){var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=function(){200==e.status||0==e.status&&e.response?
|
||||
b(e.response):c()};e.onerror=c;e.send(null)},a.setWindowTitle=function(a){document.title=a};a.print="undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null;a.printErr="undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||a.print;a.print=a.print;a.printErr=a.printErr;for(aa in pa)pa.hasOwnProperty(aa)&&(a[aa]=pa[aa]);pa=void 0;var oa=0,Ia="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;"undefined"!==typeof TextDecoder&&
|
||||
new TextDecoder("utf-16le");var ia,W,Ja,E,ba,Ca,ta,ua,Da,ka;var Ea=ba=Ca=ta=ua=Da=ka=0;var Sa=!1;a.reallocBuffer||(a.reallocBuffer=function(a){try{if(ArrayBuffer.transfer)var b=ArrayBuffer.transfer(D,a);else{var c=ia;b=new ArrayBuffer(a);(new Int8Array(b)).set(c)}}catch(p){return!1}return nb(b)?b:!1});try{var Ta=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);Ta(new ArrayBuffer(4))}catch(e){Ta=function(a){return a.byteLength}}var Fa=a.TOTAL_STACK||
|
||||
5242880,A=a.TOTAL_MEMORY||16777216;A<Fa&&a.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+A+"! (TOTAL_STACK="+Fa+")");if(a.buffer)var D=a.buffer;else"object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(a.wasmMemory=new WebAssembly.Memory({initial:A/65536}),D=a.wasmMemory.buffer):D=new ArrayBuffer(A),a.buffer=D;r();E[0]=1668509029;Ja[1]=25459;if(115!==W[2]||99!==W[3])throw"Runtime error: expected the system to be little-endian!";var Pa=[],Ma=[],Na=[],ob=[],Oa=[],
|
||||
La=!1,pb=Math.floor,ea=0,Ga=null,ra=null;a.preloadedImages={};a.preloadedAudios={};(function(){function e(){try{if(a.wasmBinary)return new Uint8Array(a.wasmBinary);if(a.readBinary)return a.readBinary(f);throw"on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)";}catch(Va){O(Va)}}function b(){return a.wasmBinary||!ja&&!fa||"function"!==typeof fetch?new Promise(function(a,b){a(e())}):fetch(f,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+
|
||||
f+"'";return a.arrayBuffer()}).catch(function(){return e()})}function c(c,e,d){function p(b,c){k=b.exports;k.memory&&(b=k.memory,c=a.buffer,b.byteLength<c.byteLength&&a.printErr("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),c=new Int8Array(c),(new Int8Array(b)).set(c),a.buffer=D=b,r());a.asm=k;a.usingWasm=!0;ea--;a.monitorRunDependencies&&a.monitorRunDependencies(ea);0==ea&&(null!==Ga&&(clearInterval(Ga),Ga=null),ra&&(b=ra,ra=null,b()))}
|
||||
function g(a){p(a.instance,a.module)}function S(c){b().then(function(a){return WebAssembly.instantiate(a,h)}).then(c).catch(function(b){a.printErr("failed to asynchronously prepare wasm: "+b);O(b)})}if("object"!==typeof WebAssembly)return a.printErr("no native wasm support detected"),!1;if(!(a.wasmMemory instanceof WebAssembly.Memory))return a.printErr("no native wasm Memory in use"),!1;e.memory=a.wasmMemory;h.global={NaN:NaN,Infinity:Infinity};h["global.Math"]=Math;h.env=e;ea++;a.monitorRunDependencies&&
|
||||
a.monitorRunDependencies(ea);if(a.instantiateWasm)try{return a.instantiateWasm(h,p)}catch(qb){return a.printErr("Module.instantiateWasm callback failed with error: "+qb),!1}a.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||Y(f)||"function"!==typeof fetch?S(g):WebAssembly.instantiateStreaming(fetch(f,{credentials:"same-origin"}),h).then(g).catch(function(b){a.printErr("wasm streaming compile failed: "+b);a.printErr("falling back to ArrayBuffer instantiation");S(g)});return{}}var d=
|
||||
"draco_decoder.wast",f="draco_decoder.wasm",g="draco_decoder.temp.asm.js";"function"===typeof a.locateFile&&(Y(d)||(d=a.locateFile(d)),Y(f)||(f=a.locateFile(f)),Y(g)||(g=a.locateFile(g)));var h={global:null,env:null,asm2wasm:{"f64-rem":function(a,b){return a%b},"debugger":function(){debugger}},parent:a},k=null;a.asmPreload=a.asm;var l=a.reallocBuffer;a.reallocBuffer=function(b){if("asmjs"===m)var c=l(b);else a:{b=ha(b,a.usingWasm?65536:16777216);var e=a.buffer.byteLength;if(a.usingWasm)try{c=-1!==
|
||||
a.wasmMemory.grow((b-e)/65536)?a.buffer=a.wasmMemory.buffer:null;break a}catch(vd){c=null;break a}c=void 0}return c};var m="";a.asm=function(b,e,d){if(!e.table){var p=a.wasmTableSize;void 0===p&&(p=1024);var f=a.wasmMaxTableSize;e.table="object"===typeof WebAssembly&&"function"===typeof WebAssembly.Table?void 0!==f?new WebAssembly.Table({initial:p,maximum:f,element:"anyfunc"}):new WebAssembly.Table({initial:p,element:"anyfunc"}):Array(p);a.wasmTable=e.table}e.memoryBase||(e.memoryBase=a.STATIC_BASE);
|
||||
e.tableBase||(e.tableBase=0);(b=c(b,e,d))||O("no binaryen method succeeded. consider enabling more options, like interpreting, if you want that: https://github.com/kripken/emscripten/wiki/WebAssembly#binaryen-methods");return b}})();Ea=1024;ba=Ea+19408;Ma.push();a.STATIC_BASE=Ea;a.STATIC_BUMP=19408;var rb=ba;ba+=16;var y={last:0,caught:[],infos:{},deAdjust:function(a){if(!a||y.infos[a])return a;for(var b in y.infos)if(y.infos[b].adjusted===a)return b;return a},addRef:function(a){a&&y.infos[a].refcount++},
|
||||
decRef:function(e){if(e){var b=y.infos[e];f(0<b.refcount);b.refcount--;0!==b.refcount||b.rethrown||(b.destructor&&a.dynCall_vi(b.destructor,e),delete y.infos[e],___cxa_free_exception(e))}},clearRef:function(a){a&&(y.infos[a].refcount=0)}},u={varargs:0,get:function(a){u.varargs+=4;return E[u.varargs-4>>2]},getStr:function(){return v(u.get())},get64:function(){var a=u.get(),b=u.get();0<=a?f(0===b):f(-1===b);return a},getZero:function(){f(0===u.get())}},va={},Ha=1;ka=function(a){f(!Sa);var b=ba;ba=ba+
|
||||
a+15&-16;return b}(4);Ca=ta=k(ba);ua=Ca+Fa;Da=k(ua);E[ka>>2]=Da;Sa=!0;a.wasmTableSize=492;a.wasmMaxTableSize=492;a.asmGlobalArg={};a.asmLibraryArg={abort:O,assert:f,enlargeMemory:function(){var e=a.usingWasm?65536:16777216,b=2147483648-e;if(E[ka>>2]>b)return!1;var c=A;for(A=Math.max(A,16777216);A<E[ka>>2];)A=536870912>=A?ha(2*A,e):Math.min(ha((3*A+2147483648)/4,e),b);e=a.reallocBuffer(A);if(!e||e.byteLength!=A)return A=c,!1;a.buffer=D=e;r();return!0},getTotalMemory:function(){return A},abortOnCannotGrowMemory:function(){O("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+
|
||||
A+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_ii:function(e,b){try{return a.dynCall_ii(e,b)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_iii:function(e,b,c){try{return a.dynCall_iii(e,b,c)}catch(p){if("number"!==typeof p&&"longjmp"!==p)throw p;a.setThrew(1,0)}},invoke_iiii:function(e,b,c,d){try{return a.dynCall_iiii(e,
|
||||
b,c,d)}catch(S){if("number"!==typeof S&&"longjmp"!==S)throw S;a.setThrew(1,0)}},invoke_iiiiiii:function(e,b,c,d,f,g,h){try{return a.dynCall_iiiiiii(e,b,c,d,f,g,h)}catch(da){if("number"!==typeof da&&"longjmp"!==da)throw da;a.setThrew(1,0)}},invoke_v:function(e){try{a.dynCall_v(e)}catch(b){if("number"!==typeof b&&"longjmp"!==b)throw b;a.setThrew(1,0)}},invoke_vi:function(e,b){try{a.dynCall_vi(e,b)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_vii:function(e,b,c){try{a.dynCall_vii(e,
|
||||
b,c)}catch(p){if("number"!==typeof p&&"longjmp"!==p)throw p;a.setThrew(1,0)}},invoke_viii:function(e,b,c,d){try{a.dynCall_viii(e,b,c,d)}catch(S){if("number"!==typeof S&&"longjmp"!==S)throw S;a.setThrew(1,0)}},invoke_viiii:function(e,b,c,d,f){try{a.dynCall_viiii(e,b,c,d,f)}catch(xa){if("number"!==typeof xa&&"longjmp"!==xa)throw xa;a.setThrew(1,0)}},invoke_viiiii:function(e,b,c,d,f,g){try{a.dynCall_viiiii(e,b,c,d,f,g)}catch(ca){if("number"!==typeof ca&&"longjmp"!==ca)throw ca;a.setThrew(1,0)}},invoke_viiiiii:function(e,
|
||||
b,c,d,f,g,h){try{a.dynCall_viiiiii(e,b,c,d,f,g,h)}catch(da){if("number"!==typeof da&&"longjmp"!==da)throw da;a.setThrew(1,0)}},__ZSt18uncaught_exceptionv:w,___cxa_allocate_exception:function(a){return Ka(a)},___cxa_begin_catch:function(a){var b=y.infos[a];b&&!b.caught&&(b.caught=!0,w.uncaught_exception--);b&&(b.rethrown=!1);y.caught.push(a);y.addRef(y.deAdjust(a));return a},___cxa_find_matching_catch:la,___cxa_pure_virtual:function(){oa=!0;throw"Pure virtual function called!";},___cxa_throw:function(a,
|
||||
b,c){y.infos[a]={ptr:a,adjusted:a,type:b,destructor:c,refcount:0,caught:!1,rethrown:!1};y.last=a;"uncaught_exception"in w?w.uncaught_exception++:w.uncaught_exception=1;throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},___gxx_personality_v0:function(){},___resumeException:function(a){y.last||(y.last=a);throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";
|
||||
},___setErrNo:function(d){a.___errno_location&&(E[a.___errno_location()>>2]=d);return d},___syscall140:function(a,b){u.varargs=b;try{var c=u.getStreamFromFD();u.get();var d=u.get(),e=u.get(),f=u.get();FS.llseek(c,d,f);E[e>>2]=c.position;c.getdents&&0===d&&0===f&&(c.getdents=null);return 0}catch(ca){return"undefined"!==typeof FS&&ca instanceof FS.ErrnoError||O(ca),-ca.errno}},___syscall146:Z,___syscall54:function(a,b){u.varargs=b;return 0},___syscall6:function(a,b){u.varargs=b;try{var c=u.getStreamFromFD();
|
||||
FS.close(c);return 0}catch(p){return"undefined"!==typeof FS&&p instanceof FS.ErrnoError||O(p),-p.errno}},_abort:function(){a.abort()},_emscripten_memcpy_big:function(a,b,c){W.set(W.subarray(b,b+c),a);return a},_llvm_floor_f64:pb,_llvm_trap:function(){O("trap!")},_pthread_getspecific:function(a){return va[a]||0},_pthread_key_create:function(a,b){if(0==a)return 22;E[a>>2]=Ha;va[Ha]=0;Ha++;return 0},_pthread_once:ma,_pthread_setspecific:function(a,b){if(!(a in va))return 22;va[a]=b;return 0},flush_NO_FILESYSTEM:function(){var d=
|
||||
a._fflush;d&&d(0);if(d=Z.printChar){var b=Z.buffers;b[1].length&&d(1,10);b[2].length&&d(2,10)}},DYNAMICTOP_PTR:ka,tempDoublePtr:rb,ABORT:oa,STACKTOP:ta,STACK_MAX:ua};var Ua=a.asm(a.asmGlobalArg,a.asmLibraryArg,D);a.asm=Ua;a.___cxa_can_catch=function(){return a.asm.___cxa_can_catch.apply(null,arguments)};a.___cxa_is_pointer_type=function(){return a.asm.___cxa_is_pointer_type.apply(null,arguments)};var $a=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,
|
||||
arguments)},sb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},tb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null,arguments)},ub=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,
|
||||
arguments)},cb=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,arguments)},vb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},wb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,
|
||||
arguments)},xb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,arguments)},yb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)},zb=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,
|
||||
arguments)},bb=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return a.asm._emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,arguments)},Ab=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm._emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},Bb=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm._emscripten_bind_AttributeTransformData_transform_type_0.apply(null,
|
||||
arguments)},ib=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm._emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},Cb=a._emscripten_bind_DecoderBuffer_Init_2=function(){return a.asm._emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},Db=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm._emscripten_bind_DecoderBuffer___destroy___0.apply(null,arguments)},Eb=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null,
|
||||
arguments)},Fb=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,arguments)},jb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm._emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},Gb=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeByUniqueId_2.apply(null,arguments)},Hb=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Ib=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Jb=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},Kb=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,
|
||||
arguments)},Lb=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeId_2.apply(null,arguments)},Mb=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3.apply(null,arguments)},Nb=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3.apply(null,arguments)},Ob=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3.apply(null,arguments)},Pb=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3.apply(null,arguments)},Qb=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null,arguments)},Rb=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3.apply(null,
|
||||
arguments)},Sb=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3.apply(null,arguments)},Tb=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3.apply(null,arguments)},Ub=a._emscripten_bind_Decoder_GetAttribute_2=function(){return a.asm._emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},Vb=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,arguments)},Wb=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm._emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},Xb=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm._emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},Yb=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,
|
||||
arguments)},Zb=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm._emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,arguments)},$b=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm._emscripten_bind_Decoder___destroy___0.apply(null,arguments)},gb=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null,arguments)},ac=a._emscripten_bind_DracoFloat32Array_GetValue_1=
|
||||
function(){return a.asm._emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},bc=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},cc=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_size_0.apply(null,arguments)},fb=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return a.asm._emscripten_bind_DracoInt16Array_DracoInt16Array_0.apply(null,
|
||||
arguments)},dc=a._emscripten_bind_DracoInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt16Array_GetValue_1.apply(null,arguments)},ec=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt16Array___destroy___0.apply(null,arguments)},fc=a._emscripten_bind_DracoInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoInt16Array_size_0.apply(null,arguments)},lb=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm._emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,
|
||||
arguments)},gc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt32Array_GetValue_1.apply(null,arguments)},hc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},ic=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoInt32Array_size_0.apply(null,arguments)},db=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return a.asm._emscripten_bind_DracoInt8Array_DracoInt8Array_0.apply(null,
|
||||
arguments)},jc=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt8Array_GetValue_1.apply(null,arguments)},kc=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt8Array___destroy___0.apply(null,arguments)},lc=a._emscripten_bind_DracoInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoInt8Array_size_0.apply(null,arguments)},Wa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0.apply(null,
|
||||
arguments)},mc=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt16Array_GetValue_1.apply(null,arguments)},nc=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt16Array___destroy___0.apply(null,arguments)},oc=a._emscripten_bind_DracoUInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_size_0.apply(null,arguments)},Za=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0.apply(null,
|
||||
arguments)},pc=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt32Array_GetValue_1.apply(null,arguments)},qc=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt32Array___destroy___0.apply(null,arguments)},rc=a._emscripten_bind_DracoUInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_size_0.apply(null,arguments)},Ya=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0.apply(null,
|
||||
arguments)},sc=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt8Array_GetValue_1.apply(null,arguments)},tc=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt8Array___destroy___0.apply(null,arguments)},uc=a._emscripten_bind_DracoUInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_size_0.apply(null,arguments)},hb=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm._emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null,
|
||||
arguments)},vc=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm._emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},kb=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm._emscripten_bind_Mesh_Mesh_0.apply(null,arguments)},wc=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm._emscripten_bind_Mesh___destroy___0.apply(null,arguments)},xc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm._emscripten_bind_Mesh_num_attributes_0.apply(null,
|
||||
arguments)},yc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm._emscripten_bind_Mesh_num_faces_0.apply(null,arguments)},zc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm._emscripten_bind_Mesh_num_points_0.apply(null,arguments)},Ac=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},Bc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetEntryName_2.apply(null,
|
||||
arguments)},Cc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},Dc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},Ec=a._emscripten_bind_MetadataQuerier_HasDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasDoubleEntry_2.apply(null,arguments)},Fc=a._emscripten_bind_MetadataQuerier_HasEntry_2=
|
||||
function(){return a.asm._emscripten_bind_MetadataQuerier_HasEntry_2.apply(null,arguments)},Gc=a._emscripten_bind_MetadataQuerier_HasIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasIntEntry_2.apply(null,arguments)},Hc=a._emscripten_bind_MetadataQuerier_HasStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasStringEntry_2.apply(null,arguments)},eb=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm._emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,
|
||||
arguments)},Ic=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return a.asm._emscripten_bind_MetadataQuerier_NumEntries_1.apply(null,arguments)},Jc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm._emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},mb=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm._emscripten_bind_Metadata_Metadata_0.apply(null,arguments)},Kc=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm._emscripten_bind_Metadata___destroy___0.apply(null,
|
||||
arguments)},Lc=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm._emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},ab=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return a.asm._emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},Mc=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm._emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},Nc=a._emscripten_bind_PointAttribute_attribute_type_0=
|
||||
function(){return a.asm._emscripten_bind_PointAttribute_attribute_type_0.apply(null,arguments)},Oc=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},Pc=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_stride_0.apply(null,arguments)},Qc=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm._emscripten_bind_PointAttribute_data_type_0.apply(null,
|
||||
arguments)},Rc=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm._emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},Sc=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm._emscripten_bind_PointAttribute_num_components_0.apply(null,arguments)},Tc=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm._emscripten_bind_PointAttribute_size_0.apply(null,arguments)},Uc=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm._emscripten_bind_PointAttribute_unique_id_0.apply(null,
|
||||
arguments)},Xa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm._emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},Vc=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm._emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},Wc=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm._emscripten_bind_PointCloud_num_attributes_0.apply(null,arguments)},Xc=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm._emscripten_bind_PointCloud_num_points_0.apply(null,
|
||||
arguments)},Yc=a._emscripten_bind_Status___destroy___0=function(){return a.asm._emscripten_bind_Status___destroy___0.apply(null,arguments)},Zc=a._emscripten_bind_Status_code_0=function(){return a.asm._emscripten_bind_Status_code_0.apply(null,arguments)},$c=a._emscripten_bind_Status_error_msg_0=function(){return a.asm._emscripten_bind_Status_error_msg_0.apply(null,arguments)},ad=a._emscripten_bind_Status_ok_0=function(){return a.asm._emscripten_bind_Status_ok_0.apply(null,arguments)},bd=a._emscripten_bind_VoidPtr___destroy___0=
|
||||
function(){return a.asm._emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},cd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null,arguments)},dd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)},ed=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=
|
||||
function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null,arguments)},fd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},gd=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null,
|
||||
arguments)},hd=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},id=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},jd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},kd=
|
||||
a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)},ld=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},md=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},nd=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=
|
||||
function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},od=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},pd=a._emscripten_enum_draco_StatusCode_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_ERROR.apply(null,arguments)},qd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return a.asm._emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,
|
||||
arguments)},rd=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},sd=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm._emscripten_enum_draco_StatusCode_OK.apply(null,arguments)},td=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},ud=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null,
|
||||
arguments)},nb=a._emscripten_replace_memory=function(){return a.asm._emscripten_replace_memory.apply(null,arguments)};a._free=function(){return a.asm._free.apply(null,arguments)};a._llvm_bswap_i32=function(){return a.asm._llvm_bswap_i32.apply(null,arguments)};var Ka=a._malloc=function(){return a.asm._malloc.apply(null,arguments)};a._memcpy=function(){return a.asm._memcpy.apply(null,arguments)};a._memmove=function(){return a.asm._memmove.apply(null,arguments)};a._memset=function(){return a.asm._memset.apply(null,
|
||||
arguments)};a._sbrk=function(){return a.asm._sbrk.apply(null,arguments)};a.establishStackSpace=function(){return a.asm.establishStackSpace.apply(null,arguments)};a.getTempRet0=function(){return a.asm.getTempRet0.apply(null,arguments)};a.runPostSets=function(){return a.asm.runPostSets.apply(null,arguments)};var sa=a.setTempRet0=function(){return a.asm.setTempRet0.apply(null,arguments)};a.setThrew=function(){return a.asm.setThrew.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,
|
||||
arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,
|
||||
arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)};a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};a.asm=Ua;a.then=function(d){if(a.calledRun)d(a);
|
||||
else{var b=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){b&&b();d(a)}}return a};na.prototype=Error();na.prototype.constructor=na;ra=function b(){a.calledRun||wa();a.calledRun||(ra=b)};a.run=wa;a.exit=function(b,c){if(!c||!a.noExitRuntime||0!==b){if(!a.noExitRuntime&&(oa=!0,ta=void 0,B(ob),a.onExit))a.onExit(b);qa&&process.exit(b);a.quit(b,new na(b))}};a.abort=O;if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();a.noExitRuntime=!0;
|
||||
wa();m.prototype=Object.create(m.prototype);m.prototype.constructor=m;m.prototype.__class__=m;m.__cache__={};a.WrapperObject=m;a.getCache=t;a.wrapPointer=T;a.castObject=function(a,c){return T(a.ptr,c)};a.NULL=T(0);a.destroy=function(a){if(!a.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";a.__destroy__();delete t(a.__class__)[a.ptr]};a.compare=function(a,c){return a.ptr===c.ptr};a.getPointer=function(a){return a.ptr};a.getClass=function(a){return a.__class__};var l=
|
||||
{buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(l.needed){for(var b=0;b<l.temps.length;b++)a._free(l.temps[b]);l.temps.length=0;a._free(l.buffer);l.buffer=0;l.size+=l.needed;l.needed=0}l.buffer||(l.size+=128,l.buffer=a._malloc(l.size),f(l.buffer));l.pos=0},alloc:function(b,c){f(l.buffer);b=b.length*c.BYTES_PER_ELEMENT;b=b+7&-8;l.pos+b>=l.size?(f(0<b),l.needed+=b,c=a._malloc(b),l.temps.push(c)):(c=l.buffer+l.pos,l.pos+=b);return c},copy:function(a,c,d){switch(c.BYTES_PER_ELEMENT){case 2:d>>=
|
||||
1;break;case 4:d>>=2;break;case 8:d>>=3}for(var b=0;b<a.length;b++)c[d+b]=a[b]}};z.prototype=Object.create(m.prototype);z.prototype.constructor=z;z.prototype.__class__=z;z.__cache__={};a.Status=z;z.prototype.code=z.prototype.code=function(){return Zc(this.ptr)};z.prototype.ok=z.prototype.ok=function(){return!!ad(this.ptr)};z.prototype.error_msg=z.prototype.error_msg=function(){return v($c(this.ptr))};z.prototype.__destroy__=z.prototype.__destroy__=function(){Yc(this.ptr)};F.prototype=Object.create(m.prototype);
|
||||
F.prototype.constructor=F;F.prototype.__class__=F;F.__cache__={};a.DracoUInt16Array=F;F.prototype.GetValue=F.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return mc(b,a)};F.prototype.size=F.prototype.size=function(){return oc(this.ptr)};F.prototype.__destroy__=F.prototype.__destroy__=function(){nc(this.ptr)};G.prototype=Object.create(m.prototype);G.prototype.constructor=G;G.prototype.__class__=G;G.__cache__={};a.PointCloud=G;G.prototype.num_attributes=G.prototype.num_attributes=
|
||||
function(){return Wc(this.ptr)};G.prototype.num_points=G.prototype.num_points=function(){return Xc(this.ptr)};G.prototype.__destroy__=G.prototype.__destroy__=function(){Vc(this.ptr)};H.prototype=Object.create(m.prototype);H.prototype.constructor=H;H.prototype.__class__=H;H.__cache__={};a.DracoUInt8Array=H;H.prototype.GetValue=H.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return sc(b,a)};H.prototype.size=H.prototype.size=function(){return uc(this.ptr)};H.prototype.__destroy__=
|
||||
H.prototype.__destroy__=function(){tc(this.ptr)};I.prototype=Object.create(m.prototype);I.prototype.constructor=I;I.prototype.__class__=I;I.__cache__={};a.DracoUInt32Array=I;I.prototype.GetValue=I.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return pc(b,a)};I.prototype.size=I.prototype.size=function(){return rc(this.ptr)};I.prototype.__destroy__=I.prototype.__destroy__=function(){qc(this.ptr)};J.prototype=Object.create(m.prototype);J.prototype.constructor=J;J.prototype.__class__=
|
||||
J;J.__cache__={};a.AttributeOctahedronTransform=J;J.prototype.InitFromAttribute=J.prototype.InitFromAttribute=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!sb(b,a)};J.prototype.quantization_bits=J.prototype.quantization_bits=function(){return ub(this.ptr)};J.prototype.__destroy__=J.prototype.__destroy__=function(){tb(this.ptr)};n.prototype=Object.create(m.prototype);n.prototype.constructor=n;n.prototype.__class__=n;n.__cache__={};a.PointAttribute=n;n.prototype.size=n.prototype.size=
|
||||
function(){return Tc(this.ptr)};n.prototype.GetAttributeTransformData=n.prototype.GetAttributeTransformData=function(){return T(Lc(this.ptr),P)};n.prototype.attribute_type=n.prototype.attribute_type=function(){return Nc(this.ptr)};n.prototype.data_type=n.prototype.data_type=function(){return Qc(this.ptr)};n.prototype.num_components=n.prototype.num_components=function(){return Sc(this.ptr)};n.prototype.normalized=n.prototype.normalized=function(){return!!Rc(this.ptr)};n.prototype.byte_stride=n.prototype.byte_stride=
|
||||
function(){return Pc(this.ptr)};n.prototype.byte_offset=n.prototype.byte_offset=function(){return Oc(this.ptr)};n.prototype.unique_id=n.prototype.unique_id=function(){return Uc(this.ptr)};n.prototype.__destroy__=n.prototype.__destroy__=function(){Mc(this.ptr)};P.prototype=Object.create(m.prototype);P.prototype.constructor=P;P.prototype.__class__=P;P.__cache__={};a.AttributeTransformData=P;P.prototype.transform_type=P.prototype.transform_type=function(){return Bb(this.ptr)};P.prototype.__destroy__=
|
||||
P.prototype.__destroy__=function(){Ab(this.ptr)};x.prototype=Object.create(m.prototype);x.prototype.constructor=x;x.prototype.__class__=x;x.__cache__={};a.AttributeQuantizationTransform=x;x.prototype.InitFromAttribute=x.prototype.InitFromAttribute=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!vb(b,a)};x.prototype.quantization_bits=x.prototype.quantization_bits=function(){return yb(this.ptr)};x.prototype.min_value=x.prototype.min_value=function(a){var b=this.ptr;a&&"object"===
|
||||
typeof a&&(a=a.ptr);return xb(b,a)};x.prototype.range=x.prototype.range=function(){return zb(this.ptr)};x.prototype.__destroy__=x.prototype.__destroy__=function(){wb(this.ptr)};K.prototype=Object.create(m.prototype);K.prototype.constructor=K;K.prototype.__class__=K;K.__cache__={};a.DracoInt8Array=K;K.prototype.GetValue=K.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return jc(b,a)};K.prototype.size=K.prototype.size=function(){return lc(this.ptr)};K.prototype.__destroy__=
|
||||
K.prototype.__destroy__=function(){kc(this.ptr)};q.prototype=Object.create(m.prototype);q.prototype.constructor=q;q.prototype.__class__=q;q.__cache__={};a.MetadataQuerier=q;q.prototype.HasEntry=q.prototype.HasEntry=function(a,c){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);return!!Fc(b,a,c)};q.prototype.HasIntEntry=q.prototype.HasIntEntry=function(a,c){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);
|
||||
return!!Gc(b,a,c)};q.prototype.GetIntEntry=q.prototype.GetIntEntry=function(a,c){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);return Cc(b,a,c)};q.prototype.HasDoubleEntry=q.prototype.HasDoubleEntry=function(a,c){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);return!!Ec(b,a,c)};q.prototype.GetDoubleEntry=q.prototype.GetDoubleEntry=function(a,c){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=
|
||||
a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);return Ac(b,a,c)};q.prototype.HasStringEntry=q.prototype.HasStringEntry=function(a,c){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);return!!Hc(b,a,c)};q.prototype.GetStringEntry=q.prototype.GetStringEntry=function(a,c){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);return v(Dc(b,a,c))};q.prototype.NumEntries=q.prototype.NumEntries=function(a){var b=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);return Ic(b,a)};q.prototype.GetEntryName=q.prototype.GetEntryName=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return v(Bc(b,a,c))};q.prototype.__destroy__=q.prototype.__destroy__=function(){Jc(this.ptr)};L.prototype=Object.create(m.prototype);L.prototype.constructor=L;L.prototype.__class__=L;L.__cache__={};a.DracoInt16Array=L;L.prototype.GetValue=L.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&
|
||||
(a=a.ptr);return dc(b,a)};L.prototype.size=L.prototype.size=function(){return fc(this.ptr)};L.prototype.__destroy__=L.prototype.__destroy__=function(){ec(this.ptr)};M.prototype=Object.create(m.prototype);M.prototype.constructor=M;M.prototype.__class__=M;M.__cache__={};a.DracoFloat32Array=M;M.prototype.GetValue=M.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return ac(b,a)};M.prototype.size=M.prototype.size=function(){return cc(this.ptr)};M.prototype.__destroy__=M.prototype.__destroy__=
|
||||
function(){bc(this.ptr)};V.prototype=Object.create(m.prototype);V.prototype.constructor=V;V.prototype.__class__=V;V.__cache__={};a.GeometryAttribute=V;V.prototype.__destroy__=V.prototype.__destroy__=function(){vc(this.ptr)};Q.prototype=Object.create(m.prototype);Q.prototype.constructor=Q;Q.prototype.__class__=Q;Q.__cache__={};a.DecoderBuffer=Q;Q.prototype.Init=Q.prototype.Init=function(a,c){var b=this.ptr;l.prepare();if("object"==typeof a&&"object"===typeof a){var d=l.alloc(a,ia);l.copy(a,ia,d);a=
|
||||
d}c&&"object"===typeof c&&(c=c.ptr);Cb(b,a,c)};Q.prototype.__destroy__=Q.prototype.__destroy__=function(){Db(this.ptr)};g.prototype=Object.create(m.prototype);g.prototype.constructor=g;g.prototype.__class__=g;g.__cache__={};a.Decoder=g;g.prototype.GetEncodedGeometryType=g.prototype.GetEncodedGeometryType=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Vb(b,a)};g.prototype.DecodeBufferToPointCloud=g.prototype.DecodeBufferToPointCloud=function(a,c){var b=this.ptr;a&&"object"===typeof a&&
|
||||
(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return T(Fb(b,a,c),z)};g.prototype.DecodeBufferToMesh=g.prototype.DecodeBufferToMesh=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return T(Eb(b,a,c),z)};g.prototype.GetAttributeId=g.prototype.GetAttributeId=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return Lb(b,a,c)};g.prototype.GetAttributeIdByName=g.prototype.GetAttributeIdByName=function(a,c){var b=
|
||||
this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);return Kb(b,a,c)};g.prototype.GetAttributeIdByMetadataEntry=g.prototype.GetAttributeIdByMetadataEntry=function(a,c,d){var b=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:U(c);d=d&&"object"===typeof d?d.ptr:U(d);return Jb(b,a,c,d)};g.prototype.GetAttribute=g.prototype.GetAttribute=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=
|
||||
c.ptr);return T(Ub(b,a,c),n)};g.prototype.GetAttributeByUniqueId=g.prototype.GetAttributeByUniqueId=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return T(Gb(b,a,c),n)};g.prototype.GetMetadata=g.prototype.GetMetadata=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return T(Xb(b,a),R)};g.prototype.GetAttributeMetadata=g.prototype.GetAttributeMetadata=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&
|
||||
(c=c.ptr);return T(Qb(b,a,c),R)};g.prototype.GetFaceFromMesh=g.prototype.GetFaceFromMesh=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Wb(b,a,c,d)};g.prototype.GetTriangleStripsFromMesh=g.prototype.GetTriangleStripsFromMesh=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return Yb(b,a,c)};g.prototype.GetAttributeFloat=g.prototype.GetAttributeFloat=function(a,
|
||||
c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ib(b,a,c,d)};g.prototype.GetAttributeFloatForAllPoints=g.prototype.GetAttributeFloatForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Hb(b,a,c,d)};g.prototype.GetAttributeIntForAllPoints=g.prototype.GetAttributeIntForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===
|
||||
typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Pb(b,a,c,d)};g.prototype.GetAttributeInt8ForAllPoints=g.prototype.GetAttributeInt8ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ob(b,a,c,d)};g.prototype.GetAttributeUInt8ForAllPoints=g.prototype.GetAttributeUInt8ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===
|
||||
typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Tb(b,a,c,d)};g.prototype.GetAttributeInt16ForAllPoints=g.prototype.GetAttributeInt16ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Mb(b,a,c,d)};g.prototype.GetAttributeUInt16ForAllPoints=g.prototype.GetAttributeUInt16ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&
|
||||
"object"===typeof d&&(d=d.ptr);return!!Rb(b,a,c,d)};g.prototype.GetAttributeInt32ForAllPoints=g.prototype.GetAttributeInt32ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Nb(b,a,c,d)};g.prototype.GetAttributeUInt32ForAllPoints=g.prototype.GetAttributeUInt32ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=
|
||||
d.ptr);return!!Sb(b,a,c,d)};g.prototype.SkipAttributeTransform=g.prototype.SkipAttributeTransform=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);Zb(b,a)};g.prototype.__destroy__=g.prototype.__destroy__=function(){$b(this.ptr)};C.prototype=Object.create(m.prototype);C.prototype.constructor=C;C.prototype.__class__=C;C.__cache__={};a.Mesh=C;C.prototype.num_faces=C.prototype.num_faces=function(){return yc(this.ptr)};C.prototype.num_attributes=C.prototype.num_attributes=function(){return xc(this.ptr)};
|
||||
C.prototype.num_points=C.prototype.num_points=function(){return zc(this.ptr)};C.prototype.__destroy__=C.prototype.__destroy__=function(){wc(this.ptr)};X.prototype=Object.create(m.prototype);X.prototype.constructor=X;X.prototype.__class__=X;X.__cache__={};a.VoidPtr=X;X.prototype.__destroy__=X.prototype.__destroy__=function(){bd(this.ptr)};N.prototype=Object.create(m.prototype);N.prototype.constructor=N;N.prototype.__class__=N;N.__cache__={};a.DracoInt32Array=N;N.prototype.GetValue=N.prototype.GetValue=
|
||||
function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return gc(b,a)};N.prototype.size=N.prototype.size=function(){return ic(this.ptr)};N.prototype.__destroy__=N.prototype.__destroy__=function(){hc(this.ptr)};R.prototype=Object.create(m.prototype);R.prototype.constructor=R;R.prototype.__class__=R;R.__cache__={};a.Metadata=R;R.prototype.__destroy__=R.prototype.__destroy__=function(){Kc(this.ptr)};(function(){function b(){a.OK=sd();a.ERROR=pd();a.IO_ERROR=rd();a.INVALID_PARAMETER=qd();a.UNSUPPORTED_VERSION=
|
||||
ud();a.UNKNOWN_VERSION=td();a.INVALID_GEOMETRY_TYPE=gd();a.POINT_CLOUD=hd();a.TRIANGULAR_MESH=id();a.ATTRIBUTE_INVALID_TRANSFORM=cd();a.ATTRIBUTE_NO_TRANSFORM=dd();a.ATTRIBUTE_QUANTIZATION_TRANSFORM=fd();a.ATTRIBUTE_OCTAHEDRON_TRANSFORM=ed();a.INVALID=ld();a.POSITION=nd();a.NORMAL=md();a.COLOR=jd();a.TEX_COORD=od();a.GENERIC=kd()}a.calledRun?b():Na.unshift(b)})();if("function"===typeof a.onModuleParsed)a.onModuleParsed();return d};
|
||||
"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule);
|
||||
|
@ -1,129 +1,119 @@
|
||||
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(d,f,n){d!=Array.prototype&&d!=Object.prototype&&(d[f]=n.value)};$jscomp.getGlobal=function(d){return"undefined"!=typeof window&&window===d?d:"undefined"!=typeof global&&null!=global?global:d};$jscomp.global=$jscomp.getGlobal(this);
|
||||
$jscomp.polyfill=function(d,f,n,v){if(f){n=$jscomp.global;d=d.split(".");for(v=0;v<d.length-1;v++){var g=d[v];g in n||(n[g]={});n=n[g]}d=d[d.length-1];v=n[d];f=f(v);f!=v&&null!=f&&$jscomp.defineProperty(n,d,{configurable:!0,writable:!0,value:f})}};$jscomp.polyfill("Math.imul",function(d){return d?d:function(f,d){f=Number(f);d=Number(d);var n=f&65535,g=d&65535;return n*g+((f>>>16&65535)*g+n*(d>>>16&65535)<<16>>>0)|0}},"es6","es3");
|
||||
$jscomp.polyfill("Math.clz32",function(d){return d?d:function(f){f=Number(f)>>>0;if(0===f)return 32;var d=0;0===(f&4294901760)&&(f<<=16,d+=16);0===(f&4278190080)&&(f<<=8,d+=8);0===(f&4026531840)&&(f<<=4,d+=4);0===(f&3221225472)&&(f<<=2,d+=2);0===(f&2147483648)&&d++;return d}},"es6","es3");$jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var f=Math.floor(Math.abs(d));return 0>d?-f:f}},"es6","es3");
|
||||
$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(d){return $jscomp.SYMBOL_PREFIX+(d||"")+$jscomp.symbolCounter_++};
|
||||
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var d=$jscomp.global.Symbol.iterator;d||(d=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[d]&&$jscomp.defineProperty(Array.prototype,d,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(d){var f=0;return $jscomp.iteratorPrototype(function(){return f<d.length?{done:!1,value:d[f++]}:{done:!0}})};
|
||||
$jscomp.iteratorPrototype=function(d){$jscomp.initSymbolIterator();d={next:d};d[$jscomp.global.Symbol.iterator]=function(){return this};return d};$jscomp.makeIterator=function(d){$jscomp.initSymbolIterator();var f=d[Symbol.iterator];return f?f.call(d):$jscomp.arrayIterator(d)};$jscomp.FORCE_POLYFILL_PROMISE=!1;
|
||||
$jscomp.polyfill("Promise",function(d){function f(){this.batch_=null}function n(d){return d instanceof g?d:new g(function(f,D){f(d)})}if(d&&!$jscomp.FORCE_POLYFILL_PROMISE)return d;f.prototype.asyncExecute=function(d){null==this.batch_&&(this.batch_=[],this.asyncExecuteBatch_());this.batch_.push(d);return this};f.prototype.asyncExecuteBatch_=function(){var d=this;this.asyncExecuteFunction(function(){d.executeBatch_()})};var v=$jscomp.global.setTimeout;f.prototype.asyncExecuteFunction=function(d){v(d,
|
||||
0)};f.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var d=this.batch_;this.batch_=[];for(var f=0;f<d.length;++f){var g=d[f];delete d[f];try{g()}catch(la){this.asyncThrow_(la)}}}this.batch_=null};f.prototype.asyncThrow_=function(d){this.asyncExecuteFunction(function(){throw d;})};var g=function(d){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var f=this.createResolveAndReject_();try{d(f.resolve,f.reject)}catch(u){f.reject(u)}};g.prototype.createResolveAndReject_=
|
||||
function(){function d(d){return function(D){g||(g=!0,d.call(f,D))}}var f=this,g=!1;return{resolve:d(this.resolveTo_),reject:d(this.reject_)}};g.prototype.resolveTo_=function(d){if(d===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(d instanceof g)this.settleSameAsPromise_(d);else{a:switch(typeof d){case "object":var f=null!=d;break a;case "function":f=!0;break a;default:f=!1}f?this.resolveToNonPromiseObj_(d):this.fulfill_(d)}};g.prototype.resolveToNonPromiseObj_=function(d){var f=
|
||||
void 0;try{f=d.then}catch(u){this.reject_(u);return}"function"==typeof f?this.settleSameAsThenable_(f,d):this.fulfill_(d)};g.prototype.reject_=function(d){this.settle_(2,d)};g.prototype.fulfill_=function(d){this.settle_(1,d)};g.prototype.settle_=function(d,f){if(0!=this.state_)throw Error("Cannot settle("+d+", "+f|"): Promise already settled in state"+this.state_);this.state_=d;this.result_=f;this.executeOnSettledCallbacks_()};g.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var d=
|
||||
this.onSettledCallbacks_,f=0;f<d.length;++f)d[f].call(),d[f]=null;this.onSettledCallbacks_=null}};var ma=new f;g.prototype.settleSameAsPromise_=function(d){var f=this.createResolveAndReject_();d.callWhenSettled_(f.resolve,f.reject)};g.prototype.settleSameAsThenable_=function(d,f){var g=this.createResolveAndReject_();try{d.call(f,g.resolve,g.reject)}catch(la){g.reject(la)}};g.prototype.then=function(d,f){function u(d,f){return"function"==typeof d?function(f){try{n(d(f))}catch(ea){D(ea)}}:f}var n,D,
|
||||
v=new g(function(d,f){n=d;D=f});this.callWhenSettled_(u(d,n),u(f,D));return v};g.prototype.catch=function(d){return this.then(void 0,d)};g.prototype.callWhenSettled_=function(d,f){function g(){switch(n.state_){case 1:d(n.result_);break;case 2:f(n.result_);break;default:throw Error("Unexpected state: "+n.state_);}}var n=this;null==this.onSettledCallbacks_?ma.asyncExecute(g):this.onSettledCallbacks_.push(function(){ma.asyncExecute(g)})};g.resolve=n;g.reject=function(d){return new g(function(f,g){g(d)})};
|
||||
g.race=function(d){return new g(function(f,g){for(var u=$jscomp.makeIterator(d),v=u.next();!v.done;v=u.next())n(v.value).callWhenSettled_(f,g)})};g.all=function(d){var f=$jscomp.makeIterator(d),u=f.next();return u.done?n([]):new g(function(d,g){function v(f){return function(g){D[f]=g;Q--;0==Q&&d(D)}}var D=[],Q=0;do D.push(void 0),Q++,n(u.value).callWhenSettled_(v(D.length-1),g),u=f.next();while(!u.done)})};return g},"es6","es3");
|
||||
var DracoDecoderModule=function(d){function f(a,b){a||W("Assertion failed: "+b)}function n(e,b){if(0===b||!e)return"";for(var c=0,l,d=0;;){l=T[e+d>>0];c|=l;if(0==l&&!b)break;d++;if(b&&d==b)break}b||(b=d);l="";if(128>c){for(;0<b;)c=String.fromCharCode.apply(String,T.subarray(e,e+Math.min(b,1024))),l=l?l+c:c,e+=1024,b-=1024;return l}return a.UTF8ToString(e)}function v(a){return a.replace(/__Z[\w\d_]+/g,function(a){return a===a?a:a+" ["+a+"]"})}function g(){a:{var e=Error();if(!e.stack){try{throw Error(0);
|
||||
}catch(b){e=b}if(!e.stack){e="(no stack trace available)";break a}}e=e.stack.toString()}a.extraStackTrace&&(e+="\n"+a.extraStackTrace());return v(e)}function ma(a,b){0<a%b&&(a+=b-a%b);return a}function D(){a.HEAP8=fa=new Int8Array(F);a.HEAP16=za=new Int16Array(F);a.HEAP32=x=new Int32Array(F);a.HEAPU8=T=new Uint8Array(F);a.HEAPU16=Oa=new Uint16Array(F);a.HEAPU32=Pa=new Uint32Array(F);a.HEAPF32=Qa=new Float32Array(F);a.HEAPF64=Ra=new Float64Array(F)}function Ma(){var e=a.usingWasm?Aa:Sa,b=2147483648-
|
||||
e;if(x[ba>>2]>b)return!1;var c=y;for(y=Math.max(y,ib);y<x[ba>>2];)y=536870912>=y?ma(2*y,e):Math.min(ma((3*y+2147483648)/4,e),b);e=a.reallocBuffer(y);if(!e||e.byteLength!=y)return y=c,!1;a.buffer=F=e;D();return!0}function u(e){for(;0<e.length;){var b=e.shift();if("function"==typeof b)b();else{var c=b.func;"number"===typeof c?void 0===b.arg?a.dynCall_v(c):a.dynCall_vi(c,b.arg):c(void 0===b.arg?null:b.arg)}}}function la(e){ha++;a.monitorRunDependencies&&a.monitorRunDependencies(ha)}function Na(e){ha--;
|
||||
a.monitorRunDependencies&&a.monitorRunDependencies(ha);0==ha&&(null!==Ba&&(clearInterval(Ba),Ba=null),sa&&(e=sa,sa=null,e()))}function na(){return!!na.uncaught_exception}function qa(){var e=A.last;if(!e)return(m.setTempRet0(0),0)|0;var b=A.infos[e],c=b.type;if(!c)return(m.setTempRet0(0),e)|0;var l=Array.prototype.slice.call(arguments);a.___cxa_is_pointer_type(c);qa.buffer||(qa.buffer=Ta(4));x[qa.buffer>>2]=e;e=qa.buffer;for(var d=0;d<l.length;d++)if(l[d]&&a.___cxa_can_catch(l[d],c,e))return e=x[e>>
|
||||
2],b.adjusted=e,(m.setTempRet0(l[d]),e)|0;e=x[e>>2];return(m.setTempRet0(c),e)|0}function Q(e,b){w.varargs=b;try{var c=w.get(),l=w.get(),d=w.get();e=0;Q.buffer||(Q.buffers=[null,[],[]],Q.printChar=function(b,c){var e=Q.buffers[b];f(e);if(0===c||10===c){b=1===b?a.print:a.printErr;a:{for(var l=c=0;e[l];)++l;if(16<l-c&&e.subarray&&Ua)c=Ua.decode(e.subarray(c,l));else for(l="";;){var d=e[c++];if(!d){c=l;break a}if(d&128){var g=e[c++]&63;if(192==(d&224))l+=String.fromCharCode((d&31)<<6|g);else{var h=e[c++]&
|
||||
63;if(224==(d&240))d=(d&15)<<12|g<<6|h;else{var E=e[c++]&63;if(240==(d&248))d=(d&7)<<18|g<<12|h<<6|E;else{var k=e[c++]&63;if(248==(d&252))d=(d&3)<<24|g<<18|h<<12|E<<6|k;else{var ta=e[c++]&63;d=(d&1)<<30|g<<24|h<<18|E<<12|k<<6|ta}}}65536>d?l+=String.fromCharCode(d):(d-=65536,l+=String.fromCharCode(55296|d>>10,56320|d&1023))}}else l+=String.fromCharCode(d)}}b(c);e.length=0}else e.push(c)});for(b=0;b<d;b++){for(var h=x[l+8*b>>2],g=x[l+(8*b+4)>>2],k=0;k<g;k++)Q.printChar(c,T[h+k]);e+=g}return e}catch(Ca){return"undefined"!==
|
||||
typeof FS&&Ca instanceof FS.ErrnoError||W(Ca),-Ca.errno}}function ra(e,b){ra.seen||(ra.seen={});e in ra.seen||(a.dynCall_v(b),ra.seen[e]=1)}function ea(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}function Da(e){function b(){if(!a.calledRun&&(a.calledRun=!0,!ua)){Va||(Va=!0,u(Wa));u(Xa);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ya.unshift(a.postRun.shift());
|
||||
u(Ya)}}null===Za&&(Za=Date.now());if(!(0<ha)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)$a.unshift(a.preRun.shift());u($a);0<ha||a.calledRun||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1);b()},1)):b())}}function W(e){if(a.onAbort)a.onAbort(e);void 0!==e?(a.print(e),a.printErr(e),e=JSON.stringify(e)):e="";ua=!0;var b="abort("+e+") at "+g()+"\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";
|
||||
ab&&ab.forEach(function(a){b=a(b,e)});throw b;}function p(){}function t(a){return(a||p).__cache__}function X(a,b){var c=t(b),e=c[a];if(e)return e;e=Object.create((b||p).prototype);e.ptr=a;return c[a]=e}function Y(a){if("string"===typeof a){for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++c)&1023);127>=e?++b:b=2047>=e?b+2:65535>=e?b+3:2097151>=e?b+4:67108863>=e?b+5:b+6}b=Array(b+1);c=0;e=b.length;if(0<e){e=c+e-1;for(var d=0;d<a.length;++d){var f=
|
||||
a.charCodeAt(d);55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++d)&1023);if(127>=f){if(c>=e)break;b[c++]=f}else{if(2047>=f){if(c+1>=e)break;b[c++]=192|f>>6}else{if(65535>=f){if(c+2>=e)break;b[c++]=224|f>>12}else{if(2097151>=f){if(c+3>=e)break;b[c++]=240|f>>18}else{if(67108863>=f){if(c+4>=e)break;b[c++]=248|f>>24}else{if(c+5>=e)break;b[c++]=252|f>>30;b[c++]=128|f>>24&63}b[c++]=128|f>>18&63}b[c++]=128|f>>12&63}b[c++]=128|f>>6&63}b[c++]=128|f&63}}b[c]=0}a=k.alloc(b,fa);k.copy(b,fa,a)}return a}
|
||||
function B(){throw"cannot construct a Status, no constructor in IDL";}function G(){this.ptr=lb();t(G)[this.ptr]=this}function H(){this.ptr=mb();t(H)[this.ptr]=this}function I(){this.ptr=nb();t(I)[this.ptr]=this}function J(){this.ptr=ob();t(J)[this.ptr]=this}function K(){this.ptr=pb();t(K)[this.ptr]=this}function q(){this.ptr=qb();t(q)[this.ptr]=this}function P(){this.ptr=rb();t(P)[this.ptr]=this}function z(){this.ptr=sb();t(z)[this.ptr]=this}function L(){this.ptr=tb();t(L)[this.ptr]=this}function r(){this.ptr=
|
||||
ub();t(r)[this.ptr]=this}function M(){this.ptr=vb();t(M)[this.ptr]=this}function N(){this.ptr=wb();t(N)[this.ptr]=this}function Z(){this.ptr=xb();t(Z)[this.ptr]=this}function R(){this.ptr=yb();t(R)[this.ptr]=this}function h(){this.ptr=zb();t(h)[this.ptr]=this}function C(){this.ptr=Ab();t(C)[this.ptr]=this}function ca(){throw"cannot construct a VoidPtr, no constructor in IDL";}function O(){this.ptr=Bb();t(O)[this.ptr]=this}function S(){this.ptr=Cb();t(S)[this.ptr]=this}var a=d=d||{},bb=!1,cb=!1;a.onRuntimeInitialized=
|
||||
function(){bb=!0;if(cb&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){cb=!0;if(bb&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(a){if("string"!==typeof a)return!1;a=a.split(".");return 2>a.length||3<a.length?!1:1==a[0]&&0<=a[1]&&3>=a[1]?!0:0!=a[0]||10<a[1]?!1:!0};a||(a=("undefined"!==typeof d?d:null)||{});var va={},da;for(da in a)a.hasOwnProperty(da)&&(va[da]=a[da]);var oa=!1,ka=!1,pa=!1,wa=!1;if(a.ENVIRONMENT)if("WEB"===
|
||||
a.ENVIRONMENT)oa=!0;else if("WORKER"===a.ENVIRONMENT)ka=!0;else if("NODE"===a.ENVIRONMENT)pa=!0;else if("SHELL"===a.ENVIRONMENT)wa=!0;else throw Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else oa="object"===typeof window,ka="function"===typeof importScripts,pa="object"===typeof process&&"function"===typeof require&&!oa&&!ka,wa=!oa&&!pa&&!ka;if(pa){a.print||(a.print=console.log);a.printErr||(a.printErr=console.warn);var Ea,Fa;a.read=function(a,
|
||||
b){Ea||(Ea=require("fs"));Fa||(Fa=require("path"));a=Fa.normalize(a);a=Ea.readFileSync(a);return b?a:a.toString()};a.readBinary=function(e){e=a.read(e,!0);e.buffer||(e=new Uint8Array(e));f(e.buffer);return e};a.thisProgram||(a.thisProgram=1<process.argv.length?process.argv[1].replace(/\\/g,"/"):"unknown-program");a.arguments=process.argv.slice(2);process.on("uncaughtException",function(a){if(!(a instanceof ea))throw a;});a.inspect=function(){return"[Emscripten Module object]"}}else if(wa)a.print||
|
||||
(a.print=print),"undefined"!=typeof printErr&&(a.printErr=printErr),a.read="undefined"!=typeof read?function(a){return read(a)}:function(){throw"no read() available";},a.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");f("object"===typeof a);return a},"undefined"!=typeof scriptArgs?a.arguments=scriptArgs:"undefined"!=typeof arguments&&(a.arguments=arguments),"function"===typeof quit&&(a.quit=function(a,b){quit(a)});else if(oa||ka)a.read=
|
||||
function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},ka&&(a.readBinary=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),a.readAsync=function(a,b,c){var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=function(){200==e.status||0==e.status&&e.response?b(e.response):c()};e.onerror=c;e.send(null)},"undefined"!=typeof arguments&&(a.arguments=arguments),
|
||||
"undefined"!==typeof console?(a.print||(a.print=function(a){console.log(a)}),a.printErr||(a.printErr=function(a){console.warn(a)})):a.print||(a.print=function(a){}),"undefined"===typeof a.setWindowTitle&&(a.setWindowTitle=function(a){document.title=a});else throw Error("Unknown runtime environment. Where are we?");a.print||(a.print=function(){});a.printErr||(a.printErr=a.print);a.arguments||(a.arguments=[]);a.thisProgram||(a.thisProgram="./this.program");a.quit||(a.quit=function(a,b){throw b;});a.print=
|
||||
a.print;a.printErr=a.printErr;a.preRun=[];a.postRun=[];for(da in va)va.hasOwnProperty(da)&&(a[da]=va[da]);va=void 0;var m={setTempRet0:function(a){return tempRet0=a},getTempRet0:function(){return tempRet0},stackSave:function(){return U},stackRestore:function(a){U=a},getNativeTypeSize:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:return"*"===a[a.length-1]?m.QUANTUM_SIZE:"i"===a[0]?
|
||||
(a=parseInt(a.substr(1)),f(0===a%8),a/8):0}},getNativeFieldSize:function(a){return Math.max(m.getNativeTypeSize(a),m.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(a,b){"double"===b||"i64"===b?a&7&&(f(4===(a&7)),a+=4):f(0===(a&3));return a},getAlignSize:function(a,b,c){return c||"i64"!=a&&"double"!=a?a?Math.min(b||(a?m.getNativeFieldSize(a):0),m.QUANTUM_SIZE):Math.min(b,8):8},dynCall:function(e,b,c){return c&&c.length?a["dynCall_"+e].apply(null,[b].concat(c)):a["dynCall_"+e].call(null,b)},functionPointers:[],
|
||||
addFunction:function(a){for(var b=0;b<m.functionPointers.length;b++)if(!m.functionPointers[b])return m.functionPointers[b]=a,2*(1+b);throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";},removeFunction:function(a){m.functionPointers[(a-2)/2]=null},warnOnce:function(e){m.warnOnce.shown||(m.warnOnce.shown={});m.warnOnce.shown[e]||(m.warnOnce.shown[e]=1,a.printErr(e))},funcWrappers:{},getFuncWrapper:function(a,b){if(a){f(b);m.funcWrappers[b]||(m.funcWrappers[b]=
|
||||
{});var c=m.funcWrappers[b];c[a]||(c[a]=1===b.length?function(){return m.dynCall(b,a)}:2===b.length?function(c){return m.dynCall(b,a,[c])}:function(){return m.dynCall(b,a,Array.prototype.slice.call(arguments))});return c[a]}},getCompilerSetting:function(a){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work";},stackAlloc:function(a){var b=U;U=U+a|0;U=U+15&-16;return b},staticAlloc:function(a){var b=aa;aa=aa+a|0;aa=aa+15&
|
||||
-16;return b},dynamicAlloc:function(a){var b=x[ba>>2];a=(b+a+15|0)&-16;x[ba>>2]=a;return a>=y&&!Ma()?(x[ba>>2]=b,0):b},alignMemory:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},makeBigInt:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0},ua=0,Ua="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var Aa=65536,Sa=16777216,ib=16777216,fa,T,za,
|
||||
Oa,x,Pa,Qa,Ra,aa,Ga,U,xa,Ha,ba;var Ia=aa=Ga=U=xa=Ha=ba=0;a.reallocBuffer||(a.reallocBuffer=function(a){try{if(ArrayBuffer.transfer)var b=ArrayBuffer.transfer(F,a);else{var c=fa;b=new ArrayBuffer(a);(new Int8Array(b)).set(c)}}catch(l){return!1}return Db(b)?b:!1});try{var Ja=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);Ja(new ArrayBuffer(4))}catch(e){Ja=function(a){return a.byteLength}}var Ka=a.TOTAL_STACK||5242880,y=a.TOTAL_MEMORY||16777216;
|
||||
y<Ka&&a.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+y+"! (TOTAL_STACK="+Ka+")");if(a.buffer)var F=a.buffer;else"object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(a.wasmMemory=new WebAssembly.Memory({initial:y/Aa}),F=a.wasmMemory.buffer):F=new ArrayBuffer(y);D();x[0]=1668509029;za[1]=25459;if(115!==T[2]||99!==T[3])throw"Runtime error: expected the system to be little-endian!";a.HEAP=void 0;a.buffer=F;a.HEAP8=fa;a.HEAP16=za;a.HEAP32=x;a.HEAPU8=T;a.HEAPU16=Oa;
|
||||
a.HEAPU32=Pa;a.HEAPF32=Qa;a.HEAPF64=Ra;var $a=[],Wa=[],Xa=[],db=[],Ya=[],Va=!1;f(Math.imul&&Math.fround&&Math.clz32&&Math.trunc,"this is a legacy browser, build with LEGACY_VM_SUPPORT");var ha=0,Ba=null,sa=null;a.preloadedImages={};a.preloadedAudios={};var V=null;(function(){function e(){try{if(a.wasmBinary)return new Uint8Array(a.wasmBinary);if(a.readBinary)return a.readBinary(d);throw"on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)";
|
||||
}catch(jb){W(jb)}}function b(){return a.wasmBinary||!oa&&!ka||"function"!==typeof fetch?new Promise(function(a,b){a(e())}):fetch(d,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+d+"'";return a.arrayBuffer()}).catch(function(){return e()})}function c(c,e,l){function f(b,c){h=b.exports;if(h.memory){b=h.memory;c=a.buffer;b.byteLength<c.byteLength&&a.printErr("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here");
|
||||
c=new Int8Array(c);var e=new Int8Array(b);V||c.set(e.subarray(a.STATIC_BASE,a.STATIC_BASE+a.STATIC_BUMP),a.STATIC_BASE);e.set(c);a.buffer=F=b;D()}a.asm=h;a.usingWasm=!0;Na("wasm-instantiate")}function E(a){f(a.instance,a.module)}function k(c){b().then(function(a){return WebAssembly.instantiate(a,g)}).then(c).catch(function(b){a.printErr("failed to asynchronously prepare wasm: "+b);W(b)})}if("object"!==typeof WebAssembly)return a.printErr("no native wasm support detected"),!1;if(!(a.wasmMemory instanceof
|
||||
WebAssembly.Memory))return a.printErr("no native wasm Memory in use"),!1;e.memory=a.wasmMemory;g.global={NaN:NaN,Infinity:Infinity};g["global.Math"]=c.Math;g.env=e;la("wasm-instantiate");if(a.instantiateWasm)try{return a.instantiateWasm(g,f)}catch(kb){return a.printErr("Module.instantiateWasm callback failed with error: "+kb),!1}a.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||0===d.indexOf("data:")||"function"!==typeof fetch?k(E):WebAssembly.instantiateStreaming(fetch(d,{credentials:"same-origin"}),
|
||||
g).then(E).catch(function(b){a.printErr("wasm streaming compile failed: "+b);a.printErr("falling back to ArrayBuffer instantiation");k(E)});return{}}var d="draco_decoder.wasm",f="draco_decoder.temp.asm.js";"function"===typeof a.locateFile&&(a.locateFile("draco_decoder.wast"),d=a.locateFile(d),f=a.locateFile(f));var g={global:null,env:null,asm2wasm:{"f64-rem":function(a,b){return a%b},"debugger":function(){debugger}},parent:a},h=null;a.asmPreload=a.asm;var k=a.reallocBuffer;a.reallocBuffer=function(b){if("asmjs"===
|
||||
m)var c=k(b);else a:{b=ma(b,a.usingWasm?Aa:Sa);var e=a.buffer.byteLength;if(a.usingWasm)try{c=-1!==a.wasmMemory.grow((b-e)/65536)?a.buffer=a.wasmMemory.buffer:null;break a}catch(Jd){c=null;break a}c=void 0}return c};var m="";a.asm=function(b,e,d){if(!e.table){var l=a.wasmTableSize;void 0===l&&(l=1024);var f=a.wasmMaxTableSize;e.table="object"===typeof WebAssembly&&"function"===typeof WebAssembly.Table?void 0!==f?new WebAssembly.Table({initial:l,maximum:f,element:"anyfunc"}):new WebAssembly.Table({initial:l,
|
||||
element:"anyfunc"}):Array(l);a.wasmTable=e.table}e.memoryBase||(e.memoryBase=a.STATIC_BASE);e.tableBase||(e.tableBase=0);(b=c(b,e,d))||W("no binaryen method succeeded. consider enabling more options, like interpreting, if you want that: https://github.com/kripken/emscripten/wiki/WebAssembly#binaryen-methods");return b}})();Ia=m.GLOBAL_BASE;aa=Ia+14496;Wa.push();V=null;a.STATIC_BASE=Ia;a.STATIC_BUMP=14496;var Eb=aa;aa+=16;var A={last:0,caught:[],infos:{},deAdjust:function(a){if(!a||A.infos[a])return a;
|
||||
for(var b in A.infos)if(A.infos[b].adjusted===a)return b;return a},addRef:function(a){a&&A.infos[a].refcount++},decRef:function(e){if(e){var b=A.infos[e];f(0<b.refcount);b.refcount--;0!==b.refcount||b.rethrown||(b.destructor&&a.dynCall_vi(b.destructor,e),delete A.infos[e],___cxa_free_exception(e))}},clearRef:function(a){a&&(A.infos[a].refcount=0)}},w={varargs:0,get:function(a){w.varargs+=4;return x[w.varargs-4>>2]},getStr:function(){return n(w.get())},get64:function(){var a=w.get(),b=w.get();0<=a?
|
||||
f(0===b):f(-1===b);return a},getZero:function(){f(0===w.get())}},ya={},La=1;db.push(function(){var e=a._fflush;e&&e(0);if(e=Q.printChar){var b=Q.buffers;b[1].length&&e(1,10);b[2].length&&e(2,10)}});ba=m.staticAlloc(4);Ga=U=m.alignMemory(aa);xa=Ga+Ka;Ha=m.alignMemory(xa);x[ba>>2]=Ha;a.wasmTableSize=468;a.wasmMaxTableSize=468;a.asmGlobalArg={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,
|
||||
Float64Array:Float64Array,NaN:NaN,Infinity:Infinity,byteLength:Ja};a.asmLibraryArg={abort:W,assert:f,enlargeMemory:Ma,getTotalMemory:function(){return y},abortOnCannotGrowMemory:function(){W("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+y+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},
|
||||
invoke_ii:function(e,b){try{return a.dynCall_ii(e,b)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_iii:function(e,b,c){try{return a.dynCall_iii(e,b,c)}catch(l){if("number"!==typeof l&&"longjmp"!==l)throw l;a.setThrew(1,0)}},invoke_iiii:function(e,b,c,d){try{return a.dynCall_iiii(e,b,c,d)}catch(E){if("number"!==typeof E&&"longjmp"!==E)throw E;a.setThrew(1,0)}},invoke_iiiiiii:function(e,b,c,d,f,g,h){try{return a.dynCall_iiiiiii(e,b,c,d,f,g,h)}catch(ja){if("number"!==
|
||||
typeof ja&&"longjmp"!==ja)throw ja;a.setThrew(1,0)}},invoke_v:function(e){try{a.dynCall_v(e)}catch(b){if("number"!==typeof b&&"longjmp"!==b)throw b;a.setThrew(1,0)}},invoke_vi:function(e,b){try{a.dynCall_vi(e,b)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_vii:function(e,b,c){try{a.dynCall_vii(e,b,c)}catch(l){if("number"!==typeof l&&"longjmp"!==l)throw l;a.setThrew(1,0)}},invoke_viii:function(e,b,c,d){try{a.dynCall_viii(e,b,c,d)}catch(E){if("number"!==typeof E&&
|
||||
"longjmp"!==E)throw E;a.setThrew(1,0)}},invoke_viiii:function(e,b,c,d,f){try{a.dynCall_viiii(e,b,c,d,f)}catch(ta){if("number"!==typeof ta&&"longjmp"!==ta)throw ta;a.setThrew(1,0)}},invoke_viiiii:function(e,b,c,d,f,g){try{a.dynCall_viiiii(e,b,c,d,f,g)}catch(ia){if("number"!==typeof ia&&"longjmp"!==ia)throw ia;a.setThrew(1,0)}},invoke_viiiiii:function(e,b,c,d,f,g,h){try{a.dynCall_viiiiii(e,b,c,d,f,g,h)}catch(ja){if("number"!==typeof ja&&"longjmp"!==ja)throw ja;a.setThrew(1,0)}},__ZSt18uncaught_exceptionv:na,
|
||||
___cxa_allocate_exception:function(a){return Ta(a)},___cxa_begin_catch:function(a){var b=A.infos[a];b&&!b.caught&&(b.caught=!0,na.uncaught_exception--);b&&(b.rethrown=!1);A.caught.push(a);A.addRef(A.deAdjust(a));return a},___cxa_find_matching_catch:qa,___cxa_pure_virtual:function(){ua=!0;throw"Pure virtual function called!";},___cxa_throw:function(a,b,c){A.infos[a]={ptr:a,adjusted:a,type:b,destructor:c,refcount:0,caught:!1,rethrown:!1};A.last=a;"uncaught_exception"in na?na.uncaught_exception++:na.uncaught_exception=
|
||||
1;throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},___gxx_personality_v0:function(){},___resumeException:function(a){A.last||(A.last=a);throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},___setErrNo:function(e){a.___errno_location&&(x[a.___errno_location()>>2]=e);return e},
|
||||
___syscall140:function(a,b){w.varargs=b;try{var c=w.getStreamFromFD();w.get();var e=w.get(),d=w.get(),f=w.get();FS.llseek(c,e,f);x[d>>2]=c.position;c.getdents&&0===e&&0===f&&(c.getdents=null);return 0}catch(ia){return"undefined"!==typeof FS&&ia instanceof FS.ErrnoError||W(ia),-ia.errno}},___syscall146:Q,___syscall6:function(a,b){w.varargs=b;try{var c=w.getStreamFromFD();FS.close(c);return 0}catch(l){return"undefined"!==typeof FS&&l instanceof FS.ErrnoError||W(l),-l.errno}},_abort:function(){a.abort()},
|
||||
_emscripten_memcpy_big:function(a,b,c){T.set(T.subarray(b,b+c),a);return a},_pthread_getspecific:function(a){return ya[a]||0},_pthread_key_create:function(a,b){if(0==a)return 22;x[a>>2]=La;ya[La]=0;La++;return 0},_pthread_once:ra,_pthread_setspecific:function(a,b){if(!(a in ya))return 22;ya[a]=b;return 0},DYNAMICTOP_PTR:ba,tempDoublePtr:Eb,ABORT:ua,STACKTOP:U,STACK_MAX:xa};var eb=a.asm(a.asmGlobalArg,a.asmLibraryArg,F);a.asm=eb;a.___cxa_can_catch=function(){return a.asm.___cxa_can_catch.apply(null,
|
||||
arguments)};a.___cxa_is_pointer_type=function(){return a.asm.___cxa_is_pointer_type.apply(null,arguments)};var pb=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,arguments)},Fb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},
|
||||
Gb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null,arguments)},Hb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,arguments)},sb=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,
|
||||
arguments)},Ib=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},Jb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,arguments)},Kb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,
|
||||
arguments)},Lb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)},Mb=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,arguments)},rb=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return a.asm._emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,
|
||||
arguments)},Nb=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm._emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},Ob=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm._emscripten_bind_AttributeTransformData_transform_type_0.apply(null,arguments)},yb=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm._emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},Pb=a._emscripten_bind_DecoderBuffer_Init_2=
|
||||
function(){return a.asm._emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},Qb=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm._emscripten_bind_DecoderBuffer___destroy___0.apply(null,arguments)},Rb=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null,arguments)},Sb=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,
|
||||
arguments)},zb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm._emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},Tb=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeByUniqueId_2.apply(null,arguments)},Ub=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Vb=a._emscripten_bind_Decoder_GetAttributeFloat_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Wb=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},Xb=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,arguments)},Yb=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeId_2.apply(null,
|
||||
arguments)},Zb=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3.apply(null,arguments)},$b=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3.apply(null,arguments)},ac=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3.apply(null,arguments)},
|
||||
bc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3.apply(null,arguments)},cc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null,arguments)},dc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3.apply(null,arguments)},ec=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3.apply(null,arguments)},fc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3.apply(null,arguments)},gc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return a.asm._emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},hc=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=function(){return a.asm._emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,
|
||||
arguments)},ic=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm._emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},jc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm._emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},kc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,arguments)},lc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm._emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,
|
||||
arguments)},mc=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm._emscripten_bind_Decoder___destroy___0.apply(null,arguments)},wb=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null,arguments)},nc=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},oc=a._emscripten_bind_DracoFloat32Array___destroy___0=
|
||||
function(){return a.asm._emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},pc=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_size_0.apply(null,arguments)},vb=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return a.asm._emscripten_bind_DracoInt16Array_DracoInt16Array_0.apply(null,arguments)},qc=a._emscripten_bind_DracoInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt16Array_GetValue_1.apply(null,
|
||||
arguments)},rc=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt16Array___destroy___0.apply(null,arguments)},sc=a._emscripten_bind_DracoInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoInt16Array_size_0.apply(null,arguments)},Bb=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm._emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,arguments)},tc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt32Array_GetValue_1.apply(null,
|
||||
arguments)},uc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},vc=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoInt32Array_size_0.apply(null,arguments)},tb=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return a.asm._emscripten_bind_DracoInt8Array_DracoInt8Array_0.apply(null,arguments)},wc=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt8Array_GetValue_1.apply(null,
|
||||
arguments)},xc=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt8Array___destroy___0.apply(null,arguments)},yc=a._emscripten_bind_DracoInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoInt8Array_size_0.apply(null,arguments)},lb=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0.apply(null,arguments)},zc=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt16Array_GetValue_1.apply(null,
|
||||
arguments)},Ac=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt16Array___destroy___0.apply(null,arguments)},Bc=a._emscripten_bind_DracoUInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_size_0.apply(null,arguments)},ob=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0.apply(null,arguments)},Cc=a._emscripten_bind_DracoUInt32Array_GetValue_1=
|
||||
function(){return a.asm._emscripten_bind_DracoUInt32Array_GetValue_1.apply(null,arguments)},Dc=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt32Array___destroy___0.apply(null,arguments)},Ec=a._emscripten_bind_DracoUInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_size_0.apply(null,arguments)},nb=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0.apply(null,
|
||||
arguments)},Fc=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt8Array_GetValue_1.apply(null,arguments)},Gc=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt8Array___destroy___0.apply(null,arguments)},Hc=a._emscripten_bind_DracoUInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_size_0.apply(null,arguments)},xb=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm._emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null,
|
||||
arguments)},Ic=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm._emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},Ab=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm._emscripten_bind_Mesh_Mesh_0.apply(null,arguments)},Jc=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm._emscripten_bind_Mesh___destroy___0.apply(null,arguments)},Kc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm._emscripten_bind_Mesh_num_attributes_0.apply(null,
|
||||
arguments)},Lc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm._emscripten_bind_Mesh_num_faces_0.apply(null,arguments)},Mc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm._emscripten_bind_Mesh_num_points_0.apply(null,arguments)},Nc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},Oc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetEntryName_2.apply(null,
|
||||
arguments)},Pc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},Qc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},Rc=a._emscripten_bind_MetadataQuerier_HasDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasDoubleEntry_2.apply(null,arguments)},Sc=a._emscripten_bind_MetadataQuerier_HasEntry_2=
|
||||
function(){return a.asm._emscripten_bind_MetadataQuerier_HasEntry_2.apply(null,arguments)},Tc=a._emscripten_bind_MetadataQuerier_HasIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasIntEntry_2.apply(null,arguments)},Uc=a._emscripten_bind_MetadataQuerier_HasStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasStringEntry_2.apply(null,arguments)},ub=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm._emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,
|
||||
arguments)},Vc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return a.asm._emscripten_bind_MetadataQuerier_NumEntries_1.apply(null,arguments)},Wc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm._emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},Cb=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm._emscripten_bind_Metadata_Metadata_0.apply(null,arguments)},Xc=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm._emscripten_bind_Metadata___destroy___0.apply(null,
|
||||
arguments)},Yc=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm._emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},qb=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return a.asm._emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},Zc=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm._emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},$c=a._emscripten_bind_PointAttribute_attribute_type_0=
|
||||
function(){return a.asm._emscripten_bind_PointAttribute_attribute_type_0.apply(null,arguments)},ad=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},bd=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_stride_0.apply(null,arguments)},cd=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm._emscripten_bind_PointAttribute_data_type_0.apply(null,
|
||||
arguments)},dd=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm._emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},ed=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm._emscripten_bind_PointAttribute_num_components_0.apply(null,arguments)},fd=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm._emscripten_bind_PointAttribute_size_0.apply(null,arguments)},gd=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm._emscripten_bind_PointAttribute_unique_id_0.apply(null,
|
||||
arguments)},mb=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm._emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},hd=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm._emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},id=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm._emscripten_bind_PointCloud_num_attributes_0.apply(null,arguments)},jd=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm._emscripten_bind_PointCloud_num_points_0.apply(null,
|
||||
arguments)},kd=a._emscripten_bind_Status___destroy___0=function(){return a.asm._emscripten_bind_Status___destroy___0.apply(null,arguments)},ld=a._emscripten_bind_Status_code_0=function(){return a.asm._emscripten_bind_Status_code_0.apply(null,arguments)},md=a._emscripten_bind_Status_error_msg_0=function(){return a.asm._emscripten_bind_Status_error_msg_0.apply(null,arguments)},nd=a._emscripten_bind_Status_ok_0=function(){return a.asm._emscripten_bind_Status_ok_0.apply(null,arguments)},od=a._emscripten_bind_VoidPtr___destroy___0=
|
||||
function(){return a.asm._emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},pd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null,arguments)},qd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)},rd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=
|
||||
function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null,arguments)},sd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},td=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null,
|
||||
arguments)},ud=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},vd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},wd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},xd=
|
||||
a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)},yd=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},zd=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},Ad=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=
|
||||
function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},Bd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},Cd=a._emscripten_enum_draco_StatusCode_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_ERROR.apply(null,arguments)},Dd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return a.asm._emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,
|
||||
arguments)},Ed=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},Fd=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm._emscripten_enum_draco_StatusCode_OK.apply(null,arguments)},Gd=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},Hd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null,
|
||||
arguments)};a._emscripten_get_global_libc=function(){return a.asm._emscripten_get_global_libc.apply(null,arguments)};var Db=a._emscripten_replace_memory=function(){return a.asm._emscripten_replace_memory.apply(null,arguments)};a._free=function(){return a.asm._free.apply(null,arguments)};a._llvm_bswap_i32=function(){return a.asm._llvm_bswap_i32.apply(null,arguments)};var Ta=a._malloc=function(){return a.asm._malloc.apply(null,arguments)};a._memcpy=function(){return a.asm._memcpy.apply(null,arguments)};
|
||||
a._memmove=function(){return a.asm._memmove.apply(null,arguments)};a._memset=function(){return a.asm._memset.apply(null,arguments)};a._sbrk=function(){return a.asm._sbrk.apply(null,arguments)};a.establishStackSpace=function(){return a.asm.establishStackSpace.apply(null,arguments)};a.getTempRet0=function(){return a.asm.getTempRet0.apply(null,arguments)};a.runPostSets=function(){return a.asm.runPostSets.apply(null,arguments)};a.setTempRet0=function(){return a.asm.setTempRet0.apply(null,arguments)};
|
||||
a.setThrew=function(){return a.asm.setThrew.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};
|
||||
a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)};a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,
|
||||
arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};m.stackAlloc=a.stackAlloc;m.stackSave=a.stackSave;m.stackRestore=a.stackRestore;m.establishStackSpace=a.establishStackSpace;m.setTempRet0=a.setTempRet0;m.getTempRet0=a.getTempRet0;a.asm=eb;if(V)if("function"===typeof a.locateFile?V=a.locateFile(V):a.memoryInitializerPrefixURL&&(V=a.memoryInitializerPrefixURL+V),pa||wa){var Id=a.readBinary(V);T.set(Id,m.GLOBAL_BASE)}else{var gb=function(){a.readAsync(V,fb,
|
||||
function(){throw"could not load memory initializer "+V;})};la("memory initializer");var fb=function(d){d.byteLength&&(d=new Uint8Array(d));T.set(d,m.GLOBAL_BASE);a.memoryInitializerRequest&&delete a.memoryInitializerRequest.response;Na("memory initializer")};if(a.memoryInitializerRequest){var hb=function(){var d=a.memoryInitializerRequest,b=d.response;200!==d.status&&0!==d.status?(console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+d.status+", retrying "+
|
||||
V),gb()):fb(b)};a.memoryInitializerRequest.response?setTimeout(hb,0):a.memoryInitializerRequest.addEventListener("load",hb)}else gb()}a.then=function(d){if(a.calledRun)d(a);else{var b=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){b&&b();d(a)}}return a};ea.prototype=Error();ea.prototype.constructor=ea;var Za=null;sa=function b(){a.calledRun||Da();a.calledRun||(sa=b)};a.run=Da;a.exit=function(b,c){if(!c||!a.noExitRuntime){if(!a.noExitRuntime&&(ua=!0,U=void 0,u(db),a.onExit))a.onExit(b);pa&&
|
||||
process.exit(b);a.quit(b,new ea(b))}};var ab=[];a.abort=W;if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();Da();p.prototype=Object.create(p.prototype);p.prototype.constructor=p;p.prototype.__class__=p;p.__cache__={};a.WrapperObject=p;a.getCache=t;a.wrapPointer=X;a.castObject=function(a,c){return X(a.ptr,c)};a.NULL=X(0);a.destroy=function(a){if(!a.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";a.__destroy__();
|
||||
delete t(a.__class__)[a.ptr]};a.compare=function(a,c){return a.ptr===c.ptr};a.getPointer=function(a){return a.ptr};a.getClass=function(a){return a.__class__};var k={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(k.needed){for(var b=0;b<k.temps.length;b++)a._free(k.temps[b]);k.temps.length=0;a._free(k.buffer);k.buffer=0;k.size+=k.needed;k.needed=0}k.buffer||(k.size+=128,k.buffer=a._malloc(k.size),f(k.buffer));k.pos=0},alloc:function(b,c){f(k.buffer);b=b.length*c.BYTES_PER_ELEMENT;b=
|
||||
b+7&-8;k.pos+b>=k.size?(f(0<b),k.needed+=b,c=a._malloc(b),k.temps.push(c)):(c=k.buffer+k.pos,k.pos+=b);return c},copy:function(a,c,d){switch(c.BYTES_PER_ELEMENT){case 2:d>>=1;break;case 4:d>>=2;break;case 8:d>>=3}for(var b=0;b<a.length;b++)c[d+b]=a[b]}};B.prototype=Object.create(p.prototype);B.prototype.constructor=B;B.prototype.__class__=B;B.__cache__={};a.Status=B;B.prototype.code=B.prototype.code=function(){return ld(this.ptr)};B.prototype.ok=B.prototype.ok=function(){return!!nd(this.ptr)};B.prototype.error_msg=
|
||||
B.prototype.error_msg=function(){return n(md(this.ptr))};B.prototype.__destroy__=B.prototype.__destroy__=function(){kd(this.ptr)};G.prototype=Object.create(p.prototype);G.prototype.constructor=G;G.prototype.__class__=G;G.__cache__={};a.DracoUInt16Array=G;G.prototype.GetValue=G.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return zc(b,a)};G.prototype.size=G.prototype.size=function(){return Bc(this.ptr)};G.prototype.__destroy__=G.prototype.__destroy__=function(){Ac(this.ptr)};
|
||||
H.prototype=Object.create(p.prototype);H.prototype.constructor=H;H.prototype.__class__=H;H.__cache__={};a.PointCloud=H;H.prototype.num_attributes=H.prototype.num_attributes=function(){return id(this.ptr)};H.prototype.num_points=H.prototype.num_points=function(){return jd(this.ptr)};H.prototype.__destroy__=H.prototype.__destroy__=function(){hd(this.ptr)};I.prototype=Object.create(p.prototype);I.prototype.constructor=I;I.prototype.__class__=I;I.__cache__={};a.DracoUInt8Array=I;I.prototype.GetValue=
|
||||
I.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Fc(b,a)};I.prototype.size=I.prototype.size=function(){return Hc(this.ptr)};I.prototype.__destroy__=I.prototype.__destroy__=function(){Gc(this.ptr)};J.prototype=Object.create(p.prototype);J.prototype.constructor=J;J.prototype.__class__=J;J.__cache__={};a.DracoUInt32Array=J;J.prototype.GetValue=J.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Cc(b,a)};J.prototype.size=J.prototype.size=
|
||||
function(){return Ec(this.ptr)};J.prototype.__destroy__=J.prototype.__destroy__=function(){Dc(this.ptr)};K.prototype=Object.create(p.prototype);K.prototype.constructor=K;K.prototype.__class__=K;K.__cache__={};a.AttributeOctahedronTransform=K;K.prototype.InitFromAttribute=K.prototype.InitFromAttribute=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!Fb(b,a)};K.prototype.quantization_bits=K.prototype.quantization_bits=function(){return Hb(this.ptr)};K.prototype.__destroy__=K.prototype.__destroy__=
|
||||
function(){Gb(this.ptr)};q.prototype=Object.create(p.prototype);q.prototype.constructor=q;q.prototype.__class__=q;q.__cache__={};a.PointAttribute=q;q.prototype.size=q.prototype.size=function(){return fd(this.ptr)};q.prototype.GetAttributeTransformData=q.prototype.GetAttributeTransformData=function(){return X(Yc(this.ptr),P)};q.prototype.attribute_type=q.prototype.attribute_type=function(){return $c(this.ptr)};q.prototype.data_type=q.prototype.data_type=function(){return cd(this.ptr)};q.prototype.num_components=
|
||||
q.prototype.num_components=function(){return ed(this.ptr)};q.prototype.normalized=q.prototype.normalized=function(){return!!dd(this.ptr)};q.prototype.byte_stride=q.prototype.byte_stride=function(){return bd(this.ptr)};q.prototype.byte_offset=q.prototype.byte_offset=function(){return ad(this.ptr)};q.prototype.unique_id=q.prototype.unique_id=function(){return gd(this.ptr)};q.prototype.__destroy__=q.prototype.__destroy__=function(){Zc(this.ptr)};P.prototype=Object.create(p.prototype);P.prototype.constructor=
|
||||
P;P.prototype.__class__=P;P.__cache__={};a.AttributeTransformData=P;P.prototype.transform_type=P.prototype.transform_type=function(){return Ob(this.ptr)};P.prototype.__destroy__=P.prototype.__destroy__=function(){Nb(this.ptr)};z.prototype=Object.create(p.prototype);z.prototype.constructor=z;z.prototype.__class__=z;z.__cache__={};a.AttributeQuantizationTransform=z;z.prototype.InitFromAttribute=z.prototype.InitFromAttribute=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!Ib(b,a)};
|
||||
z.prototype.quantization_bits=z.prototype.quantization_bits=function(){return Lb(this.ptr)};z.prototype.min_value=z.prototype.min_value=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Kb(b,a)};z.prototype.range=z.prototype.range=function(){return Mb(this.ptr)};z.prototype.__destroy__=z.prototype.__destroy__=function(){Jb(this.ptr)};L.prototype=Object.create(p.prototype);L.prototype.constructor=L;L.prototype.__class__=L;L.__cache__={};a.DracoInt8Array=L;L.prototype.GetValue=L.prototype.GetValue=
|
||||
function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return wc(b,a)};L.prototype.size=L.prototype.size=function(){return yc(this.ptr)};L.prototype.__destroy__=L.prototype.__destroy__=function(){xc(this.ptr)};r.prototype=Object.create(p.prototype);r.prototype.constructor=r;r.prototype.__class__=r;r.__cache__={};a.MetadataQuerier=r;r.prototype.HasEntry=r.prototype.HasEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return!!Sc(b,
|
||||
a,c)};r.prototype.HasIntEntry=r.prototype.HasIntEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return!!Tc(b,a,c)};r.prototype.GetIntEntry=r.prototype.GetIntEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return Pc(b,a,c)};r.prototype.HasDoubleEntry=r.prototype.HasDoubleEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===
|
||||
typeof c?c.ptr:Y(c);return!!Rc(b,a,c)};r.prototype.GetDoubleEntry=r.prototype.GetDoubleEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return Nc(b,a,c)};r.prototype.HasStringEntry=r.prototype.HasStringEntry=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return!!Uc(b,a,c)};r.prototype.GetStringEntry=r.prototype.GetStringEntry=function(a,c){var b=this.ptr;k.prepare();
|
||||
a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return n(Qc(b,a,c))};r.prototype.NumEntries=r.prototype.NumEntries=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Vc(b,a)};r.prototype.GetEntryName=r.prototype.GetEntryName=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return n(Oc(b,a,c))};r.prototype.__destroy__=r.prototype.__destroy__=function(){Wc(this.ptr)};M.prototype=Object.create(p.prototype);M.prototype.constructor=
|
||||
M;M.prototype.__class__=M;M.__cache__={};a.DracoInt16Array=M;M.prototype.GetValue=M.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return qc(b,a)};M.prototype.size=M.prototype.size=function(){return sc(this.ptr)};M.prototype.__destroy__=M.prototype.__destroy__=function(){rc(this.ptr)};N.prototype=Object.create(p.prototype);N.prototype.constructor=N;N.prototype.__class__=N;N.__cache__={};a.DracoFloat32Array=N;N.prototype.GetValue=N.prototype.GetValue=function(a){var b=
|
||||
this.ptr;a&&"object"===typeof a&&(a=a.ptr);return nc(b,a)};N.prototype.size=N.prototype.size=function(){return pc(this.ptr)};N.prototype.__destroy__=N.prototype.__destroy__=function(){oc(this.ptr)};Z.prototype=Object.create(p.prototype);Z.prototype.constructor=Z;Z.prototype.__class__=Z;Z.__cache__={};a.GeometryAttribute=Z;Z.prototype.__destroy__=Z.prototype.__destroy__=function(){Ic(this.ptr)};R.prototype=Object.create(p.prototype);R.prototype.constructor=R;R.prototype.__class__=R;R.__cache__={};
|
||||
a.DecoderBuffer=R;R.prototype.Init=R.prototype.Init=function(a,c){var b=this.ptr;k.prepare();if("object"==typeof a&&"object"===typeof a){var d=k.alloc(a,fa);k.copy(a,fa,d);a=d}c&&"object"===typeof c&&(c=c.ptr);Pb(b,a,c)};R.prototype.__destroy__=R.prototype.__destroy__=function(){Qb(this.ptr)};h.prototype=Object.create(p.prototype);h.prototype.constructor=h;h.prototype.__class__=h;h.__cache__={};a.Decoder=h;h.prototype.GetEncodedGeometryType=h.prototype.GetEncodedGeometryType=function(a){var b=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);return hc(b,a)};h.prototype.DecodeBufferToPointCloud=h.prototype.DecodeBufferToPointCloud=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(Sb(b,a,c),B)};h.prototype.DecodeBufferToMesh=h.prototype.DecodeBufferToMesh=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(Rb(b,a,c),B)};h.prototype.GetAttributeId=h.prototype.GetAttributeId=function(a,c){var b=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return Yb(b,a,c)};h.prototype.GetAttributeIdByName=h.prototype.GetAttributeIdByName=function(a,c){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);return Xb(b,a,c)};h.prototype.GetAttributeIdByMetadataEntry=h.prototype.GetAttributeIdByMetadataEntry=function(a,c,d){var b=this.ptr;k.prepare();a&&"object"===typeof a&&(a=a.ptr);c=c&&"object"===typeof c?c.ptr:Y(c);d=d&&"object"===typeof d?
|
||||
d.ptr:Y(d);return Wb(b,a,c,d)};h.prototype.GetAttribute=h.prototype.GetAttribute=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(gc(b,a,c),q)};h.prototype.GetAttributeByUniqueId=h.prototype.GetAttributeByUniqueId=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(Tb(b,a,c),q)};h.prototype.GetMetadata=h.prototype.GetMetadata=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return X(jc(b,
|
||||
a),S)};h.prototype.GetAttributeMetadata=h.prototype.GetAttributeMetadata=function(a,c){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return X(cc(b,a,c),S)};h.prototype.GetFaceFromMesh=h.prototype.GetFaceFromMesh=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!ic(b,a,c,d)};h.prototype.GetTriangleStripsFromMesh=h.prototype.GetTriangleStripsFromMesh=function(a,c){var b=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);return kc(b,a,c)};h.prototype.GetAttributeFloat=h.prototype.GetAttributeFloat=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Vb(b,a,c,d)};h.prototype.GetAttributeFloatForAllPoints=h.prototype.GetAttributeFloatForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&
|
||||
(d=d.ptr);return!!Ub(b,a,c,d)};h.prototype.GetAttributeIntForAllPoints=h.prototype.GetAttributeIntForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!bc(b,a,c,d)};h.prototype.GetAttributeInt8ForAllPoints=h.prototype.GetAttributeInt8ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!ac(b,a,c,d)};
|
||||
h.prototype.GetAttributeUInt8ForAllPoints=h.prototype.GetAttributeUInt8ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!fc(b,a,c,d)};h.prototype.GetAttributeInt16ForAllPoints=h.prototype.GetAttributeInt16ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Zb(b,a,c,d)};h.prototype.GetAttributeUInt16ForAllPoints=
|
||||
h.prototype.GetAttributeUInt16ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!dc(b,a,c,d)};h.prototype.GetAttributeInt32ForAllPoints=h.prototype.GetAttributeInt32ForAllPoints=function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!$b(b,a,c,d)};h.prototype.GetAttributeUInt32ForAllPoints=h.prototype.GetAttributeUInt32ForAllPoints=
|
||||
function(a,c,d){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);c&&"object"===typeof c&&(c=c.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!ec(b,a,c,d)};h.prototype.SkipAttributeTransform=h.prototype.SkipAttributeTransform=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);lc(b,a)};h.prototype.__destroy__=h.prototype.__destroy__=function(){mc(this.ptr)};C.prototype=Object.create(p.prototype);C.prototype.constructor=C;C.prototype.__class__=C;C.__cache__={};a.Mesh=C;C.prototype.num_faces=
|
||||
C.prototype.num_faces=function(){return Lc(this.ptr)};C.prototype.num_attributes=C.prototype.num_attributes=function(){return Kc(this.ptr)};C.prototype.num_points=C.prototype.num_points=function(){return Mc(this.ptr)};C.prototype.__destroy__=C.prototype.__destroy__=function(){Jc(this.ptr)};ca.prototype=Object.create(p.prototype);ca.prototype.constructor=ca;ca.prototype.__class__=ca;ca.__cache__={};a.VoidPtr=ca;ca.prototype.__destroy__=ca.prototype.__destroy__=function(){od(this.ptr)};O.prototype=
|
||||
Object.create(p.prototype);O.prototype.constructor=O;O.prototype.__class__=O;O.__cache__={};a.DracoInt32Array=O;O.prototype.GetValue=O.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return tc(b,a)};O.prototype.size=O.prototype.size=function(){return vc(this.ptr)};O.prototype.__destroy__=O.prototype.__destroy__=function(){uc(this.ptr)};S.prototype=Object.create(p.prototype);S.prototype.constructor=S;S.prototype.__class__=S;S.__cache__={};a.Metadata=S;S.prototype.__destroy__=
|
||||
S.prototype.__destroy__=function(){Xc(this.ptr)};(function(){function b(){a.OK=Fd();a.ERROR=Cd();a.IO_ERROR=Ed();a.INVALID_PARAMETER=Dd();a.UNSUPPORTED_VERSION=Hd();a.UNKNOWN_VERSION=Gd();a.INVALID_GEOMETRY_TYPE=td();a.POINT_CLOUD=ud();a.TRIANGULAR_MESH=vd();a.ATTRIBUTE_INVALID_TRANSFORM=pd();a.ATTRIBUTE_NO_TRANSFORM=qd();a.ATTRIBUTE_QUANTIZATION_TRANSFORM=sd();a.ATTRIBUTE_OCTAHEDRON_TRANSFORM=rd();a.INVALID=yd();a.POSITION=Ad();a.NORMAL=zd();a.COLOR=wd();a.TEX_COORD=Bd();a.GENERIC=xd()}a.calledRun?
|
||||
b():Xa.unshift(b)})();if("function"===typeof a.onModuleParsed)a.onModuleParsed();return d};"object"===typeof module&&module.exports&&(module.exports=DracoDecoderModule);
|
||||
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(d,k,f){d!=Array.prototype&&d!=Object.prototype&&(d[k]=f.value)};$jscomp.getGlobal=function(d){return"undefined"!=typeof window&&window===d?d:"undefined"!=typeof global&&null!=global?global:d};$jscomp.global=$jscomp.getGlobal(this);
|
||||
$jscomp.polyfill=function(d,k,f,u){if(k){f=$jscomp.global;d=d.split(".");for(u=0;u<d.length-1;u++){var h=d[u];h in f||(f[h]={});f=f[h]}d=d[d.length-1];u=f[d];k=k(u);k!=u&&null!=k&&$jscomp.defineProperty(f,d,{configurable:!0,writable:!0,value:k})}};$jscomp.polyfill("Math.imul",function(d){return d?d:function(d,f){d=Number(d);f=Number(f);var k=d&65535,h=f&65535;return k*h+((d>>>16&65535)*h+k*(f>>>16&65535)<<16>>>0)|0}},"es6","es3");
|
||||
$jscomp.polyfill("Math.clz32",function(d){return d?d:function(d){d=Number(d)>>>0;if(0===d)return 32;var f=0;0===(d&4294901760)&&(d<<=16,f+=16);0===(d&4278190080)&&(d<<=8,f+=8);0===(d&4026531840)&&(d<<=4,f+=4);0===(d&3221225472)&&(d<<=2,f+=2);0===(d&2147483648)&&f++;return f}},"es6","es3");$jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var f=Math.floor(Math.abs(d));return 0>d?-f:f}},"es6","es3");
|
||||
$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var d=0;return function(k){return $jscomp.SYMBOL_PREFIX+(k||"")+d++}}();
|
||||
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var d=$jscomp.global.Symbol.iterator;d||(d=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[d]&&$jscomp.defineProperty(Array.prototype,d,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(d){var k=0;return $jscomp.iteratorPrototype(function(){return k<d.length?{done:!1,value:d[k++]}:{done:!0}})};
|
||||
$jscomp.iteratorPrototype=function(d){$jscomp.initSymbolIterator();d={next:d};d[$jscomp.global.Symbol.iterator]=function(){return this};return d};$jscomp.makeIterator=function(d){$jscomp.initSymbolIterator();var k=d[Symbol.iterator];return k?k.call(d):$jscomp.arrayIterator(d)};$jscomp.FORCE_POLYFILL_PROMISE=!1;
|
||||
$jscomp.polyfill("Promise",function(d){function k(){this.batch_=null}function f(d){return d instanceof h?d:new h(function(r,f){r(d)})}if(d&&!$jscomp.FORCE_POLYFILL_PROMISE)return d;k.prototype.asyncExecute=function(d){null==this.batch_&&(this.batch_=[],this.asyncExecuteBatch_());this.batch_.push(d);return this};k.prototype.asyncExecuteBatch_=function(){var d=this;this.asyncExecuteFunction(function(){d.executeBatch_()})};var u=$jscomp.global.setTimeout;k.prototype.asyncExecuteFunction=function(d){u(d,
|
||||
0)};k.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var d=this.batch_;this.batch_=[];for(var B=0;B<d.length;++B){var f=d[B];delete d[B];try{f()}catch(v){this.asyncThrow_(v)}}}this.batch_=null};k.prototype.asyncThrow_=function(d){this.asyncExecuteFunction(function(){throw d;})};var h=function(d){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var r=this.createResolveAndReject_();try{d(r.resolve,r.reject)}catch(Y){r.reject(Y)}};h.prototype.createResolveAndReject_=
|
||||
function(){function d(d){return function(r){h||(h=!0,d.call(f,r))}}var f=this,h=!1;return{resolve:d(this.resolveTo_),reject:d(this.reject_)}};h.prototype.resolveTo_=function(d){if(d===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(d instanceof h)this.settleSameAsPromise_(d);else{a:switch(typeof d){case "object":var f=null!=d;break a;case "function":f=!0;break a;default:f=!1}f?this.resolveToNonPromiseObj_(d):this.fulfill_(d)}};h.prototype.resolveToNonPromiseObj_=function(d){var f=
|
||||
void 0;try{f=d.then}catch(Y){this.reject_(Y);return}"function"==typeof f?this.settleSameAsThenable_(f,d):this.fulfill_(d)};h.prototype.reject_=function(d){this.settle_(2,d)};h.prototype.fulfill_=function(d){this.settle_(1,d)};h.prototype.settle_=function(d,f){if(0!=this.state_)throw Error("Cannot settle("+d+", "+f|"): Promise already settled in state"+this.state_);this.state_=d;this.result_=f;this.executeOnSettledCallbacks_()};h.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var d=
|
||||
this.onSettledCallbacks_,f=0;f<d.length;++f)d[f].call(),d[f]=null;this.onSettledCallbacks_=null}};var ha=new k;h.prototype.settleSameAsPromise_=function(d){var f=this.createResolveAndReject_();d.callWhenSettled_(f.resolve,f.reject)};h.prototype.settleSameAsThenable_=function(d,f){var h=this.createResolveAndReject_();try{d.call(f,h.resolve,h.reject)}catch(v){h.reject(v)}};h.prototype.then=function(d,f){function k(d,f){return"function"==typeof d?function(f){try{v(d(f))}catch(O){r(O)}}:f}var v,r,B=new h(function(d,
|
||||
f){v=d;r=f});this.callWhenSettled_(k(d,v),k(f,r));return B};h.prototype.catch=function(d){return this.then(void 0,d)};h.prototype.callWhenSettled_=function(d,f){function h(){switch(k.state_){case 1:d(k.result_);break;case 2:f(k.result_);break;default:throw Error("Unexpected state: "+k.state_);}}var k=this;null==this.onSettledCallbacks_?ha.asyncExecute(h):this.onSettledCallbacks_.push(function(){ha.asyncExecute(h)})};h.resolve=f;h.reject=function(d){return new h(function(f,h){h(d)})};h.race=function(d){return new h(function(h,
|
||||
k){for(var v=$jscomp.makeIterator(d),r=v.next();!r.done;r=v.next())f(r.value).callWhenSettled_(h,k)})};h.all=function(d){var k=$jscomp.makeIterator(d),r=k.next();return r.done?f([]):new h(function(d,h){function v(f){return function(h){u[f]=h;B--;0==B&&d(u)}}var u=[],B=0;do u.push(void 0),B++,f(r.value).callWhenSettled_(v(u.length-1),h),r=k.next();while(!r.done)})};return h},"es6","es3");
|
||||
var DracoDecoderModule=function(d){function k(a,c){c||(c=16);return Math.ceil(a/c)*c}function f(a,c){a||O("Assertion failed: "+c)}function u(a,c){if(0===c||!a)return"";for(var b=0,e,d=0;;){e=W[a+d>>0];b|=e;if(0==e&&!c)break;d++;if(c&&d==c)break}c||(c=d);e="";if(128>b){for(;0<c;)b=String.fromCharCode.apply(String,W.subarray(a,a+Math.min(c,1024))),e=e?e+b:b,a+=1024,c-=1024;return e}return h(W,a)}function h(a,c){for(var b=c;a[b];)++b;if(16<b-c&&a.subarray&&Ia)return Ia.decode(a.subarray(c,b));for(b=
|
||||
"";;){var e=a[c++];if(!e)return b;if(e&128){var d=a[c++]&63;if(192==(e&224))b+=String.fromCharCode((e&31)<<6|d);else{var f=a[c++]&63;if(224==(e&240))e=(e&15)<<12|d<<6|f;else{var g=a[c++]&63;if(240==(e&248))e=(e&7)<<18|d<<12|f<<6|g;else{var h=a[c++]&63;if(248==(e&252))e=(e&3)<<24|d<<18|f<<12|g<<6|h;else{var k=a[c++]&63;e=(e&1)<<30|d<<24|f<<18|g<<12|h<<6|k}}}65536>e?b+=String.fromCharCode(e):(e-=65536,b+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else b+=String.fromCharCode(e)}}function ha(a,c){0<
|
||||
a%c&&(a+=c-a%c);return a}function r(){a.HEAP8=ia=new Int8Array(D);a.HEAP16=Ja=new Int16Array(D);a.HEAP32=E=new Int32Array(D);a.HEAPU8=W=new Uint8Array(D);a.HEAPU16=new Uint16Array(D);a.HEAPU32=new Uint32Array(D);a.HEAPF32=new Float32Array(D);a.HEAPF64=new Float64Array(D)}function B(e){for(;0<e.length;){var c=e.shift();if("function"==typeof c)c();else{var b=c.func;"number"===typeof b?void 0===c.arg?a.dynCall_v(b):a.dynCall_vi(b,c.arg):b(void 0===c.arg?null:c.arg)}}}function Y(a){return String.prototype.startsWith?
|
||||
a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}function v(){return!!v.uncaught_exception}function la(){var e=y.last;if(!e)return(sa(0),0)|0;var c=y.infos[e],b=c.type;if(!b)return(sa(0),e)|0;var p=Array.prototype.slice.call(arguments);a.___cxa_is_pointer_type(b);la.buffer||(la.buffer=Ka(4));E[la.buffer>>2]=e;e=la.buffer;for(var d=0;d<p.length;d++)if(p[d]&&a.___cxa_can_catch(p[d],b,e))return e=E[e>>2],c.adjusted=e,(sa(p[d]),e)|0;e=E[e>>2];
|
||||
return(sa(b),e)|0}function Z(e,c){w.varargs=c;try{var b=w.get(),p=w.get(),d=w.get();e=0;Z.buffers||(Z.buffers=[null,[],[]],Z.printChar=function(c,b){var e=Z.buffers[c];f(e);0===b||10===b?((1===c?a.print:a.printErr)(h(e,0)),e.length=0):e.push(b)});for(c=0;c<d;c++){for(var g=E[p+8*c>>2],k=E[p+(8*c+4)>>2],l=0;l<k;l++)Z.printChar(b,W[g+l]);e+=k}return e}catch(ya){return"undefined"!==typeof FS&&ya instanceof FS.ErrnoError||O(ya),-ya.errno}}function ma(e,c){ma.seen||(ma.seen={});e in ma.seen||(a.dynCall_v(c),
|
||||
ma.seen[e]=1)}function na(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}function wa(e){function c(){if(!a.calledRun&&(a.calledRun=!0,!oa)){La||(La=!0,B(Ma));B(Na);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Oa.unshift(a.postRun.shift());B(Oa)}}if(!(0<ea)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Pa.unshift(a.preRun.shift());
|
||||
B(Pa);0<ea||a.calledRun||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1);c()},1)):c())}}function O(e){if(a.onAbort)a.onAbort(e);void 0!==e?(a.print(e),a.printErr(e),e=JSON.stringify(e)):e="";oa=!0;throw"abort("+e+"). Build with -s ASSERTIONS=1 for more info.";}function m(){}function t(a){return(a||m).__cache__}function T(a,c){var b=t(c),e=b[a];if(e)return e;e=Object.create((c||m).prototype);e.ptr=a;return b[a]=e}function U(a){if("string"===typeof a){for(var c=
|
||||
0,b=0;b<a.length;++b){var e=a.charCodeAt(b);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++b)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:2097151>=e?c+4:67108863>=e?c+5:c+6}c=Array(c+1);b=0;e=c.length;if(0<e){e=b+e-1;for(var d=0;d<a.length;++d){var f=a.charCodeAt(d);55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++d)&1023);if(127>=f){if(b>=e)break;c[b++]=f}else{if(2047>=f){if(b+1>=e)break;c[b++]=192|f>>6}else{if(65535>=f){if(b+2>=e)break;c[b++]=224|f>>12}else{if(2097151>=f){if(b+
|
||||
3>=e)break;c[b++]=240|f>>18}else{if(67108863>=f){if(b+4>=e)break;c[b++]=248|f>>24}else{if(b+5>=e)break;c[b++]=252|f>>30;c[b++]=128|f>>24&63}c[b++]=128|f>>18&63}c[b++]=128|f>>12&63}c[b++]=128|f>>6&63}c[b++]=128|f&63}}c[b]=0}a=l.alloc(c,ia);l.copy(c,ia,a)}return a}function z(){throw"cannot construct a Status, no constructor in IDL";}function F(){this.ptr=Wa();t(F)[this.ptr]=this}function G(){this.ptr=Xa();t(G)[this.ptr]=this}function H(){this.ptr=Ya();t(H)[this.ptr]=this}function I(){this.ptr=Za();
|
||||
t(I)[this.ptr]=this}function J(){this.ptr=$a();t(J)[this.ptr]=this}function n(){this.ptr=ab();t(n)[this.ptr]=this}function P(){this.ptr=bb();t(P)[this.ptr]=this}function x(){this.ptr=cb();t(x)[this.ptr]=this}function K(){this.ptr=db();t(K)[this.ptr]=this}function q(){this.ptr=eb();t(q)[this.ptr]=this}function L(){this.ptr=fb();t(L)[this.ptr]=this}function M(){this.ptr=gb();t(M)[this.ptr]=this}function V(){this.ptr=hb();t(V)[this.ptr]=this}function Q(){this.ptr=ib();t(Q)[this.ptr]=this}function g(){this.ptr=
|
||||
jb();t(g)[this.ptr]=this}function C(){this.ptr=kb();t(C)[this.ptr]=this}function X(){throw"cannot construct a VoidPtr, no constructor in IDL";}function N(){this.ptr=lb();t(N)[this.ptr]=this}function R(){this.ptr=mb();t(R)[this.ptr]=this}d=d||{};var a="undefined"!==typeof d?d:{},Qa=!1,Ra=!1;a.onRuntimeInitialized=function(){Qa=!0;if(Ra&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Ra=!0;if(Qa&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=
|
||||
function(a){if("string"!==typeof a)return!1;a=a.split(".");return 2>a.length||3<a.length?!1:1==a[0]&&0<=a[1]&&3>=a[1]?!0:0!=a[0]||10<a[1]?!1:!0};var pa={},aa;for(aa in a)a.hasOwnProperty(aa)&&(pa[aa]=a[aa]);a.arguments=[];a.thisProgram="./this.program";a.quit=function(a,c){throw c;};a.preRun=[];a.postRun=[];var ja=!1,fa=!1,qa=!1,za=!1;if(a.ENVIRONMENT)if("WEB"===a.ENVIRONMENT)ja=!0;else if("WORKER"===a.ENVIRONMENT)fa=!0;else if("NODE"===a.ENVIRONMENT)qa=!0;else if("SHELL"===a.ENVIRONMENT)za=!0;else throw Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.");
|
||||
else ja="object"===typeof window,fa="function"===typeof importScripts,qa="object"===typeof process&&"function"===typeof require&&!ja&&!fa,za=!ja&&!qa&&!fa;if(qa){var Aa,Ba;a.read=function(a,c){Aa||(Aa=require("fs"));Ba||(Ba=require("path"));a=Ba.normalize(a);a=Aa.readFileSync(a);return c?a:a.toString()};a.readBinary=function(e){e=a.read(e,!0);e.buffer||(e=new Uint8Array(e));f(e.buffer);return e};1<process.argv.length&&(a.thisProgram=process.argv[1].replace(/\\/g,"/"));a.arguments=process.argv.slice(2);
|
||||
process.on("uncaughtException",function(a){if(!(a instanceof na))throw a;});process.on("unhandledRejection",function(a,c){process.exit(1)});a.inspect=function(){return"[Emscripten Module object]"}}else if(za)"undefined"!=typeof read&&(a.read=function(a){return read(a)}),a.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");f("object"===typeof a);return a},"undefined"!=typeof scriptArgs?a.arguments=scriptArgs:"undefined"!=typeof arguments&&
|
||||
(a.arguments=arguments),"function"===typeof quit&&(a.quit=function(a,c){quit(a)});else if(ja||fa)a.read=function(a){var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText},fa&&(a.readBinary=function(a){var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}),a.readAsync=function(a,c,b){var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=function(){200==e.status||0==e.status&&e.response?
|
||||
c(e.response):b()};e.onerror=b;e.send(null)},a.setWindowTitle=function(a){document.title=a};a.print="undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null;a.printErr="undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||a.print;a.print=a.print;a.printErr=a.printErr;for(aa in pa)pa.hasOwnProperty(aa)&&(a[aa]=pa[aa]);pa=void 0;var oa=0,Ia="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;"undefined"!==typeof TextDecoder&&
|
||||
new TextDecoder("utf-16le");var ia,W,Ja,E,ba,Ca,ta,ua,Da,ka;var Ea=ba=Ca=ta=ua=Da=ka=0;var Sa=!1;a.reallocBuffer||(a.reallocBuffer=function(a){try{if(ArrayBuffer.transfer)var c=ArrayBuffer.transfer(D,a);else{var b=ia;c=new ArrayBuffer(a);(new Int8Array(c)).set(b)}}catch(p){return!1}return nb(c)?c:!1});try{var Ta=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);Ta(new ArrayBuffer(4))}catch(e){Ta=function(a){return a.byteLength}}var Fa=a.TOTAL_STACK||
|
||||
5242880,A=a.TOTAL_MEMORY||16777216;A<Fa&&a.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+A+"! (TOTAL_STACK="+Fa+")");if(a.buffer)var D=a.buffer;else"object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(a.wasmMemory=new WebAssembly.Memory({initial:A/65536}),D=a.wasmMemory.buffer):D=new ArrayBuffer(A),a.buffer=D;r();E[0]=1668509029;Ja[1]=25459;if(115!==W[2]||99!==W[3])throw"Runtime error: expected the system to be little-endian!";var Pa=[],Ma=[],Na=[],ob=[],Oa=[],
|
||||
La=!1,ea=0,Ga=null,ra=null;a.preloadedImages={};a.preloadedAudios={};(function(){function e(){try{if(a.wasmBinary)return new Uint8Array(a.wasmBinary);if(a.readBinary)return a.readBinary(f);throw"on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)";}catch(Va){O(Va)}}function c(){return a.wasmBinary||!ja&&!fa||"function"!==typeof fetch?new Promise(function(a,c){a(e())}):fetch(f,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+
|
||||
f+"'";return a.arrayBuffer()}).catch(function(){return e()})}function b(b,e,d){function p(c,b){k=c.exports;k.memory&&(c=k.memory,b=a.buffer,c.byteLength<b.byteLength&&a.printErr("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),b=new Int8Array(b),(new Int8Array(c)).set(b),a.buffer=D=c,r());a.asm=k;a.usingWasm=!0;ea--;a.monitorRunDependencies&&a.monitorRunDependencies(ea);0==ea&&(null!==Ga&&(clearInterval(Ga),Ga=null),ra&&(c=ra,ra=null,c()))}
|
||||
function g(a){p(a.instance,a.module)}function S(b){c().then(function(a){return WebAssembly.instantiate(a,h)}).then(b).catch(function(c){a.printErr("failed to asynchronously prepare wasm: "+c);O(c)})}if("object"!==typeof WebAssembly)return a.printErr("no native wasm support detected"),!1;if(!(a.wasmMemory instanceof WebAssembly.Memory))return a.printErr("no native wasm Memory in use"),!1;e.memory=a.wasmMemory;h.global={NaN:NaN,Infinity:Infinity};h["global.Math"]=Math;h.env=e;ea++;a.monitorRunDependencies&&
|
||||
a.monitorRunDependencies(ea);if(a.instantiateWasm)try{return a.instantiateWasm(h,p)}catch(pb){return a.printErr("Module.instantiateWasm callback failed with error: "+pb),!1}a.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||Y(f)||"function"!==typeof fetch?S(g):WebAssembly.instantiateStreaming(fetch(f,{credentials:"same-origin"}),h).then(g).catch(function(c){a.printErr("wasm streaming compile failed: "+c);a.printErr("falling back to ArrayBuffer instantiation");S(g)});return{}}var d=
|
||||
"draco_decoder.wast",f="draco_decoder.wasm",g="draco_decoder.temp.asm.js";"function"===typeof a.locateFile&&(Y(d)||(d=a.locateFile(d)),Y(f)||(f=a.locateFile(f)),Y(g)||(g=a.locateFile(g)));var h={global:null,env:null,asm2wasm:{"f64-rem":function(a,c){return a%c},"debugger":function(){debugger}},parent:a},k=null;a.asmPreload=a.asm;var l=a.reallocBuffer;a.reallocBuffer=function(c){if("asmjs"===m)var b=l(c);else a:{c=ha(c,a.usingWasm?65536:16777216);var e=a.buffer.byteLength;if(a.usingWasm)try{b=-1!==
|
||||
a.wasmMemory.grow((c-e)/65536)?a.buffer=a.wasmMemory.buffer:null;break a}catch(ud){b=null;break a}b=void 0}return b};var m="";a.asm=function(c,e,d){if(!e.table){var p=a.wasmTableSize;void 0===p&&(p=1024);var f=a.wasmMaxTableSize;e.table="object"===typeof WebAssembly&&"function"===typeof WebAssembly.Table?void 0!==f?new WebAssembly.Table({initial:p,maximum:f,element:"anyfunc"}):new WebAssembly.Table({initial:p,element:"anyfunc"}):Array(p);a.wasmTable=e.table}e.memoryBase||(e.memoryBase=a.STATIC_BASE);
|
||||
e.tableBase||(e.tableBase=0);(c=b(c,e,d))||O("no binaryen method succeeded. consider enabling more options, like interpreting, if you want that: https://github.com/kripken/emscripten/wiki/WebAssembly#binaryen-methods");return c}})();Ea=1024;ba=Ea+14800;Ma.push();a.STATIC_BASE=Ea;a.STATIC_BUMP=14800;var qb=ba;ba+=16;var y={last:0,caught:[],infos:{},deAdjust:function(a){if(!a||y.infos[a])return a;for(var c in y.infos)if(y.infos[c].adjusted===a)return c;return a},addRef:function(a){a&&y.infos[a].refcount++},
|
||||
decRef:function(e){if(e){var c=y.infos[e];f(0<c.refcount);c.refcount--;0!==c.refcount||c.rethrown||(c.destructor&&a.dynCall_vi(c.destructor,e),delete y.infos[e],___cxa_free_exception(e))}},clearRef:function(a){a&&(y.infos[a].refcount=0)}},w={varargs:0,get:function(a){w.varargs+=4;return E[w.varargs-4>>2]},getStr:function(){return u(w.get())},get64:function(){var a=w.get(),c=w.get();0<=a?f(0===c):f(-1===c);return a},getZero:function(){f(0===w.get())}},va={},Ha=1;ka=function(a){f(!Sa);var c=ba;ba=ba+
|
||||
a+15&-16;return c}(4);Ca=ta=k(ba);ua=Ca+Fa;Da=k(ua);E[ka>>2]=Da;Sa=!0;a.wasmTableSize=476;a.wasmMaxTableSize=476;a.asmGlobalArg={};a.asmLibraryArg={abort:O,assert:f,enlargeMemory:function(){var e=a.usingWasm?65536:16777216,c=2147483648-e;if(E[ka>>2]>c)return!1;var b=A;for(A=Math.max(A,16777216);A<E[ka>>2];)A=536870912>=A?ha(2*A,e):Math.min(ha((3*A+2147483648)/4,e),c);e=a.reallocBuffer(A);if(!e||e.byteLength!=A)return A=b,!1;a.buffer=D=e;r();return!0},getTotalMemory:function(){return A},abortOnCannotGrowMemory:function(){O("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+
|
||||
A+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_ii:function(e,c){try{return a.dynCall_ii(e,c)}catch(b){if("number"!==typeof b&&"longjmp"!==b)throw b;a.setThrew(1,0)}},invoke_iii:function(e,c,b){try{return a.dynCall_iii(e,c,b)}catch(p){if("number"!==typeof p&&"longjmp"!==p)throw p;a.setThrew(1,0)}},invoke_iiii:function(e,c,b,d){try{return a.dynCall_iiii(e,
|
||||
c,b,d)}catch(S){if("number"!==typeof S&&"longjmp"!==S)throw S;a.setThrew(1,0)}},invoke_iiiiiii:function(e,c,b,d,f,g,h){try{return a.dynCall_iiiiiii(e,c,b,d,f,g,h)}catch(da){if("number"!==typeof da&&"longjmp"!==da)throw da;a.setThrew(1,0)}},invoke_v:function(e){try{a.dynCall_v(e)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_vi:function(e,c){try{a.dynCall_vi(e,c)}catch(b){if("number"!==typeof b&&"longjmp"!==b)throw b;a.setThrew(1,0)}},invoke_vii:function(e,c,b){try{a.dynCall_vii(e,
|
||||
c,b)}catch(p){if("number"!==typeof p&&"longjmp"!==p)throw p;a.setThrew(1,0)}},invoke_viii:function(e,c,b,d){try{a.dynCall_viii(e,c,b,d)}catch(S){if("number"!==typeof S&&"longjmp"!==S)throw S;a.setThrew(1,0)}},invoke_viiii:function(e,c,b,d,f){try{a.dynCall_viiii(e,c,b,d,f)}catch(xa){if("number"!==typeof xa&&"longjmp"!==xa)throw xa;a.setThrew(1,0)}},invoke_viiiii:function(e,c,b,d,f,g){try{a.dynCall_viiiii(e,c,b,d,f,g)}catch(ca){if("number"!==typeof ca&&"longjmp"!==ca)throw ca;a.setThrew(1,0)}},invoke_viiiiii:function(e,
|
||||
c,b,d,f,g,h){try{a.dynCall_viiiiii(e,c,b,d,f,g,h)}catch(da){if("number"!==typeof da&&"longjmp"!==da)throw da;a.setThrew(1,0)}},__ZSt18uncaught_exceptionv:v,___cxa_allocate_exception:function(a){return Ka(a)},___cxa_begin_catch:function(a){var c=y.infos[a];c&&!c.caught&&(c.caught=!0,v.uncaught_exception--);c&&(c.rethrown=!1);y.caught.push(a);y.addRef(y.deAdjust(a));return a},___cxa_find_matching_catch:la,___cxa_pure_virtual:function(){oa=!0;throw"Pure virtual function called!";},___cxa_throw:function(a,
|
||||
c,b){y.infos[a]={ptr:a,adjusted:a,type:c,destructor:b,refcount:0,caught:!1,rethrown:!1};y.last=a;"uncaught_exception"in v?v.uncaught_exception++:v.uncaught_exception=1;throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},___gxx_personality_v0:function(){},___resumeException:function(a){y.last||(y.last=a);throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";
|
||||
},___setErrNo:function(d){a.___errno_location&&(E[a.___errno_location()>>2]=d);return d},___syscall140:function(a,c){w.varargs=c;try{var b=w.getStreamFromFD();w.get();var d=w.get(),e=w.get(),f=w.get();FS.llseek(b,d,f);E[e>>2]=b.position;b.getdents&&0===d&&0===f&&(b.getdents=null);return 0}catch(ca){return"undefined"!==typeof FS&&ca instanceof FS.ErrnoError||O(ca),-ca.errno}},___syscall146:Z,___syscall6:function(a,c){w.varargs=c;try{var b=w.getStreamFromFD();FS.close(b);return 0}catch(p){return"undefined"!==
|
||||
typeof FS&&p instanceof FS.ErrnoError||O(p),-p.errno}},_abort:function(){a.abort()},_emscripten_memcpy_big:function(a,c,b){W.set(W.subarray(c,c+b),a);return a},_llvm_trap:function(){O("trap!")},_pthread_getspecific:function(a){return va[a]||0},_pthread_key_create:function(a,c){if(0==a)return 22;E[a>>2]=Ha;va[Ha]=0;Ha++;return 0},_pthread_once:ma,_pthread_setspecific:function(a,c){if(!(a in va))return 22;va[a]=c;return 0},flush_NO_FILESYSTEM:function(){var d=a._fflush;d&&d(0);if(d=Z.printChar){var c=
|
||||
Z.buffers;c[1].length&&d(1,10);c[2].length&&d(2,10)}},DYNAMICTOP_PTR:ka,tempDoublePtr:qb,ABORT:oa,STACKTOP:ta,STACK_MAX:ua};var Ua=a.asm(a.asmGlobalArg,a.asmLibraryArg,D);a.asm=Ua;a.___cxa_can_catch=function(){return a.asm.___cxa_can_catch.apply(null,arguments)};a.___cxa_is_pointer_type=function(){return a.asm.___cxa_is_pointer_type.apply(null,arguments)};var $a=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,
|
||||
arguments)},rb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},sb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null,arguments)},tb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,
|
||||
arguments)},cb=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,arguments)},ub=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},vb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,
|
||||
arguments)},wb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,arguments)},xb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)},yb=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,
|
||||
arguments)},bb=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return a.asm._emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,arguments)},zb=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm._emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},Ab=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm._emscripten_bind_AttributeTransformData_transform_type_0.apply(null,
|
||||
arguments)},ib=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm._emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},Bb=a._emscripten_bind_DecoderBuffer_Init_2=function(){return a.asm._emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},Cb=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm._emscripten_bind_DecoderBuffer___destroy___0.apply(null,arguments)},Db=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null,
|
||||
arguments)},Eb=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,arguments)},jb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm._emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},Fb=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeByUniqueId_2.apply(null,arguments)},Gb=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Hb=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Ib=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},Jb=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,
|
||||
arguments)},Kb=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeId_2.apply(null,arguments)},Lb=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3.apply(null,arguments)},Mb=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3.apply(null,arguments)},Nb=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3.apply(null,arguments)},Ob=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3.apply(null,arguments)},Pb=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null,arguments)},Qb=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3.apply(null,
|
||||
arguments)},Rb=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3.apply(null,arguments)},Sb=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3.apply(null,arguments)},Tb=a._emscripten_bind_Decoder_GetAttribute_2=function(){return a.asm._emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},Ub=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=
|
||||
function(){return a.asm._emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,arguments)},Vb=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm._emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},Wb=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm._emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},Xb=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,
|
||||
arguments)},Yb=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm._emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,arguments)},Zb=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm._emscripten_bind_Decoder___destroy___0.apply(null,arguments)},gb=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null,arguments)},$b=a._emscripten_bind_DracoFloat32Array_GetValue_1=
|
||||
function(){return a.asm._emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},ac=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},bc=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_size_0.apply(null,arguments)},fb=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return a.asm._emscripten_bind_DracoInt16Array_DracoInt16Array_0.apply(null,
|
||||
arguments)},cc=a._emscripten_bind_DracoInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt16Array_GetValue_1.apply(null,arguments)},dc=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt16Array___destroy___0.apply(null,arguments)},ec=a._emscripten_bind_DracoInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoInt16Array_size_0.apply(null,arguments)},lb=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm._emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,
|
||||
arguments)},fc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt32Array_GetValue_1.apply(null,arguments)},gc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},hc=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoInt32Array_size_0.apply(null,arguments)},db=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return a.asm._emscripten_bind_DracoInt8Array_DracoInt8Array_0.apply(null,
|
||||
arguments)},ic=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt8Array_GetValue_1.apply(null,arguments)},jc=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt8Array___destroy___0.apply(null,arguments)},kc=a._emscripten_bind_DracoInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoInt8Array_size_0.apply(null,arguments)},Wa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0.apply(null,
|
||||
arguments)},lc=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt16Array_GetValue_1.apply(null,arguments)},mc=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt16Array___destroy___0.apply(null,arguments)},nc=a._emscripten_bind_DracoUInt16Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt16Array_size_0.apply(null,arguments)},Za=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0.apply(null,
|
||||
arguments)},oc=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt32Array_GetValue_1.apply(null,arguments)},pc=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt32Array___destroy___0.apply(null,arguments)},qc=a._emscripten_bind_DracoUInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt32Array_size_0.apply(null,arguments)},Ya=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0.apply(null,
|
||||
arguments)},rc=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoUInt8Array_GetValue_1.apply(null,arguments)},sc=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return a.asm._emscripten_bind_DracoUInt8Array___destroy___0.apply(null,arguments)},tc=a._emscripten_bind_DracoUInt8Array_size_0=function(){return a.asm._emscripten_bind_DracoUInt8Array_size_0.apply(null,arguments)},hb=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm._emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null,
|
||||
arguments)},uc=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm._emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},kb=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm._emscripten_bind_Mesh_Mesh_0.apply(null,arguments)},vc=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm._emscripten_bind_Mesh___destroy___0.apply(null,arguments)},wc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm._emscripten_bind_Mesh_num_attributes_0.apply(null,
|
||||
arguments)},xc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm._emscripten_bind_Mesh_num_faces_0.apply(null,arguments)},yc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm._emscripten_bind_Mesh_num_points_0.apply(null,arguments)},zc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},Ac=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetEntryName_2.apply(null,
|
||||
arguments)},Bc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},Cc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},Dc=a._emscripten_bind_MetadataQuerier_HasDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasDoubleEntry_2.apply(null,arguments)},Ec=a._emscripten_bind_MetadataQuerier_HasEntry_2=
|
||||
function(){return a.asm._emscripten_bind_MetadataQuerier_HasEntry_2.apply(null,arguments)},Fc=a._emscripten_bind_MetadataQuerier_HasIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasIntEntry_2.apply(null,arguments)},Gc=a._emscripten_bind_MetadataQuerier_HasStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasStringEntry_2.apply(null,arguments)},eb=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm._emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,
|
||||
arguments)},Hc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return a.asm._emscripten_bind_MetadataQuerier_NumEntries_1.apply(null,arguments)},Ic=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm._emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},mb=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm._emscripten_bind_Metadata_Metadata_0.apply(null,arguments)},Jc=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm._emscripten_bind_Metadata___destroy___0.apply(null,
|
||||
arguments)},Kc=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm._emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},ab=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return a.asm._emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},Lc=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm._emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},Mc=a._emscripten_bind_PointAttribute_attribute_type_0=
|
||||
function(){return a.asm._emscripten_bind_PointAttribute_attribute_type_0.apply(null,arguments)},Nc=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},Oc=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_stride_0.apply(null,arguments)},Pc=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm._emscripten_bind_PointAttribute_data_type_0.apply(null,
|
||||
arguments)},Qc=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm._emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},Rc=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm._emscripten_bind_PointAttribute_num_components_0.apply(null,arguments)},Sc=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm._emscripten_bind_PointAttribute_size_0.apply(null,arguments)},Tc=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm._emscripten_bind_PointAttribute_unique_id_0.apply(null,
|
||||
arguments)},Xa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm._emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},Uc=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm._emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},Vc=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm._emscripten_bind_PointCloud_num_attributes_0.apply(null,arguments)},Wc=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm._emscripten_bind_PointCloud_num_points_0.apply(null,
|
||||
arguments)},Xc=a._emscripten_bind_Status___destroy___0=function(){return a.asm._emscripten_bind_Status___destroy___0.apply(null,arguments)},Yc=a._emscripten_bind_Status_code_0=function(){return a.asm._emscripten_bind_Status_code_0.apply(null,arguments)},Zc=a._emscripten_bind_Status_error_msg_0=function(){return a.asm._emscripten_bind_Status_error_msg_0.apply(null,arguments)},$c=a._emscripten_bind_Status_ok_0=function(){return a.asm._emscripten_bind_Status_ok_0.apply(null,arguments)},ad=a._emscripten_bind_VoidPtr___destroy___0=
|
||||
function(){return a.asm._emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},bd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null,arguments)},cd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)},dd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=
|
||||
function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null,arguments)},ed=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},fd=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null,
|
||||
arguments)},gd=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},hd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},id=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},jd=
|
||||
a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)},kd=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},ld=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},md=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=
|
||||
function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},nd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},od=a._emscripten_enum_draco_StatusCode_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_ERROR.apply(null,arguments)},pd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return a.asm._emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,
|
||||
arguments)},qd=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},rd=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm._emscripten_enum_draco_StatusCode_OK.apply(null,arguments)},sd=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},td=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null,
|
||||
arguments)},nb=a._emscripten_replace_memory=function(){return a.asm._emscripten_replace_memory.apply(null,arguments)};a._free=function(){return a.asm._free.apply(null,arguments)};a._llvm_bswap_i32=function(){return a.asm._llvm_bswap_i32.apply(null,arguments)};var Ka=a._malloc=function(){return a.asm._malloc.apply(null,arguments)};a._memcpy=function(){return a.asm._memcpy.apply(null,arguments)};a._memmove=function(){return a.asm._memmove.apply(null,arguments)};a._memset=function(){return a.asm._memset.apply(null,
|
||||
arguments)};a._sbrk=function(){return a.asm._sbrk.apply(null,arguments)};a.establishStackSpace=function(){return a.asm.establishStackSpace.apply(null,arguments)};a.getTempRet0=function(){return a.asm.getTempRet0.apply(null,arguments)};a.runPostSets=function(){return a.asm.runPostSets.apply(null,arguments)};var sa=a.setTempRet0=function(){return a.asm.setTempRet0.apply(null,arguments)};a.setThrew=function(){return a.asm.setThrew.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,
|
||||
arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,
|
||||
arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)};a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};a.asm=Ua;a.then=function(d){if(a.calledRun)d(a);
|
||||
else{var c=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){c&&c();d(a)}}return a};na.prototype=Error();na.prototype.constructor=na;ra=function c(){a.calledRun||wa();a.calledRun||(ra=c)};a.run=wa;a.exit=function(c,b){if(!b||!a.noExitRuntime||0!==c){if(!a.noExitRuntime&&(oa=!0,ta=void 0,B(ob),a.onExit))a.onExit(c);qa&&process.exit(c);a.quit(c,new na(c))}};a.abort=O;if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();a.noExitRuntime=!0;
|
||||
wa();m.prototype=Object.create(m.prototype);m.prototype.constructor=m;m.prototype.__class__=m;m.__cache__={};a.WrapperObject=m;a.getCache=t;a.wrapPointer=T;a.castObject=function(a,b){return T(a.ptr,b)};a.NULL=T(0);a.destroy=function(a){if(!a.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";a.__destroy__();delete t(a.__class__)[a.ptr]};a.compare=function(a,b){return a.ptr===b.ptr};a.getPointer=function(a){return a.ptr};a.getClass=function(a){return a.__class__};var l=
|
||||
{buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(l.needed){for(var c=0;c<l.temps.length;c++)a._free(l.temps[c]);l.temps.length=0;a._free(l.buffer);l.buffer=0;l.size+=l.needed;l.needed=0}l.buffer||(l.size+=128,l.buffer=a._malloc(l.size),f(l.buffer));l.pos=0},alloc:function(c,b){f(l.buffer);c=c.length*b.BYTES_PER_ELEMENT;c=c+7&-8;l.pos+c>=l.size?(f(0<c),l.needed+=c,b=a._malloc(c),l.temps.push(b)):(b=l.buffer+l.pos,l.pos+=c);return b},copy:function(a,b,d){switch(b.BYTES_PER_ELEMENT){case 2:d>>=
|
||||
1;break;case 4:d>>=2;break;case 8:d>>=3}for(var c=0;c<a.length;c++)b[d+c]=a[c]}};z.prototype=Object.create(m.prototype);z.prototype.constructor=z;z.prototype.__class__=z;z.__cache__={};a.Status=z;z.prototype.code=z.prototype.code=function(){return Yc(this.ptr)};z.prototype.ok=z.prototype.ok=function(){return!!$c(this.ptr)};z.prototype.error_msg=z.prototype.error_msg=function(){return u(Zc(this.ptr))};z.prototype.__destroy__=z.prototype.__destroy__=function(){Xc(this.ptr)};F.prototype=Object.create(m.prototype);
|
||||
F.prototype.constructor=F;F.prototype.__class__=F;F.__cache__={};a.DracoUInt16Array=F;F.prototype.GetValue=F.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return lc(c,a)};F.prototype.size=F.prototype.size=function(){return nc(this.ptr)};F.prototype.__destroy__=F.prototype.__destroy__=function(){mc(this.ptr)};G.prototype=Object.create(m.prototype);G.prototype.constructor=G;G.prototype.__class__=G;G.__cache__={};a.PointCloud=G;G.prototype.num_attributes=G.prototype.num_attributes=
|
||||
function(){return Vc(this.ptr)};G.prototype.num_points=G.prototype.num_points=function(){return Wc(this.ptr)};G.prototype.__destroy__=G.prototype.__destroy__=function(){Uc(this.ptr)};H.prototype=Object.create(m.prototype);H.prototype.constructor=H;H.prototype.__class__=H;H.__cache__={};a.DracoUInt8Array=H;H.prototype.GetValue=H.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return rc(c,a)};H.prototype.size=H.prototype.size=function(){return tc(this.ptr)};H.prototype.__destroy__=
|
||||
H.prototype.__destroy__=function(){sc(this.ptr)};I.prototype=Object.create(m.prototype);I.prototype.constructor=I;I.prototype.__class__=I;I.__cache__={};a.DracoUInt32Array=I;I.prototype.GetValue=I.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return oc(c,a)};I.prototype.size=I.prototype.size=function(){return qc(this.ptr)};I.prototype.__destroy__=I.prototype.__destroy__=function(){pc(this.ptr)};J.prototype=Object.create(m.prototype);J.prototype.constructor=J;J.prototype.__class__=
|
||||
J;J.__cache__={};a.AttributeOctahedronTransform=J;J.prototype.InitFromAttribute=J.prototype.InitFromAttribute=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!rb(c,a)};J.prototype.quantization_bits=J.prototype.quantization_bits=function(){return tb(this.ptr)};J.prototype.__destroy__=J.prototype.__destroy__=function(){sb(this.ptr)};n.prototype=Object.create(m.prototype);n.prototype.constructor=n;n.prototype.__class__=n;n.__cache__={};a.PointAttribute=n;n.prototype.size=n.prototype.size=
|
||||
function(){return Sc(this.ptr)};n.prototype.GetAttributeTransformData=n.prototype.GetAttributeTransformData=function(){return T(Kc(this.ptr),P)};n.prototype.attribute_type=n.prototype.attribute_type=function(){return Mc(this.ptr)};n.prototype.data_type=n.prototype.data_type=function(){return Pc(this.ptr)};n.prototype.num_components=n.prototype.num_components=function(){return Rc(this.ptr)};n.prototype.normalized=n.prototype.normalized=function(){return!!Qc(this.ptr)};n.prototype.byte_stride=n.prototype.byte_stride=
|
||||
function(){return Oc(this.ptr)};n.prototype.byte_offset=n.prototype.byte_offset=function(){return Nc(this.ptr)};n.prototype.unique_id=n.prototype.unique_id=function(){return Tc(this.ptr)};n.prototype.__destroy__=n.prototype.__destroy__=function(){Lc(this.ptr)};P.prototype=Object.create(m.prototype);P.prototype.constructor=P;P.prototype.__class__=P;P.__cache__={};a.AttributeTransformData=P;P.prototype.transform_type=P.prototype.transform_type=function(){return Ab(this.ptr)};P.prototype.__destroy__=
|
||||
P.prototype.__destroy__=function(){zb(this.ptr)};x.prototype=Object.create(m.prototype);x.prototype.constructor=x;x.prototype.__class__=x;x.__cache__={};a.AttributeQuantizationTransform=x;x.prototype.InitFromAttribute=x.prototype.InitFromAttribute=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!ub(c,a)};x.prototype.quantization_bits=x.prototype.quantization_bits=function(){return xb(this.ptr)};x.prototype.min_value=x.prototype.min_value=function(a){var c=this.ptr;a&&"object"===
|
||||
typeof a&&(a=a.ptr);return wb(c,a)};x.prototype.range=x.prototype.range=function(){return yb(this.ptr)};x.prototype.__destroy__=x.prototype.__destroy__=function(){vb(this.ptr)};K.prototype=Object.create(m.prototype);K.prototype.constructor=K;K.prototype.__class__=K;K.__cache__={};a.DracoInt8Array=K;K.prototype.GetValue=K.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return ic(c,a)};K.prototype.size=K.prototype.size=function(){return kc(this.ptr)};K.prototype.__destroy__=
|
||||
K.prototype.__destroy__=function(){jc(this.ptr)};q.prototype=Object.create(m.prototype);q.prototype.constructor=q;q.prototype.__class__=q;q.__cache__={};a.MetadataQuerier=q;q.prototype.HasEntry=q.prototype.HasEntry=function(a,b){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);return!!Ec(c,a,b)};q.prototype.HasIntEntry=q.prototype.HasIntEntry=function(a,b){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);
|
||||
return!!Fc(c,a,b)};q.prototype.GetIntEntry=q.prototype.GetIntEntry=function(a,b){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);return Bc(c,a,b)};q.prototype.HasDoubleEntry=q.prototype.HasDoubleEntry=function(a,b){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);return!!Dc(c,a,b)};q.prototype.GetDoubleEntry=q.prototype.GetDoubleEntry=function(a,b){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=
|
||||
a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);return zc(c,a,b)};q.prototype.HasStringEntry=q.prototype.HasStringEntry=function(a,b){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);return!!Gc(c,a,b)};q.prototype.GetStringEntry=q.prototype.GetStringEntry=function(a,b){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);return u(Cc(c,a,b))};q.prototype.NumEntries=q.prototype.NumEntries=function(a){var c=this.ptr;
|
||||
a&&"object"===typeof a&&(a=a.ptr);return Hc(c,a)};q.prototype.GetEntryName=q.prototype.GetEntryName=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return u(Ac(c,a,b))};q.prototype.__destroy__=q.prototype.__destroy__=function(){Ic(this.ptr)};L.prototype=Object.create(m.prototype);L.prototype.constructor=L;L.prototype.__class__=L;L.__cache__={};a.DracoInt16Array=L;L.prototype.GetValue=L.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&
|
||||
(a=a.ptr);return cc(c,a)};L.prototype.size=L.prototype.size=function(){return ec(this.ptr)};L.prototype.__destroy__=L.prototype.__destroy__=function(){dc(this.ptr)};M.prototype=Object.create(m.prototype);M.prototype.constructor=M;M.prototype.__class__=M;M.__cache__={};a.DracoFloat32Array=M;M.prototype.GetValue=M.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return $b(c,a)};M.prototype.size=M.prototype.size=function(){return bc(this.ptr)};M.prototype.__destroy__=M.prototype.__destroy__=
|
||||
function(){ac(this.ptr)};V.prototype=Object.create(m.prototype);V.prototype.constructor=V;V.prototype.__class__=V;V.__cache__={};a.GeometryAttribute=V;V.prototype.__destroy__=V.prototype.__destroy__=function(){uc(this.ptr)};Q.prototype=Object.create(m.prototype);Q.prototype.constructor=Q;Q.prototype.__class__=Q;Q.__cache__={};a.DecoderBuffer=Q;Q.prototype.Init=Q.prototype.Init=function(a,b){var c=this.ptr;l.prepare();if("object"==typeof a&&"object"===typeof a){var d=l.alloc(a,ia);l.copy(a,ia,d);a=
|
||||
d}b&&"object"===typeof b&&(b=b.ptr);Bb(c,a,b)};Q.prototype.__destroy__=Q.prototype.__destroy__=function(){Cb(this.ptr)};g.prototype=Object.create(m.prototype);g.prototype.constructor=g;g.prototype.__class__=g;g.__cache__={};a.Decoder=g;g.prototype.GetEncodedGeometryType=g.prototype.GetEncodedGeometryType=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Ub(c,a)};g.prototype.DecodeBufferToPointCloud=g.prototype.DecodeBufferToPointCloud=function(a,b){var c=this.ptr;a&&"object"===typeof a&&
|
||||
(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return T(Eb(c,a,b),z)};g.prototype.DecodeBufferToMesh=g.prototype.DecodeBufferToMesh=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return T(Db(c,a,b),z)};g.prototype.GetAttributeId=g.prototype.GetAttributeId=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return Kb(c,a,b)};g.prototype.GetAttributeIdByName=g.prototype.GetAttributeIdByName=function(a,b){var c=
|
||||
this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);return Jb(c,a,b)};g.prototype.GetAttributeIdByMetadataEntry=g.prototype.GetAttributeIdByMetadataEntry=function(a,b,d){var c=this.ptr;l.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:U(b);d=d&&"object"===typeof d?d.ptr:U(d);return Ib(c,a,b,d)};g.prototype.GetAttribute=g.prototype.GetAttribute=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=
|
||||
b.ptr);return T(Tb(c,a,b),n)};g.prototype.GetAttributeByUniqueId=g.prototype.GetAttributeByUniqueId=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return T(Fb(c,a,b),n)};g.prototype.GetMetadata=g.prototype.GetMetadata=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return T(Wb(c,a),R)};g.prototype.GetAttributeMetadata=g.prototype.GetAttributeMetadata=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&
|
||||
(b=b.ptr);return T(Pb(c,a,b),R)};g.prototype.GetFaceFromMesh=g.prototype.GetFaceFromMesh=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Vb(c,a,b,d)};g.prototype.GetTriangleStripsFromMesh=g.prototype.GetTriangleStripsFromMesh=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return Xb(c,a,b)};g.prototype.GetAttributeFloat=g.prototype.GetAttributeFloat=function(a,
|
||||
b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Hb(c,a,b,d)};g.prototype.GetAttributeFloatForAllPoints=g.prototype.GetAttributeFloatForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Gb(c,a,b,d)};g.prototype.GetAttributeIntForAllPoints=g.prototype.GetAttributeIntForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===
|
||||
typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ob(c,a,b,d)};g.prototype.GetAttributeInt8ForAllPoints=g.prototype.GetAttributeInt8ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Nb(c,a,b,d)};g.prototype.GetAttributeUInt8ForAllPoints=g.prototype.GetAttributeUInt8ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===
|
||||
typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Sb(c,a,b,d)};g.prototype.GetAttributeInt16ForAllPoints=g.prototype.GetAttributeInt16ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Lb(c,a,b,d)};g.prototype.GetAttributeUInt16ForAllPoints=g.prototype.GetAttributeUInt16ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&
|
||||
"object"===typeof d&&(d=d.ptr);return!!Qb(c,a,b,d)};g.prototype.GetAttributeInt32ForAllPoints=g.prototype.GetAttributeInt32ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Mb(c,a,b,d)};g.prototype.GetAttributeUInt32ForAllPoints=g.prototype.GetAttributeUInt32ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=
|
||||
d.ptr);return!!Rb(c,a,b,d)};g.prototype.SkipAttributeTransform=g.prototype.SkipAttributeTransform=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);Yb(c,a)};g.prototype.__destroy__=g.prototype.__destroy__=function(){Zb(this.ptr)};C.prototype=Object.create(m.prototype);C.prototype.constructor=C;C.prototype.__class__=C;C.__cache__={};a.Mesh=C;C.prototype.num_faces=C.prototype.num_faces=function(){return xc(this.ptr)};C.prototype.num_attributes=C.prototype.num_attributes=function(){return wc(this.ptr)};
|
||||
C.prototype.num_points=C.prototype.num_points=function(){return yc(this.ptr)};C.prototype.__destroy__=C.prototype.__destroy__=function(){vc(this.ptr)};X.prototype=Object.create(m.prototype);X.prototype.constructor=X;X.prototype.__class__=X;X.__cache__={};a.VoidPtr=X;X.prototype.__destroy__=X.prototype.__destroy__=function(){ad(this.ptr)};N.prototype=Object.create(m.prototype);N.prototype.constructor=N;N.prototype.__class__=N;N.__cache__={};a.DracoInt32Array=N;N.prototype.GetValue=N.prototype.GetValue=
|
||||
function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return fc(b,a)};N.prototype.size=N.prototype.size=function(){return hc(this.ptr)};N.prototype.__destroy__=N.prototype.__destroy__=function(){gc(this.ptr)};R.prototype=Object.create(m.prototype);R.prototype.constructor=R;R.prototype.__class__=R;R.__cache__={};a.Metadata=R;R.prototype.__destroy__=R.prototype.__destroy__=function(){Jc(this.ptr)};(function(){function c(){a.OK=rd();a.ERROR=od();a.IO_ERROR=qd();a.INVALID_PARAMETER=pd();a.UNSUPPORTED_VERSION=
|
||||
td();a.UNKNOWN_VERSION=sd();a.INVALID_GEOMETRY_TYPE=fd();a.POINT_CLOUD=gd();a.TRIANGULAR_MESH=hd();a.ATTRIBUTE_INVALID_TRANSFORM=bd();a.ATTRIBUTE_NO_TRANSFORM=cd();a.ATTRIBUTE_QUANTIZATION_TRANSFORM=ed();a.ATTRIBUTE_OCTAHEDRON_TRANSFORM=dd();a.INVALID=kd();a.POSITION=md();a.NORMAL=ld();a.COLOR=id();a.TEX_COORD=nd();a.GENERIC=jd()}a.calledRun?c():Na.unshift(c)})();if("function"===typeof a.onModuleParsed)a.onModuleParsed();return d};
|
||||
"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule);
|
||||
|
@ -5,6 +5,9 @@
|
||||
|
||||
News
|
||||
=======
|
||||
### Version 1.3.4 release
|
||||
* Fixes for Unity
|
||||
|
||||
### Version 1.3.3 release
|
||||
* Added ExpertEncoder to the JavaScript API
|
||||
* Allows developers to set quantization options per attribute id
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "draco3d",
|
||||
"version": "1.3.3",
|
||||
"version": "1.3.4",
|
||||
"description": "Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.",
|
||||
"main": "draco3d.js",
|
||||
"scripts": {
|
||||
|
@ -16,6 +16,9 @@ TODO: Add glTF branch url.
|
||||
|
||||
News
|
||||
=======
|
||||
### Version 1.3.4 release
|
||||
* Fixes for Unity
|
||||
|
||||
### Version 1.3.3 release
|
||||
* Added ExpertEncoder to the JavaScript API
|
||||
* Allows developers to set quantization options per attribute id
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "draco3dgltf",
|
||||
"version": "1.3.3",
|
||||
"version": "1.3.4",
|
||||
"description": "This package contains a specific version of Draco 3D geometric compression library that is used for glTF Draco mesh compression extension.",
|
||||
"main": "draco3dgltf.js",
|
||||
"scripts": {
|
||||
|
11
javascript/npm/draco_animation/draco-animation.js
Normal file
11
javascript/npm/draco_animation/draco-animation.js
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @fileoverview Main file for draco-animation package.
|
||||
*/
|
||||
|
||||
var createEncoderModule = require('./draco_animation_encoder_nodejs');
|
||||
var createDecoderModule = require('./draco_animation_decoder_nodejs');
|
||||
|
||||
module.exports = {
|
||||
createEncoderModule,
|
||||
createDecoderModule
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
150
javascript/npm/draco_animation/draco_animation_encoding_test.js
Normal file
150
javascript/npm/draco_animation/draco_animation_encoding_test.js
Normal file
@ -0,0 +1,150 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
'use_strict';
|
||||
|
||||
const assert = require('assert');
|
||||
const draco = require('./draco-animation');
|
||||
const decoderModule = draco.createDecoderModule({});
|
||||
const encoderModule = draco.createEncoderModule({});
|
||||
|
||||
function generateAnimationData(numKeyframes, numAnimations, numComponents) {
|
||||
const timestamps = new Float32Array(numKeyframes);
|
||||
|
||||
const keyframes = new Array(numAnimations);
|
||||
for (let i = 0; i < numAnimations; ++i) {
|
||||
keyframes[i] = new Float32Array(numKeyframes * numComponents[i]);
|
||||
}
|
||||
|
||||
for (let frameId = 0; frameId < numKeyframes; ++frameId) {
|
||||
timestamps[frameId] = frameId;
|
||||
for (let keyframeId = 0; keyframeId < numAnimations; ++keyframeId) {
|
||||
for (let j = 0; j < numComponents[keyframeId]; ++j) {
|
||||
// Set an arbitrary deterministic value.
|
||||
keyframes[keyframeId][frameId * numComponents[keyframeId] + j] =
|
||||
(frameId * numComponents[keyframeId] + j) * (keyframeId + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const animation = {
|
||||
timestamps : timestamps,
|
||||
keyframes : keyframes
|
||||
};
|
||||
|
||||
return animation;
|
||||
}
|
||||
|
||||
function encodeAnimation(animation) {
|
||||
const encoder = new encoderModule.AnimationEncoder();
|
||||
const animationBuilder = new encoderModule.AnimationBuilder();
|
||||
const dracoAnimation = new encoderModule.KeyframeAnimation();
|
||||
|
||||
// Add timestamps to animation.
|
||||
const numKeyframes = animation.timestamps.length;
|
||||
assert(animationBuilder.SetTimestamps(dracoAnimation, numKeyframes,
|
||||
animation.timestamps));
|
||||
|
||||
// Add keyframes.
|
||||
for (let keyframeId = 0; keyframeId < animation.keyframes.length;
|
||||
++keyframeId) {
|
||||
const numComponents =
|
||||
animation.keyframes[keyframeId].length / animation.timestamps.length;
|
||||
assert(animationBuilder.AddKeyframes(dracoAnimation, numKeyframes,
|
||||
numComponents, animation.keyframes[keyframeId]) == keyframeId + 1);
|
||||
}
|
||||
|
||||
const encodedData = new encoderModule.DracoInt8Array();
|
||||
encoder.SetTimestampsQuantization(16);
|
||||
encoder.SetKeyframesQuantization(16);
|
||||
console.log("Quantized timestamps to 16 bits.");
|
||||
console.log("Quantized keyframes to 16 bits.");
|
||||
const encodedLen = encoder.EncodeAnimationToDracoBuffer(dracoAnimation,
|
||||
encodedData);
|
||||
|
||||
encoderModule.destroy(dracoAnimation);
|
||||
encoderModule.destroy(animationBuilder);
|
||||
encoderModule.destroy(encoder);
|
||||
|
||||
assert(encodedLen > 0, "Failed encoding.");
|
||||
console.log("Encoded size: " + encodedLen);
|
||||
|
||||
const outputBuffer = new ArrayBuffer(encodedLen);
|
||||
const outputData = new Int8Array(outputBuffer);
|
||||
for (let i = 0; i < encodedLen; ++i) {
|
||||
const data0 = encodedData.GetValue(i);
|
||||
outputData[i] = encodedData.GetValue(i);
|
||||
}
|
||||
encoderModule.destroy(encodedData);
|
||||
|
||||
return outputBuffer;
|
||||
}
|
||||
|
||||
function decodeAnimation(encodedData) {
|
||||
const buffer = new decoderModule.DecoderBuffer();
|
||||
buffer.Init(new Int8Array(encodedData), encodedData.byteLength);
|
||||
const decoder = new decoderModule.AnimationDecoder();
|
||||
|
||||
const dracoAnimation = new decoderModule.KeyframeAnimation();
|
||||
decoder.DecodeBufferToKeyframeAnimation(buffer, dracoAnimation);
|
||||
assert(dracoAnimation.ptr != 0, "Invalid animation.");
|
||||
|
||||
|
||||
const numKeyframes = dracoAnimation.num_frames();
|
||||
|
||||
const timestampAttData = new decoderModule.DracoFloat32Array();
|
||||
assert(decoder.GetTimestamps(dracoAnimation, timestampAttData));
|
||||
const timestamps = new Float32Array(numKeyframes);
|
||||
for (let i = 0; i < numKeyframes; ++i) {
|
||||
timestamps[i] = timestampAttData.GetValue(i);
|
||||
}
|
||||
|
||||
const numAnimations = dracoAnimation.num_animations();
|
||||
const keyframes = new Array(numAnimations);
|
||||
for (let keyframeId = 0; keyframeId < numAnimations; ++keyframeId) {
|
||||
const animationAttData = new decoderModule.DracoFloat32Array();
|
||||
// The id of keyframe attribute starts at 1.
|
||||
assert(decoder.GetKeyframes(dracoAnimation, keyframeId + 1,
|
||||
animationAttData));
|
||||
keyframes[keyframeId] = new Float32Array(animationAttData.size());
|
||||
for (let i = 0; i < animationAttData.size(); ++i) {
|
||||
keyframes[keyframeId][i] = animationAttData.GetValue(i);
|
||||
}
|
||||
}
|
||||
|
||||
const animation = {
|
||||
timestamps : timestamps,
|
||||
keyframes : keyframes
|
||||
}
|
||||
|
||||
console.log("Decoding successful.");
|
||||
|
||||
return animation;
|
||||
}
|
||||
|
||||
function compareAnimation(animation, decodedAnimation) {
|
||||
console.log("Comparing decoded animation data...");
|
||||
assert(animation.timestamps.length == decodedAnimation.timestamps.length);
|
||||
assert(animation.keyframes.length == decodedAnimation.keyframes.length);
|
||||
|
||||
console.log("Done.");
|
||||
}
|
||||
|
||||
// Create animation with 50 frames and two animations.
|
||||
// The first animation has 3 components and the second has 4 components.
|
||||
const animation = generateAnimationData(100, 2, [3, 4]);
|
||||
const encodedData = encodeAnimation(animation);
|
||||
|
||||
const decodedAnimation = decodeAnimation(encodedData);
|
||||
compareAnimation(animation, decodedAnimation);
|
19
javascript/npm/draco_animation/package.json
Normal file
19
javascript/npm/draco_animation/package.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "draco-animation",
|
||||
"version": "1.0.4",
|
||||
"description": "Draco animation is a library for compressing and decompressing 3D animations of geometric meshes.",
|
||||
"main": "draco-animation.js",
|
||||
"scripts": {
|
||||
"test": "nodejs draco_animation_encoding_test.js"
|
||||
},
|
||||
"keywords": [
|
||||
"compression",
|
||||
"animation"
|
||||
],
|
||||
"author": "Google Draco Team",
|
||||
"license": "Apache-2.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/google/draco.git"
|
||||
}
|
||||
}
|
55
src/draco/animation/keyframe_animation.cc
Normal file
55
src/draco/animation/keyframe_animation.cc
Normal file
@ -0,0 +1,55 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/animation/keyframe_animation.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
KeyframeAnimation::KeyframeAnimation() {}
|
||||
|
||||
bool KeyframeAnimation::SetTimestamps(
|
||||
const std::vector<TimestampType> ×tamp) {
|
||||
// Already added attributes.
|
||||
const int32_t num_frames = timestamp.size();
|
||||
if (num_attributes() > 0) {
|
||||
// Timestamp attribute could be added only once.
|
||||
if (timestamps()->size()) {
|
||||
return false;
|
||||
} else {
|
||||
// Check if the number of frames is consistent with
|
||||
// the existing keyframes.
|
||||
if (num_frames != num_points())
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// This is the first attribute.
|
||||
set_num_frames(num_frames);
|
||||
}
|
||||
|
||||
// Add attribute for time stamp data.
|
||||
std::unique_ptr<PointAttribute> timestamp_att =
|
||||
std::unique_ptr<PointAttribute>(new PointAttribute());
|
||||
timestamp_att->Init(GeometryAttribute::GENERIC, nullptr, 1, DT_FLOAT32, false,
|
||||
sizeof(float), 0);
|
||||
timestamp_att->SetIdentityMapping();
|
||||
timestamp_att->Reset(num_frames);
|
||||
for (PointIndex i(0); i < num_frames; ++i) {
|
||||
timestamp_att->SetAttributeValue(timestamp_att->mapped_index(i),
|
||||
×tamp[i.value()]);
|
||||
}
|
||||
this->SetAttribute(kTimestampId, std::move(timestamp_att));
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace draco
|
108
src/draco/animation/keyframe_animation.h
Normal file
108
src/draco/animation/keyframe_animation.h
Normal file
@ -0,0 +1,108 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#ifndef DRACO_ANIMATION_KEYFRAME_ANIMATION_H_
|
||||
#define DRACO_ANIMATION_KEYFRAME_ANIMATION_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "draco/point_cloud/point_cloud.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
// Class for holding keyframe animation data. It will have two or more
|
||||
// attributes as a point cloud. The first attribute is always the timestamp
|
||||
// of the animation. Each KeyframeAnimation could have multiple animations with
|
||||
// the same number of frames. Each animation will be treated as a point
|
||||
// attribute.
|
||||
class KeyframeAnimation : public PointCloud {
|
||||
public:
|
||||
// Force time stamp to be float type.
|
||||
using TimestampType = float;
|
||||
|
||||
KeyframeAnimation();
|
||||
|
||||
// Animation must have only one timestamp attribute.
|
||||
// This function must be called before adding any animation data.
|
||||
// Returns false if timestamp already exists.
|
||||
bool SetTimestamps(const std::vector<TimestampType> ×tamp);
|
||||
|
||||
// Returns an id for the added animation data. This id will be used to
|
||||
// identify this animation.
|
||||
// Returns -1 if error, e.g. number of frames is not consistent.
|
||||
// Type |T| should be consistent with |DataType|, e.g:
|
||||
// float - DT_FLOAT32,
|
||||
// int32_t - DT_INT32, ...
|
||||
template <typename T>
|
||||
int32_t AddKeyframes(DataType data_type, uint32_t num_components,
|
||||
const std::vector<T> &data);
|
||||
|
||||
const PointAttribute *timestamps() const {
|
||||
return GetAttributeByUniqueId(kTimestampId);
|
||||
}
|
||||
const PointAttribute *keyframes(int32_t animation_id) const {
|
||||
return GetAttributeByUniqueId(animation_id);
|
||||
}
|
||||
|
||||
// Number of frames should be equal to number points in the point cloud.
|
||||
void set_num_frames(int32_t num_frames) { set_num_points(num_frames); }
|
||||
int32_t num_frames() const { return static_cast<int32_t>(num_points()); }
|
||||
|
||||
int32_t num_animations() const { return num_attributes() - 1; }
|
||||
|
||||
private:
|
||||
// Attribute id of timestamp is fixed to 0.
|
||||
static constexpr int32_t kTimestampId = 0;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
int32_t KeyframeAnimation::AddKeyframes(DataType data_type,
|
||||
uint32_t num_components,
|
||||
const std::vector<T> &data) {
|
||||
// TODO(draco-eng): Verify T is consistent with |data_type|.
|
||||
if (num_components == 0)
|
||||
return -1;
|
||||
// If timestamps is not added yet, then reserve attribute 0 for timestamps.
|
||||
if (!num_attributes()) {
|
||||
// Add a temporary attribute with 0 points to fill attribute id 0.
|
||||
std::unique_ptr<PointAttribute> temp_att =
|
||||
std::unique_ptr<PointAttribute>(new PointAttribute());
|
||||
temp_att->Init(GeometryAttribute::GENERIC, nullptr, num_components,
|
||||
data_type, false, DataTypeLength(data_type), 0);
|
||||
temp_att->Reset(0);
|
||||
this->AddAttribute(std::move(temp_att));
|
||||
|
||||
set_num_frames(data.size() / num_components);
|
||||
}
|
||||
|
||||
if (data.size() != num_components * num_frames())
|
||||
return -1;
|
||||
|
||||
std::unique_ptr<PointAttribute> keyframe_att =
|
||||
std::unique_ptr<PointAttribute>(new PointAttribute());
|
||||
keyframe_att->Init(GeometryAttribute::GENERIC, nullptr, num_components,
|
||||
data_type, false, DataTypeLength(data_type), 0);
|
||||
keyframe_att->SetIdentityMapping();
|
||||
keyframe_att->Reset(num_frames());
|
||||
const size_t stride = num_components;
|
||||
for (PointIndex i(0); i < num_frames(); ++i) {
|
||||
keyframe_att->SetAttributeValue(keyframe_att->mapped_index(i),
|
||||
&data[i.value() * stride]);
|
||||
}
|
||||
return this->AddAttribute(std::move(keyframe_att));
|
||||
}
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_ANIMATION_KEYFRAME_ANIMATION_H_
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2016 The Draco Authors.
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
@ -12,23 +12,18 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#ifndef DRACO_MESH_EDGEBREAKER_OBSERVER_H_
|
||||
#define DRACO_MESH_EDGEBREAKER_OBSERVER_H_
|
||||
#include "draco/animation/keyframe_animation_decoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
// A default implementation of the observer that can be used inside of the
|
||||
// EdgeBreakerTraverser (edgebreaker_traverser.h). The default implementation
|
||||
// results in no-op for all calls.
|
||||
class EdgeBreakerObserver {
|
||||
public:
|
||||
inline void OnSymbolC(){};
|
||||
inline void OnSymbolL(){};
|
||||
inline void OnSymbolR(){};
|
||||
inline void OnSymbolS(){};
|
||||
inline void OnSymbolE(){};
|
||||
};
|
||||
Status KeyframeAnimationDecoder::Decode(const DecoderOptions &options,
|
||||
DecoderBuffer *in_buffer,
|
||||
KeyframeAnimation *animation) {
|
||||
const auto status = PointCloudSequentialDecoder::Decode(
|
||||
options, in_buffer, static_cast<PointCloud *>(animation));
|
||||
if (!status.ok())
|
||||
return status;
|
||||
return OkStatus();
|
||||
}
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_MESH_EDGEBREAKER_OBSERVER_H_
|
34
src/draco/animation/keyframe_animation_decoder.h
Normal file
34
src/draco/animation/keyframe_animation_decoder.h
Normal file
@ -0,0 +1,34 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#ifndef DRACO_ANIMATION_KEYFRAME_ANIMATION_DECODER_H_
|
||||
#define DRACO_ANIMATION_KEYFRAME_ANIMATION_DECODER_H_
|
||||
|
||||
#include "draco/animation/keyframe_animation.h"
|
||||
#include "draco/compression/point_cloud/point_cloud_sequential_decoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
// Class for decoding keyframe animation.
|
||||
class KeyframeAnimationDecoder : private PointCloudSequentialDecoder {
|
||||
public:
|
||||
KeyframeAnimationDecoder(){};
|
||||
|
||||
Status Decode(const DecoderOptions &options, DecoderBuffer *in_buffer,
|
||||
KeyframeAnimation *animation);
|
||||
};
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_ANIMATION_KEYFRAME_ANIMATION_DECODER_H_
|
28
src/draco/animation/keyframe_animation_encoder.cc
Normal file
28
src/draco/animation/keyframe_animation_encoder.cc
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/animation/keyframe_animation_encoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
KeyframeAnimationEncoder::KeyframeAnimationEncoder() {}
|
||||
|
||||
Status KeyframeAnimationEncoder::EncodeKeyframeAnimation(
|
||||
const KeyframeAnimation &animation, const EncoderOptions &options,
|
||||
EncoderBuffer *out_buffer) {
|
||||
SetPointCloud(animation);
|
||||
return Encode(options, out_buffer);
|
||||
}
|
||||
|
||||
} // namespace draco
|
39
src/draco/animation/keyframe_animation_encoder.h
Normal file
39
src/draco/animation/keyframe_animation_encoder.h
Normal file
@ -0,0 +1,39 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#ifndef DRACO_ANIMATION_KEYFRAME_ANIMATION_ENCODER_H_
|
||||
#define DRACO_ANIMATION_KEYFRAME_ANIMATION_ENCODER_H_
|
||||
|
||||
#include "draco/animation/keyframe_animation.h"
|
||||
#include "draco/compression/point_cloud/point_cloud_sequential_encoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
// Class for encoding keyframe animation. It takes KeyframeAnimation as a
|
||||
// PointCloud and compress it. It's mostly a wrapper around PointCloudEncoder so
|
||||
// that the animation module could be separated from geometry compression when
|
||||
// exposed to developers.
|
||||
class KeyframeAnimationEncoder : private PointCloudSequentialEncoder {
|
||||
public:
|
||||
KeyframeAnimationEncoder();
|
||||
|
||||
// Encode an animation to a buffer.
|
||||
Status EncodeKeyframeAnimation(const KeyframeAnimation &animation,
|
||||
const EncoderOptions &options,
|
||||
EncoderBuffer *out_buffer);
|
||||
};
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_ANIMATION_KEYFRAME_ANIMATION_ENCODER_H_
|
168
src/draco/animation/keyframe_animation_encoding_test.cc
Normal file
168
src/draco/animation/keyframe_animation_encoding_test.cc
Normal file
@ -0,0 +1,168 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/animation/keyframe_animation.h"
|
||||
#include "draco/animation/keyframe_animation_decoder.h"
|
||||
#include "draco/animation/keyframe_animation_encoder.h"
|
||||
#include "draco/core/draco_test_base.h"
|
||||
#include "draco/core/draco_test_utils.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
class KeyframeAnimationEncodingTest : public ::testing::Test {
|
||||
protected:
|
||||
KeyframeAnimationEncodingTest() {}
|
||||
|
||||
bool CreateAndAddTimestamps(int32_t num_frames) {
|
||||
timestamps_.resize(num_frames);
|
||||
for (int i = 0; i < timestamps_.size(); ++i)
|
||||
timestamps_[i] = static_cast<draco::KeyframeAnimation::TimestampType>(i);
|
||||
return keyframe_animation_.SetTimestamps(timestamps_);
|
||||
}
|
||||
|
||||
int32_t CreateAndAddAnimationData(int32_t num_frames,
|
||||
uint32_t num_components) {
|
||||
// Create and add animation data with.
|
||||
animation_data_.resize(num_frames * num_components);
|
||||
for (int i = 0; i < animation_data_.size(); ++i)
|
||||
animation_data_[i] = static_cast<float>(i);
|
||||
return keyframe_animation_.AddKeyframes(draco::DT_FLOAT32, num_components,
|
||||
animation_data_);
|
||||
}
|
||||
|
||||
template <int num_components_t>
|
||||
void CompareAnimationData(const KeyframeAnimation &animation0,
|
||||
const KeyframeAnimation &animation1,
|
||||
bool quantized) {
|
||||
ASSERT_EQ(animation0.num_frames(), animation1.num_frames());
|
||||
ASSERT_EQ(animation0.num_animations(), animation1.num_animations());
|
||||
|
||||
if (quantized) {
|
||||
// TODO(hemmer) : Add test for stable quantization.
|
||||
// Quantization will result in slightly different values.
|
||||
// Skip comparing values.
|
||||
return;
|
||||
}
|
||||
|
||||
// Compare time stamp.
|
||||
const auto timestamp_att0 = animation0.timestamps();
|
||||
const auto timestamp_att1 = animation0.timestamps();
|
||||
for (int i = 0; i < animation0.num_frames(); ++i) {
|
||||
std::array<float, 1> att_value0;
|
||||
std::array<float, 1> att_value1;
|
||||
ASSERT_TRUE((timestamp_att0->GetValue<float, 1>(
|
||||
draco::AttributeValueIndex(i), &att_value0)));
|
||||
ASSERT_TRUE((timestamp_att1->GetValue<float, 1>(
|
||||
draco::AttributeValueIndex(i), &att_value1)));
|
||||
ASSERT_FLOAT_EQ(att_value0[0], att_value1[0]);
|
||||
}
|
||||
|
||||
for (int animation_id = 1; animation_id < animation0.num_animations();
|
||||
++animation_id) {
|
||||
// Compare keyframe data.
|
||||
const auto keyframe_att0 = animation0.keyframes(animation_id);
|
||||
const auto keyframe_att1 = animation1.keyframes(animation_id);
|
||||
ASSERT_EQ(keyframe_att0->num_components(),
|
||||
keyframe_att1->num_components());
|
||||
for (int i = 0; i < animation0.num_frames(); ++i) {
|
||||
std::array<float, num_components_t> att_value0;
|
||||
std::array<float, num_components_t> att_value1;
|
||||
ASSERT_TRUE((keyframe_att0->GetValue<float, num_components_t>(
|
||||
draco::AttributeValueIndex(i), &att_value0)));
|
||||
ASSERT_TRUE((keyframe_att1->GetValue<float, num_components_t>(
|
||||
draco::AttributeValueIndex(i), &att_value1)));
|
||||
for (int j = 0; j < att_value0.size(); ++j) {
|
||||
ASSERT_FLOAT_EQ(att_value0[j], att_value1[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <int num_components_t>
|
||||
void TestKeyframeAnimationEncoding() {
|
||||
TestKeyframeAnimationEncoding<num_components_t>(false);
|
||||
}
|
||||
|
||||
template <int num_components_t>
|
||||
void TestKeyframeAnimationEncoding(bool quantized) {
|
||||
// Encode animation class.
|
||||
draco::EncoderBuffer buffer;
|
||||
draco::KeyframeAnimationEncoder encoder;
|
||||
EncoderOptions options = EncoderOptions::CreateDefaultOptions();
|
||||
if (quantized) {
|
||||
// Set quantization for timestamps.
|
||||
options.SetAttributeInt(0, "quantization_bits", 20);
|
||||
// Set quantization for keyframes.
|
||||
for (int i = 1; i <= keyframe_animation_.num_animations(); ++i) {
|
||||
options.SetAttributeInt(i, "quantization_bits", 20);
|
||||
}
|
||||
}
|
||||
|
||||
ASSERT_TRUE(
|
||||
encoder.EncodeKeyframeAnimation(keyframe_animation_, options, &buffer)
|
||||
.ok());
|
||||
|
||||
draco::DecoderBuffer dec_decoder;
|
||||
draco::KeyframeAnimationDecoder decoder;
|
||||
DecoderBuffer dec_buffer;
|
||||
dec_buffer.Init(buffer.data(), buffer.size());
|
||||
|
||||
// Decode animation class.
|
||||
std::unique_ptr<KeyframeAnimation> decoded_animation(
|
||||
new KeyframeAnimation());
|
||||
DecoderOptions dec_options;
|
||||
ASSERT_TRUE(
|
||||
decoder.Decode(dec_options, &dec_buffer, decoded_animation.get()).ok());
|
||||
|
||||
// Verify if animation before and after compression is identical.
|
||||
CompareAnimationData<num_components_t>(keyframe_animation_,
|
||||
*decoded_animation, quantized);
|
||||
}
|
||||
|
||||
draco::KeyframeAnimation keyframe_animation_;
|
||||
std::vector<draco::KeyframeAnimation::TimestampType> timestamps_;
|
||||
std::vector<float> animation_data_;
|
||||
};
|
||||
|
||||
TEST_F(KeyframeAnimationEncodingTest, OneComponent) {
|
||||
const int num_frames = 1;
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(num_frames));
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, 1), 1);
|
||||
TestKeyframeAnimationEncoding<1>();
|
||||
}
|
||||
|
||||
TEST_F(KeyframeAnimationEncodingTest, ManyComponents) {
|
||||
const int num_frames = 100;
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(num_frames));
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, 100), 1);
|
||||
TestKeyframeAnimationEncoding<100>();
|
||||
}
|
||||
|
||||
TEST_F(KeyframeAnimationEncodingTest, ManyComponentsWithQuantization) {
|
||||
const int num_frames = 100;
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(num_frames));
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, 4), 1);
|
||||
// Test compression with quantization.
|
||||
TestKeyframeAnimationEncoding<4>(true);
|
||||
}
|
||||
|
||||
TEST_F(KeyframeAnimationEncodingTest, MultipleAnimations) {
|
||||
const int num_frames = 5;
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(num_frames));
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, 3), 1);
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, 3), 2);
|
||||
TestKeyframeAnimationEncoding<3>();
|
||||
}
|
||||
|
||||
} // namespace draco
|
102
src/draco/animation/keyframe_animation_test.cc
Normal file
102
src/draco/animation/keyframe_animation_test.cc
Normal file
@ -0,0 +1,102 @@
|
||||
// Copyright 2017 The Draco Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/animation/keyframe_animation.h"
|
||||
|
||||
#include "draco/core/draco_test_base.h"
|
||||
|
||||
namespace {
|
||||
|
||||
class KeyframeAnimationTest : public ::testing::Test {
|
||||
protected:
|
||||
KeyframeAnimationTest() {}
|
||||
|
||||
bool CreateAndAddTimestamps(int32_t num_frames) {
|
||||
timestamps_.resize(num_frames);
|
||||
for (int i = 0; i < timestamps_.size(); ++i)
|
||||
timestamps_[i] = static_cast<draco::KeyframeAnimation::TimestampType>(i);
|
||||
return keyframe_animation_.SetTimestamps(timestamps_);
|
||||
}
|
||||
|
||||
int32_t CreateAndAddAnimationData(int32_t num_frames,
|
||||
uint32_t num_components) {
|
||||
// Create and add animation data with.
|
||||
animation_data_.resize(num_frames * num_components);
|
||||
for (int i = 0; i < animation_data_.size(); ++i)
|
||||
animation_data_[i] = static_cast<float>(i);
|
||||
return keyframe_animation_.AddKeyframes(draco::DT_FLOAT32, num_components,
|
||||
animation_data_);
|
||||
}
|
||||
|
||||
template <int num_components_t>
|
||||
void CompareAnimationData() {
|
||||
// Compare time stamp.
|
||||
const auto timestamp_att = keyframe_animation_.timestamps();
|
||||
for (int i = 0; i < timestamps_.size(); ++i) {
|
||||
std::array<float, 1> att_value;
|
||||
ASSERT_TRUE((timestamp_att->GetValue<float, 1>(
|
||||
draco::AttributeValueIndex(i), &att_value)));
|
||||
ASSERT_FLOAT_EQ(att_value[0], i);
|
||||
}
|
||||
|
||||
// Compare keyframe data.
|
||||
const auto keyframe_att = keyframe_animation_.keyframes(1);
|
||||
for (int i = 0; i < animation_data_.size() / num_components_t; ++i) {
|
||||
std::array<float, num_components_t> att_value;
|
||||
ASSERT_TRUE((keyframe_att->GetValue<float, num_components_t>(
|
||||
draco::AttributeValueIndex(i), &att_value)));
|
||||
for (int j = 0; j < num_components_t; ++j) {
|
||||
ASSERT_FLOAT_EQ(att_value[j], i * num_components_t + j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <int num_components_t>
|
||||
void TestKeyframeAnimation(int32_t num_frames) {
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(num_frames));
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, num_components_t), 1);
|
||||
CompareAnimationData<num_components_t>();
|
||||
}
|
||||
|
||||
draco::KeyframeAnimation keyframe_animation_;
|
||||
std::vector<draco::KeyframeAnimation::TimestampType> timestamps_;
|
||||
std::vector<float> animation_data_;
|
||||
};
|
||||
|
||||
// Test animation with 1 component and 10 frames.
|
||||
TEST_F(KeyframeAnimationTest, OneComponent) { TestKeyframeAnimation<1>(10); }
|
||||
|
||||
// Test animation with 4 component and 10 frames.
|
||||
TEST_F(KeyframeAnimationTest, FourComponent) { TestKeyframeAnimation<4>(10); }
|
||||
|
||||
// Test adding animation data before timestamp.
|
||||
TEST_F(KeyframeAnimationTest, AddingAnimationFirst) {
|
||||
ASSERT_EQ(CreateAndAddAnimationData(5, 1), 1);
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(5));
|
||||
}
|
||||
|
||||
// Test adding timestamp more than once.
|
||||
TEST_F(KeyframeAnimationTest, ErrorAddingTimestampsTwice) {
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(5));
|
||||
ASSERT_FALSE(CreateAndAddTimestamps(5));
|
||||
}
|
||||
// Test animation with multiple animation data.
|
||||
TEST_F(KeyframeAnimationTest, MultipleAnimationData) {
|
||||
const int num_frames = 5;
|
||||
ASSERT_TRUE(CreateAndAddTimestamps(num_frames));
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, 1), 1);
|
||||
ASSERT_EQ(CreateAndAddAnimationData(num_frames, 2), 2);
|
||||
}
|
||||
|
||||
} // namespace
|
@ -76,7 +76,8 @@ bool AttributeQuantizationTransform::ComputeParameters(
|
||||
attribute.GetValue(AttributeValueIndex(0), min_values_.data());
|
||||
attribute.GetValue(AttributeValueIndex(0), max_values.get());
|
||||
|
||||
for (AttributeValueIndex i(1); i < static_cast<uint32_t>(attribute.size()); ++i) {
|
||||
for (AttributeValueIndex i(1); i < static_cast<uint32_t>(attribute.size());
|
||||
++i) {
|
||||
attribute.GetValue(i, att_val.get());
|
||||
for (int c = 0; c < num_components; ++c) {
|
||||
if (min_values_[c] > att_val[c])
|
||||
|
@ -21,7 +21,7 @@ namespace draco {
|
||||
AttributesDecoder::AttributesDecoder()
|
||||
: point_cloud_decoder_(nullptr), point_cloud_(nullptr) {}
|
||||
|
||||
bool AttributesDecoder::Initialize(PointCloudDecoder *decoder, PointCloud *pc) {
|
||||
bool AttributesDecoder::Init(PointCloudDecoder *decoder, PointCloud *pc) {
|
||||
point_cloud_decoder_ = decoder;
|
||||
point_cloud_ = pc;
|
||||
return true;
|
||||
|
@ -37,7 +37,7 @@ class AttributesDecoder : public AttributesDecoderInterface {
|
||||
|
||||
// Called after all attribute decoders are created. It can be used to perform
|
||||
// any custom initialization.
|
||||
bool Initialize(PointCloudDecoder *decoder, PointCloud *pc) override;
|
||||
bool Init(PointCloudDecoder *decoder, PointCloud *pc) override;
|
||||
|
||||
// Decodes any attribute decoder specific data from the |in_buffer|.
|
||||
bool DecodeAttributesDecoderData(DecoderBuffer *in_buffer) override;
|
||||
@ -65,7 +65,8 @@ class AttributesDecoder : public AttributesDecoderInterface {
|
||||
|
||||
protected:
|
||||
int32_t GetLocalIdForPointAttribute(int32_t point_attribute_id) const {
|
||||
const int id_map_size = static_cast<int>(point_attribute_to_local_id_map_.size());
|
||||
const int id_map_size =
|
||||
static_cast<int>(point_attribute_to_local_id_map_.size());
|
||||
if (point_attribute_id >= id_map_size)
|
||||
return -1;
|
||||
return point_attribute_to_local_id_map_[point_attribute_id];
|
||||
|
@ -35,7 +35,7 @@ class AttributesDecoderInterface {
|
||||
|
||||
// Called after all attribute decoders are created. It can be used to perform
|
||||
// any custom initialization.
|
||||
virtual bool Initialize(PointCloudDecoder *decoder, PointCloud *pc) = 0;
|
||||
virtual bool Init(PointCloudDecoder *decoder, PointCloud *pc) = 0;
|
||||
|
||||
// Decodes any attribute decoder specific data from the |in_buffer|.
|
||||
virtual bool DecodeAttributesDecoderData(DecoderBuffer *in_buffer) = 0;
|
||||
|
@ -25,8 +25,7 @@ AttributesEncoder::AttributesEncoder(int att_id) : AttributesEncoder() {
|
||||
AddAttributeId(att_id);
|
||||
}
|
||||
|
||||
bool AttributesEncoder::Initialize(PointCloudEncoder *encoder,
|
||||
const PointCloud *pc) {
|
||||
bool AttributesEncoder::Init(PointCloudEncoder *encoder, const PointCloud *pc) {
|
||||
point_cloud_encoder_ = encoder;
|
||||
point_cloud_ = pc;
|
||||
return true;
|
||||
|
@ -37,7 +37,7 @@ class AttributesEncoder {
|
||||
// any custom initialization, including setting up attribute dependencies.
|
||||
// Note: no data should be encoded in this function, because the decoder may
|
||||
// process encoders in a different order from the decoder.
|
||||
virtual bool Initialize(PointCloudEncoder *encoder, const PointCloud *pc);
|
||||
virtual bool Init(PointCloudEncoder *encoder, const PointCloud *pc);
|
||||
|
||||
// Encodes data needed by the target attribute decoder.
|
||||
virtual bool EncodeAttributesEncoderData(EncoderBuffer *out_buffer);
|
||||
@ -89,7 +89,8 @@ class AttributesEncoder {
|
||||
point_attribute_ids_.push_back(id);
|
||||
if (id >= static_cast<int32_t>(point_attribute_to_local_id_map_.size()))
|
||||
point_attribute_to_local_id_map_.resize(id + 1, -1);
|
||||
point_attribute_to_local_id_map_[id] = static_cast<int32_t>(point_attribute_ids_.size()) - 1;
|
||||
point_attribute_to_local_id_map_[id] =
|
||||
static_cast<int32_t>(point_attribute_ids_.size()) - 1;
|
||||
}
|
||||
|
||||
// Sets new attribute point ids (replacing the existing ones).
|
||||
@ -102,7 +103,9 @@ class AttributesEncoder {
|
||||
}
|
||||
|
||||
int32_t GetAttributeId(int i) const { return point_attribute_ids_[i]; }
|
||||
uint32_t num_attributes() const { return static_cast<uint32_t>(point_attribute_ids_.size()); }
|
||||
uint32_t num_attributes() const {
|
||||
return static_cast<uint32_t>(point_attribute_ids_.size());
|
||||
}
|
||||
PointCloudEncoder *encoder() const { return point_cloud_encoder_; }
|
||||
|
||||
protected:
|
||||
@ -122,7 +125,8 @@ class AttributesEncoder {
|
||||
}
|
||||
|
||||
int32_t GetLocalIdForPointAttribute(int32_t point_attribute_id) const {
|
||||
const int id_map_size = static_cast<int>(point_attribute_to_local_id_map_.size());
|
||||
const int id_map_size =
|
||||
static_cast<int>(point_attribute_to_local_id_map_.size());
|
||||
if (point_attribute_id >= id_map_size)
|
||||
return -1;
|
||||
return point_attribute_to_local_id_map_[point_attribute_id];
|
||||
|
@ -267,7 +267,8 @@ bool KdTreeAttributesDecoder::DecodeDataNeededByPortableTransforms(
|
||||
AttributeQuantizationTransform transform;
|
||||
transform.SetParameters(quantization_bits, min_value.data(),
|
||||
num_components, max_value_dif);
|
||||
const int num_transforms = static_cast<int>(attribute_quantization_transforms_.size());
|
||||
const int num_transforms =
|
||||
static_cast<int>(attribute_quantization_transforms_.size());
|
||||
if (!transform.TransferToAttribute(
|
||||
quantized_portable_attributes_[num_transforms].get()))
|
||||
return false;
|
||||
@ -289,7 +290,8 @@ bool KdTreeAttributesDecoder::DecodeDataNeededByPortableTransforms(
|
||||
const uint32_t attribute_count = GetNumAttributes();
|
||||
uint32_t total_dimensionality = 0; // position is a required dimension
|
||||
std::vector<AttributeTuple> atts(attribute_count);
|
||||
for (auto attribute_index = 0; static_cast<uint32_t>(attribute_index) < attribute_count;
|
||||
for (auto attribute_index = 0;
|
||||
static_cast<uint32_t>(attribute_index) < attribute_count;
|
||||
attribute_index += 1) // increment the dimensionality as needed...
|
||||
{
|
||||
const int att_id = GetAttributeId(attribute_index);
|
||||
@ -336,7 +338,8 @@ bool KdTreeAttributesDecoder::DecodeDataNeededByPortableTransforms(
|
||||
if (!in_buffer->Decode(&num_points))
|
||||
return false;
|
||||
|
||||
for (auto attribute_index = 0; static_cast<uint32_t>(attribute_index) < attribute_count;
|
||||
for (auto attribute_index = 0;
|
||||
static_cast<uint32_t>(attribute_index) < attribute_count;
|
||||
attribute_index += 1) {
|
||||
const int att_id = GetAttributeId(attribute_index);
|
||||
PointAttribute *const attr =
|
||||
@ -410,7 +413,8 @@ bool KdTreeAttributesDecoder::TransformAttributeBackToSignedType(
|
||||
std::vector<UnsignedType> unsigned_val(att->num_components());
|
||||
std::vector<SignedDataTypeT> signed_val(att->num_components());
|
||||
|
||||
for (AttributeValueIndex avi(0); avi < static_cast<uint32_t>(att->size()); ++avi) {
|
||||
for (AttributeValueIndex avi(0); avi < static_cast<uint32_t>(att->size());
|
||||
++avi) {
|
||||
att->GetValue(avi, &unsigned_val[0]);
|
||||
for (int c = 0; c < att->num_components(); ++c) {
|
||||
// Up-cast |unsigned_val| to int32_t to ensure we don't overflow it for
|
||||
|
@ -87,7 +87,8 @@ bool KdTreeAttributesEncoder::TransformAttributesToPortableFormat() {
|
||||
std::vector<int32_t> min_value(att->num_components(),
|
||||
std::numeric_limits<int32_t>::max());
|
||||
std::vector<int32_t> act_value(att->num_components());
|
||||
for (AttributeValueIndex avi(0); avi < static_cast<uint32_t>(att->size()); ++avi) {
|
||||
for (AttributeValueIndex avi(0); avi < static_cast<uint32_t>(att->size());
|
||||
++avi) {
|
||||
att->ConvertValue<int32_t>(avi, &act_value[0]);
|
||||
for (int c = 0; c < att->num_components(); ++c) {
|
||||
if (min_value[c] > act_value[c])
|
||||
@ -221,7 +222,7 @@ bool KdTreeAttributesEncoder::EncodePortableAttributes(
|
||||
const uint32_t *data = point_vector[0];
|
||||
for (int i = 0; i < num_points * num_components_; ++i) {
|
||||
if (data[i] > 0) {
|
||||
const int msb = bits::MostSignificantBit(data[i]) + 1;
|
||||
const int msb = MostSignificantBit(data[i]) + 1;
|
||||
if (msb > num_bits) {
|
||||
num_bits = msb;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ namespace draco {
|
||||
struct MeshAttributeIndicesEncodingData {
|
||||
MeshAttributeIndicesEncodingData() : num_values(0) {}
|
||||
|
||||
void Initialize(int num_vertices) {
|
||||
void Init(int num_vertices) {
|
||||
vertex_to_encoded_attribute_value_index_map.resize(num_vertices);
|
||||
|
||||
// We expect to store one value for each vertex.
|
||||
|
@ -175,8 +175,12 @@ class OctahedronToolBox {
|
||||
if (abs_sum == 0) {
|
||||
vec[0] = center_value_; // vec[1] == v[2] == 0
|
||||
} else {
|
||||
vec[0] = (static_cast<int64_t>(vec[0]) * static_cast<int64_t>(center_value_)) / abs_sum;
|
||||
vec[1] = (static_cast<int64_t>(vec[1]) * static_cast<int64_t>(center_value_)) / abs_sum;
|
||||
vec[0] =
|
||||
(static_cast<int64_t>(vec[0]) * static_cast<int64_t>(center_value_)) /
|
||||
abs_sum;
|
||||
vec[1] =
|
||||
(static_cast<int64_t>(vec[1]) * static_cast<int64_t>(center_value_)) /
|
||||
abs_sum;
|
||||
if (vec[2] >= 0) {
|
||||
vec[2] = center_value_ - std::abs(vec[0]) - std::abs(vec[1]);
|
||||
} else {
|
||||
|
@ -23,7 +23,7 @@
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h"
|
||||
#include "draco/core/bit_coders/rans_bit_decoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_decoder.h"
|
||||
#include "draco/core/varint_decoding.h"
|
||||
|
||||
namespace draco {
|
||||
@ -84,7 +84,7 @@ bool MeshPredictionSchemeConstrainedMultiParallelogramDecoder<
|
||||
ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data,
|
||||
int /* size */, int num_components,
|
||||
const PointIndex * /* entry_to_point_id_map */) {
|
||||
this->transform().Initialize(num_components);
|
||||
this->transform().Init(num_components);
|
||||
|
||||
// Predicted values for all simple parallelograms encountered at any given
|
||||
// vertex.
|
||||
@ -105,7 +105,8 @@ bool MeshPredictionSchemeConstrainedMultiParallelogramDecoder<
|
||||
// Used to store predicted value for multi-parallelogram prediction.
|
||||
std::vector<DataTypeT> multi_pred_vals(num_components);
|
||||
|
||||
const int corner_map_size = static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
const int corner_map_size =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
for (int p = 1; p < corner_map_size; ++p) {
|
||||
const CornerIndex start_corner_id =
|
||||
this->mesh_data().data_to_corner_map()->at(p);
|
||||
|
@ -21,8 +21,8 @@
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h"
|
||||
#include "draco/core/bit_coders/rans_bit_encoder.h"
|
||||
#include "draco/core/shannon_entropy.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_encoder.h"
|
||||
#include "draco/compression/entropy/shannon_entropy.h"
|
||||
#include "draco/core/varint_encoding.h"
|
||||
|
||||
namespace draco {
|
||||
@ -87,10 +87,12 @@ class MeshPredictionSchemeConstrainedMultiParallelogramEncoder
|
||||
// TODO(ostava): This should be generalized in case we use other binary
|
||||
// coding scheme.
|
||||
const double entropy = ComputeBinaryShannonEntropy(
|
||||
static_cast<uint32_t>(total_parallelogram), static_cast<uint32_t>(total_used_parallelograms));
|
||||
static_cast<uint32_t>(total_parallelogram),
|
||||
static_cast<uint32_t>(total_used_parallelograms));
|
||||
|
||||
// Round up to the nearest full bit.
|
||||
return static_cast<int64_t>(ceil(static_cast<double>(total_parallelogram) * entropy));
|
||||
return static_cast<int64_t>(
|
||||
ceil(static_cast<double>(total_parallelogram) * entropy));
|
||||
}
|
||||
|
||||
// Struct that contains data used for measuring the error of each available
|
||||
@ -166,7 +168,7 @@ bool MeshPredictionSchemeConstrainedMultiParallelogramEncoder<
|
||||
ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr,
|
||||
int size, int num_components,
|
||||
const PointIndex * /* entry_to_point_id_map */) {
|
||||
this->transform().Initialize(in_data, size, num_components);
|
||||
this->transform().Init(in_data, size, num_components);
|
||||
const CornerTable *const table = this->mesh_data().corner_table();
|
||||
const std::vector<int32_t> *const vertex_to_data_map =
|
||||
this->mesh_data().vertex_to_data_map();
|
||||
@ -209,7 +211,9 @@ bool MeshPredictionSchemeConstrainedMultiParallelogramEncoder<
|
||||
// We start processing the vertices from the end because this prediction uses
|
||||
// data from previous entries that could be overwritten when an entry is
|
||||
// processed.
|
||||
for (int p = static_cast<int>(this->mesh_data().data_to_corner_map()->size()) - 1; p > 0; --p) {
|
||||
for (int p =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size()) - 1;
|
||||
p > 0; --p) {
|
||||
const CornerIndex start_corner_id =
|
||||
this->mesh_data().data_to_corner_map()->at(p);
|
||||
|
||||
@ -386,8 +390,9 @@ bool MeshPredictionSchemeConstrainedMultiParallelogramEncoder<
|
||||
// Encode the crease edge flags in the reverse vertex order that is needed
|
||||
// be the decoder. Note that for the currently supported mode, each vertex
|
||||
// has exactly |num_used_parallelograms| edges that need to be encoded.
|
||||
for (int j = static_cast<int>(is_crease_edge_[i].size()) - num_used_parallelograms; j >= 0;
|
||||
j -= num_used_parallelograms) {
|
||||
for (int j = static_cast<int>(is_crease_edge_[i].size()) -
|
||||
num_used_parallelograms;
|
||||
j >= 0; j -= num_used_parallelograms) {
|
||||
// Go over all edges of the current vertex.
|
||||
for (int k = 0; k < num_used_parallelograms; ++k) {
|
||||
encoder.EncodeBit(is_crease_edge_[i][j + k]);
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h"
|
||||
#include "draco/core/bit_coders/rans_bit_decoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_decoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
@ -103,7 +103,8 @@ bool MeshPredictionSchemeGeometricNormalDecoder<
|
||||
// Expecting in_data in octahedral coordinates, i.e., portable attribute.
|
||||
DRACO_DCHECK_EQ(num_components, 2);
|
||||
|
||||
const int corner_map_size = static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
const int corner_map_size =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
|
||||
VectorD<int32_t, 3> pred_normal_3d;
|
||||
int32_t pred_normal_oct[2];
|
||||
|
@ -17,8 +17,8 @@
|
||||
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_encoder.h"
|
||||
#include "draco/compression/config/compression_shared.h"
|
||||
#include "draco/core/bit_coders/rans_bit_encoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
@ -102,7 +102,8 @@ bool MeshPredictionSchemeGeometricNormalEncoder<DataTypeT, TransformT,
|
||||
|
||||
flip_normal_bit_encoder_.StartEncoding();
|
||||
|
||||
const int corner_map_size = static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
const int corner_map_size =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
|
||||
VectorD<int32_t, 3> pred_normal_3d;
|
||||
VectorD<int32_t, 2> pos_pred_normal_oct;
|
||||
|
@ -61,8 +61,9 @@ bool MeshPredictionSchemeMultiParallelogramDecoder<DataTypeT, TransformT,
|
||||
ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data,
|
||||
int /* size */, int num_components,
|
||||
const PointIndex * /* entry_to_point_id_map */) {
|
||||
this->transform().Initialize(num_components);
|
||||
this->transform().Init(num_components);
|
||||
|
||||
// For storage of prediction values (already initialized to zero).
|
||||
std::unique_ptr<DataTypeT[]> pred_vals(new DataTypeT[num_components]());
|
||||
std::unique_ptr<DataTypeT[]> parallelogram_pred_vals(
|
||||
new DataTypeT[num_components]());
|
||||
@ -73,7 +74,8 @@ bool MeshPredictionSchemeMultiParallelogramDecoder<DataTypeT, TransformT,
|
||||
const std::vector<int32_t> *const vertex_to_data_map =
|
||||
this->mesh_data().vertex_to_data_map();
|
||||
|
||||
const int corner_map_size = static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
const int corner_map_size =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
for (int p = 1; p < corner_map_size; ++p) {
|
||||
const CornerIndex start_corner_id =
|
||||
this->mesh_data().data_to_corner_map()->at(p);
|
||||
@ -93,6 +95,7 @@ bool MeshPredictionSchemeMultiParallelogramDecoder<DataTypeT, TransformT,
|
||||
++num_parallelograms;
|
||||
}
|
||||
|
||||
// Proceed to the next corner attached to the vertex.
|
||||
corner_id = table->SwingRight(corner_id);
|
||||
if (corner_id == start_corner_id) {
|
||||
corner_id = kInvalidCornerIndex;
|
||||
|
@ -63,18 +63,21 @@ bool MeshPredictionSchemeMultiParallelogramEncoder<DataTypeT, TransformT,
|
||||
ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr,
|
||||
int size, int num_components,
|
||||
const PointIndex * /* entry_to_point_id_map */) {
|
||||
this->transform().Initialize(in_data, size, num_components);
|
||||
this->transform().Init(in_data, size, num_components);
|
||||
const CornerTable *const table = this->mesh_data().corner_table();
|
||||
const std::vector<int32_t> *const vertex_to_data_map =
|
||||
this->mesh_data().vertex_to_data_map();
|
||||
|
||||
// For storage of prediction values (already initialized to zero).
|
||||
std::unique_ptr<DataTypeT[]> pred_vals(new DataTypeT[num_components]());
|
||||
std::unique_ptr<DataTypeT[]> parallelogram_pred_vals(
|
||||
new DataTypeT[num_components]());
|
||||
|
||||
// We start processing from the end because this prediction uses data from
|
||||
// previous entries that could be overwritten when an entry is processed.
|
||||
for (int p = static_cast<int>(this->mesh_data().data_to_corner_map()->size() - 1); p > 0; --p) {
|
||||
for (int p =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size() - 1);
|
||||
p > 0; --p) {
|
||||
const CornerIndex start_corner_id =
|
||||
this->mesh_data().data_to_corner_map()->at(p);
|
||||
|
||||
|
@ -58,18 +58,20 @@ bool MeshPredictionSchemeParallelogramDecoder<DataTypeT, TransformT,
|
||||
ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data,
|
||||
int /* size */, int num_components,
|
||||
const PointIndex * /* entry_to_point_id_map */) {
|
||||
this->transform().Initialize(num_components);
|
||||
this->transform().Init(num_components);
|
||||
|
||||
const CornerTable *const table = this->mesh_data().corner_table();
|
||||
const std::vector<int32_t> *const vertex_to_data_map =
|
||||
this->mesh_data().vertex_to_data_map();
|
||||
|
||||
// For storage of prediction values (already initialized to zero).
|
||||
std::unique_ptr<DataTypeT[]> pred_vals(new DataTypeT[num_components]());
|
||||
|
||||
// Restore the first value.
|
||||
this->transform().ComputeOriginalValue(pred_vals.get(), in_corr, out_data);
|
||||
|
||||
const int corner_map_size = static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
const int corner_map_size =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
for (int p = 1; p < corner_map_size; ++p) {
|
||||
const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p);
|
||||
const int dst_offset = p * num_components;
|
||||
|
@ -69,7 +69,8 @@ bool MeshPredictionSchemeParallelogramEncoder<DataTypeT, TransformT,
|
||||
ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr,
|
||||
int size, int num_components,
|
||||
const PointIndex * /* entry_to_point_id_map */) {
|
||||
this->transform().Initialize(in_data, size, num_components);
|
||||
this->transform().Init(in_data, size, num_components);
|
||||
// For storage of prediction values (already initialized to zero).
|
||||
std::unique_ptr<DataTypeT[]> pred_vals(new DataTypeT[num_components]());
|
||||
|
||||
// We start processing from the end because this prediction uses data from
|
||||
@ -77,7 +78,9 @@ bool MeshPredictionSchemeParallelogramEncoder<DataTypeT, TransformT,
|
||||
const CornerTable *const table = this->mesh_data().corner_table();
|
||||
const std::vector<int32_t> *const vertex_to_data_map =
|
||||
this->mesh_data().vertex_to_data_map();
|
||||
for (int p = static_cast<int>(this->mesh_data().data_to_corner_map()->size() - 1); p > 0; --p) {
|
||||
for (int p =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size() - 1);
|
||||
p > 0; --p) {
|
||||
const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p);
|
||||
const int dst_offset = p * num_components;
|
||||
if (!ComputeParallelogramPrediction(p, corner_id, table,
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "draco/draco_features.h"
|
||||
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h"
|
||||
#include "draco/core/bit_coders/rans_bit_decoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_decoder.h"
|
||||
#include "draco/core/varint_decoding.h"
|
||||
#include "draco/core/vector_d.h"
|
||||
#include "draco/mesh/corner_table.h"
|
||||
@ -97,7 +97,8 @@ class MeshPredictionSchemeTexCoordsDecoder
|
||||
|
||||
Vector2f GetTexCoordForEntryId(int entry_id, const DataTypeT *data) const {
|
||||
const int data_offset = entry_id * num_components_;
|
||||
return Vector2f(static_cast<float>(data[data_offset]), static_cast<float>(data[data_offset + 1]));
|
||||
return Vector2f(static_cast<float>(data[data_offset]),
|
||||
static_cast<float>(data[data_offset + 1]));
|
||||
}
|
||||
|
||||
void ComputePredictedValue(CornerIndex corner_id, const DataTypeT *data,
|
||||
@ -122,9 +123,10 @@ bool MeshPredictionSchemeTexCoordsDecoder<DataTypeT, TransformT, MeshDataT>::
|
||||
entry_to_point_id_map_ = entry_to_point_id_map;
|
||||
predicted_value_ =
|
||||
std::unique_ptr<DataTypeT[]>(new DataTypeT[num_components]);
|
||||
this->transform().Initialize(num_components);
|
||||
this->transform().Init(num_components);
|
||||
|
||||
const int corner_map_size = static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
const int corner_map_size =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
for (int p = 0; p < corner_map_size; ++p) {
|
||||
const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p);
|
||||
ComputePredictedValue(corner_id, out_data, p);
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
#include <math.h>
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h"
|
||||
#include "draco/core/bit_coders/rans_bit_encoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_encoder.h"
|
||||
#include "draco/core/varint_encoding.h"
|
||||
#include "draco/core/vector_d.h"
|
||||
#include "draco/mesh/corner_table.h"
|
||||
@ -90,7 +90,8 @@ class MeshPredictionSchemeTexCoordsEncoder
|
||||
|
||||
Vector2f GetTexCoordForEntryId(int entry_id, const DataTypeT *data) const {
|
||||
const int data_offset = entry_id * num_components_;
|
||||
return Vector2f(static_cast<float>(data[data_offset]), static_cast<float>(data[data_offset + 1]));
|
||||
return Vector2f(static_cast<float>(data[data_offset]),
|
||||
static_cast<float>(data[data_offset + 1]));
|
||||
}
|
||||
|
||||
void ComputePredictedValue(CornerIndex corner_id, const DataTypeT *data,
|
||||
@ -114,11 +115,12 @@ bool MeshPredictionSchemeTexCoordsEncoder<DataTypeT, TransformT, MeshDataT>::
|
||||
entry_to_point_id_map_ = entry_to_point_id_map;
|
||||
predicted_value_ =
|
||||
std::unique_ptr<DataTypeT[]>(new DataTypeT[num_components]);
|
||||
this->transform().Initialize(in_data, size, num_components);
|
||||
this->transform().Init(in_data, size, num_components);
|
||||
// We start processing from the end because this prediction uses data from
|
||||
// previous entries that could be overwritten when an entry is processed.
|
||||
for (int p = static_cast<int>(this->mesh_data().data_to_corner_map()->size()) - 1; p >= 0;
|
||||
--p) {
|
||||
for (int p =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size()) - 1;
|
||||
p >= 0; --p) {
|
||||
const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p);
|
||||
ComputePredictedValue(corner_id, in_data, p);
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h"
|
||||
#include "draco/core/bit_coders/rans_bit_decoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_decoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
@ -85,9 +85,10 @@ bool MeshPredictionSchemeTexCoordsPortableDecoder<
|
||||
int num_components,
|
||||
const PointIndex *entry_to_point_id_map) {
|
||||
predictor_.SetEntryToPointIdMap(entry_to_point_id_map);
|
||||
this->transform().Initialize(num_components);
|
||||
this->transform().Init(num_components);
|
||||
|
||||
const int corner_map_size = static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
const int corner_map_size =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size());
|
||||
for (int p = 0; p < corner_map_size; ++p) {
|
||||
const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p);
|
||||
if (!predictor_.template ComputePredictedValue<false>(corner_id, out_data,
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h"
|
||||
#include "draco/core/bit_coders/rans_bit_encoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_encoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
@ -87,11 +87,12 @@ bool MeshPredictionSchemeTexCoordsPortableEncoder<DataTypeT, TransformT,
|
||||
int size, int num_components,
|
||||
const PointIndex *entry_to_point_id_map) {
|
||||
predictor_.SetEntryToPointIdMap(entry_to_point_id_map);
|
||||
this->transform().Initialize(in_data, size, num_components);
|
||||
this->transform().Init(in_data, size, num_components);
|
||||
// We start processing from the end because this prediction uses data from
|
||||
// previous entries that could be overwritten when an entry is processed.
|
||||
for (int p = static_cast<int>(this->mesh_data().data_to_corner_map()->size() - 1); p >= 0;
|
||||
--p) {
|
||||
for (int p =
|
||||
static_cast<int>(this->mesh_data().data_to_corner_map()->size() - 1);
|
||||
p >= 0; --p) {
|
||||
const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p);
|
||||
predictor_.template ComputePredictedValue<true>(corner_id, in_data, p);
|
||||
|
||||
|
@ -32,7 +32,7 @@ class PredictionSchemeDecodingTransform {
|
||||
typedef CorrTypeT CorrType;
|
||||
PredictionSchemeDecodingTransform() : num_components_(0) {}
|
||||
|
||||
void Initialize(int num_components) { num_components_ = num_components; }
|
||||
void Init(int num_components) { num_components_ = num_components; }
|
||||
|
||||
// Computes the original value from the input predicted value and the decoded
|
||||
// corrections. The default implementation is equal to std:plus.
|
||||
@ -47,7 +47,7 @@ class PredictionSchemeDecodingTransform {
|
||||
}
|
||||
}
|
||||
|
||||
// Decodes any transform specific data. Called before Initialize() method.
|
||||
// Decodes any transform specific data. Called before Init() method.
|
||||
bool DecodeTransformData(DecoderBuffer * /* buffer */) { return true; }
|
||||
|
||||
// Should return true if all corrected values are guaranteed to be positive.
|
||||
|
@ -47,7 +47,7 @@ template <typename DataTypeT, class TransformT>
|
||||
bool PredictionSchemeDeltaDecoder<DataTypeT, TransformT>::ComputeOriginalValues(
|
||||
const CorrType *in_corr, DataTypeT *out_data, int size, int num_components,
|
||||
const PointIndex *) {
|
||||
this->transform().Initialize(num_components);
|
||||
this->transform().Init(num_components);
|
||||
// Decode the original value for the first element.
|
||||
std::unique_ptr<DataTypeT[]> zero_vals(new DataTypeT[num_components]());
|
||||
this->transform().ComputeOriginalValue(zero_vals.get(), in_corr, out_data);
|
||||
|
@ -52,7 +52,7 @@ bool PredictionSchemeDeltaEncoder<
|
||||
int size,
|
||||
int num_components,
|
||||
const PointIndex *) {
|
||||
this->transform().Initialize(in_data, size, num_components);
|
||||
this->transform().Init(in_data, size, num_components);
|
||||
// Encode data from the back using D(i) = D(i) - D(i - 1).
|
||||
for (int i = size - num_components; i > 0; i -= num_components) {
|
||||
this->transform().ComputeCorrection(
|
||||
|
@ -38,8 +38,8 @@ class PredictionSchemeEncodingTransform {
|
||||
// Performs any custom initialization of the transform for the encoder.
|
||||
// |size| = total number of values in |orig_data| (i.e., number of entries *
|
||||
// number of components).
|
||||
void Initialize(const DataTypeT * /* orig_data */, int /* size */,
|
||||
int num_components) {
|
||||
void Init(const DataTypeT * /* orig_data */, int /* size */,
|
||||
int num_components) {
|
||||
num_components_ = num_components;
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ class PredictionSchemeNormalOctahedronCanonicalizedDecodingTransform
|
||||
PredictionSchemeNormalOctahedronCanonicalizedDecodingTransform() {}
|
||||
|
||||
// Dummy to fulfill concept.
|
||||
void Initialize(int num_components) {}
|
||||
void Init(int num_components) {}
|
||||
|
||||
bool DecodeTransformData(DecoderBuffer *buffer) {
|
||||
DataTypeT max_quantized_value, center_value;
|
||||
|
@ -62,7 +62,7 @@ class PredictionSchemeNormalOctahedronCanonicalizedEncodingTransform
|
||||
: Base(max_quantized_value) {}
|
||||
|
||||
// Dummy function to fulfill concept.
|
||||
void Initialize(const DataTypeT *orig_data, int size, int num_components) {}
|
||||
void Init(const DataTypeT *orig_data, int size, int num_components) {}
|
||||
|
||||
bool EncodeTransformData(EncoderBuffer *buffer) {
|
||||
buffer->Encode(this->max_quantized_value());
|
||||
|
@ -42,7 +42,7 @@ class PredictionSchemeNormalOctahedronDecodingTransform
|
||||
PredictionSchemeNormalOctahedronDecodingTransform() {}
|
||||
|
||||
// Dummy function to fulfill concept.
|
||||
void Initialize(int num_components) {}
|
||||
void Init(int num_components) {}
|
||||
bool DecodeTransformData(DecoderBuffer *buffer) {
|
||||
DataTypeT max_quantized_value, center_value;
|
||||
if (!buffer->Decode(&max_quantized_value))
|
||||
|
@ -55,7 +55,7 @@ class PredictionSchemeNormalOctahedronEncodingTransform
|
||||
DataType max_quantized_value)
|
||||
: Base(max_quantized_value) {}
|
||||
|
||||
void Initialize(const DataTypeT *orig_data, int size, int num_components) {}
|
||||
void Init(const DataTypeT *orig_data, int size, int num_components) {}
|
||||
|
||||
bool EncodeTransformData(EncoderBuffer *buffer) {
|
||||
buffer->Encode(this->max_quantized_value());
|
||||
|
@ -62,7 +62,7 @@ class PredictionSchemeNormalOctahedronTransformBase {
|
||||
inline bool set_max_quantized_value(DataTypeT max_quantized_value) {
|
||||
if (max_quantized_value % 2 == 0)
|
||||
return false;
|
||||
int q = bits::MostSignificantBit(max_quantized_value) + 1;
|
||||
int q = MostSignificantBit(max_quantized_value) + 1;
|
||||
return octahedron_tool_box_.SetQuantizationBits(q);
|
||||
}
|
||||
|
||||
|
@ -29,8 +29,8 @@ class PredictionSchemeWrapEncodingTransform
|
||||
typedef CorrTypeT CorrType;
|
||||
PredictionSchemeWrapEncodingTransform() {}
|
||||
|
||||
void Initialize(const DataTypeT *orig_data, int size, int num_components) {
|
||||
PredictionSchemeWrapTransformBase<DataTypeT>::Initialize(num_components);
|
||||
void Init(const DataTypeT *orig_data, int size, int num_components) {
|
||||
PredictionSchemeWrapTransformBase<DataTypeT>::Init(num_components);
|
||||
// Go over the original values and compute the bounds.
|
||||
if (size == 0)
|
||||
return;
|
||||
|
@ -51,7 +51,7 @@ class PredictionSchemeWrapTransformBase {
|
||||
return PREDICTION_TRANSFORM_WRAP;
|
||||
}
|
||||
|
||||
void Initialize(int num_components) {
|
||||
void Init(int num_components) {
|
||||
num_components_ = num_components;
|
||||
clamped_value_.resize(num_components);
|
||||
}
|
||||
|
@ -19,8 +19,8 @@ namespace draco {
|
||||
SequentialAttributeDecoder::SequentialAttributeDecoder()
|
||||
: decoder_(nullptr), attribute_(nullptr), attribute_id_(-1) {}
|
||||
|
||||
bool SequentialAttributeDecoder::Initialize(PointCloudDecoder *decoder,
|
||||
int attribute_id) {
|
||||
bool SequentialAttributeDecoder::Init(PointCloudDecoder *decoder,
|
||||
int attribute_id) {
|
||||
decoder_ = decoder;
|
||||
attribute_ = decoder->point_cloud()->attribute(attribute_id);
|
||||
attribute_id_ = attribute_id;
|
||||
@ -61,7 +61,8 @@ const PointAttribute *SequentialAttributeDecoder::GetPortableAttribute() {
|
||||
if (!attribute_->is_mapping_identity() && portable_attribute_ &&
|
||||
portable_attribute_->is_mapping_identity()) {
|
||||
portable_attribute_->SetExplicitMapping(attribute_->indices_map_size());
|
||||
for (PointIndex i(0); i < static_cast<uint32_t>(attribute_->indices_map_size()); ++i) {
|
||||
for (PointIndex i(0);
|
||||
i < static_cast<uint32_t>(attribute_->indices_map_size()); ++i) {
|
||||
portable_attribute_->SetPointMapEntry(i, attribute_->mapped_index(i));
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ class SequentialAttributeDecoder {
|
||||
SequentialAttributeDecoder();
|
||||
virtual ~SequentialAttributeDecoder() = default;
|
||||
|
||||
virtual bool Initialize(PointCloudDecoder *decoder, int attribute_id);
|
||||
virtual bool Init(PointCloudDecoder *decoder, int attribute_id);
|
||||
|
||||
// Initialization for a specific attribute. This can be used mostly for
|
||||
// standalone decoding of an attribute without an PointCloudDecoder.
|
||||
|
@ -38,7 +38,7 @@ bool SequentialAttributeDecodersController::DecodeAttributesDecoderData(
|
||||
sequential_decoders_[i] = CreateSequentialDecoder(decoder_type);
|
||||
if (!sequential_decoders_[i])
|
||||
return false;
|
||||
if (!sequential_decoders_[i]->Initialize(GetDecoder(), GetAttributeId(i)))
|
||||
if (!sequential_decoders_[i]->Init(GetDecoder(), GetAttributeId(i)))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -22,8 +22,8 @@ SequentialAttributeEncoder::SequentialAttributeEncoder()
|
||||
attribute_id_(-1),
|
||||
is_parent_encoder_(false) {}
|
||||
|
||||
bool SequentialAttributeEncoder::Initialize(PointCloudEncoder *encoder,
|
||||
int attribute_id) {
|
||||
bool SequentialAttributeEncoder::Init(PointCloudEncoder *encoder,
|
||||
int attribute_id) {
|
||||
encoder_ = encoder;
|
||||
attribute_ = encoder_->point_cloud()->attribute(attribute_id);
|
||||
attribute_id_ = attribute_id;
|
||||
|
@ -38,7 +38,7 @@ class SequentialAttributeEncoder {
|
||||
// This method is automatically called by the PointCloudEncoder after all
|
||||
// attribute encoders are created and it should not be called explicitly from
|
||||
// other places.
|
||||
virtual bool Initialize(PointCloudEncoder *encoder, int attribute_id);
|
||||
virtual bool Init(PointCloudEncoder *encoder, int attribute_id);
|
||||
|
||||
// Initialization for a specific attribute. This can be used mostly for
|
||||
// standalone encoding of an attribute without an PointCloudEncoder.
|
||||
@ -58,7 +58,9 @@ class SequentialAttributeEncoder {
|
||||
|
||||
virtual bool IsLossyEncoder() const { return false; }
|
||||
|
||||
int NumParentAttributes() const { return static_cast<int>(parent_attributes_.size()); }
|
||||
int NumParentAttributes() const {
|
||||
return static_cast<int>(parent_attributes_.size());
|
||||
}
|
||||
int GetParentAttributeId(int i) const { return parent_attributes_[i]; }
|
||||
|
||||
const PointAttribute *GetPortableAttribute() const {
|
||||
|
@ -27,16 +27,16 @@ SequentialAttributeEncodersController::SequentialAttributeEncodersController(
|
||||
std::unique_ptr<PointsSequencer> sequencer, int att_id)
|
||||
: AttributesEncoder(att_id), sequencer_(std::move(sequencer)) {}
|
||||
|
||||
bool SequentialAttributeEncodersController::Initialize(
|
||||
PointCloudEncoder *encoder, const PointCloud *pc) {
|
||||
if (!AttributesEncoder::Initialize(encoder, pc))
|
||||
bool SequentialAttributeEncodersController::Init(PointCloudEncoder *encoder,
|
||||
const PointCloud *pc) {
|
||||
if (!AttributesEncoder::Init(encoder, pc))
|
||||
return false;
|
||||
if (!CreateSequentialEncoders())
|
||||
return false;
|
||||
// Initialize all value encoders.
|
||||
for (uint32_t i = 0; i < num_attributes(); ++i) {
|
||||
const int32_t att_id = GetAttributeId(i);
|
||||
if (!sequential_encoders_[i]->Initialize(encoder, att_id))
|
||||
if (!sequential_encoders_[i]->Init(encoder, att_id))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -35,7 +35,7 @@ class SequentialAttributeEncodersController : public AttributesEncoder {
|
||||
SequentialAttributeEncodersController(
|
||||
std::unique_ptr<PointsSequencer> sequencer, int point_attrib_id);
|
||||
|
||||
bool Initialize(PointCloudEncoder *encoder, const PointCloud *pc) override;
|
||||
bool Init(PointCloudEncoder *encoder, const PointCloud *pc) override;
|
||||
bool EncodeAttributesEncoderData(EncoderBuffer *out_buffer) override;
|
||||
bool EncodeAttributes(EncoderBuffer *buffer) override;
|
||||
uint8_t GetUniqueId() const override { return BASIC_ATTRIBUTE_ENCODER; }
|
||||
|
@ -16,15 +16,15 @@
|
||||
|
||||
#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h"
|
||||
#include "draco/core/symbol_decoding.h"
|
||||
#include "draco/compression/entropy/symbol_decoding.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
SequentialIntegerAttributeDecoder::SequentialIntegerAttributeDecoder() {}
|
||||
|
||||
bool SequentialIntegerAttributeDecoder::Initialize(PointCloudDecoder *decoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialAttributeDecoder::Initialize(decoder, attribute_id))
|
||||
bool SequentialIntegerAttributeDecoder::Init(PointCloudDecoder *decoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialAttributeDecoder::Init(decoder, attribute_id))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@ -99,7 +99,8 @@ bool SequentialIntegerAttributeDecoder::DecodeIntegerValues(
|
||||
return false;
|
||||
if (compressed > 0) {
|
||||
// Decode compressed values.
|
||||
if (!DecodeSymbols(static_cast<uint32_t>(num_values), num_components, in_buffer,
|
||||
if (!DecodeSymbols(static_cast<uint32_t>(num_values), num_components,
|
||||
in_buffer,
|
||||
reinterpret_cast<uint32_t *>(portable_attribute_data)))
|
||||
return false;
|
||||
} else {
|
||||
@ -118,7 +119,8 @@ bool SequentialIntegerAttributeDecoder::DecodeIntegerValues(
|
||||
} else {
|
||||
if (portable_attribute()->buffer()->data_size() < num_bytes * num_values)
|
||||
return false;
|
||||
if (in_buffer->remaining_size() < static_cast<int64_t>(num_bytes) * static_cast<int64_t>(num_values))
|
||||
if (in_buffer->remaining_size() <
|
||||
static_cast<int64_t>(num_bytes) * static_cast<int64_t>(num_values))
|
||||
return false;
|
||||
for (size_t i = 0; i < num_values; ++i) {
|
||||
in_buffer->Decode(portable_attribute_data + i, num_bytes);
|
||||
@ -130,8 +132,8 @@ bool SequentialIntegerAttributeDecoder::DecodeIntegerValues(
|
||||
!prediction_scheme_->AreCorrectionsPositive())) {
|
||||
// Convert the values back to the original signed format.
|
||||
ConvertSymbolsToSignedInts(
|
||||
reinterpret_cast<const uint32_t *>(portable_attribute_data), static_cast<int>(num_values),
|
||||
portable_attribute_data);
|
||||
reinterpret_cast<const uint32_t *>(portable_attribute_data),
|
||||
static_cast<int>(num_values), portable_attribute_data);
|
||||
}
|
||||
|
||||
// If the data was encoded with a prediction scheme, we must revert it.
|
||||
@ -141,8 +143,8 @@ bool SequentialIntegerAttributeDecoder::DecodeIntegerValues(
|
||||
|
||||
if (num_values > 0) {
|
||||
if (!prediction_scheme_->ComputeOriginalValues(
|
||||
portable_attribute_data, portable_attribute_data, static_cast<int>(num_values),
|
||||
num_components, point_ids.data())) {
|
||||
portable_attribute_data, portable_attribute_data,
|
||||
static_cast<int>(num_values), num_components, point_ids.data())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ namespace draco {
|
||||
class SequentialIntegerAttributeDecoder : public SequentialAttributeDecoder {
|
||||
public:
|
||||
SequentialIntegerAttributeDecoder();
|
||||
bool Initialize(PointCloudDecoder *decoder, int attribute_id) override;
|
||||
bool Init(PointCloudDecoder *decoder, int attribute_id) override;
|
||||
|
||||
bool TransformAttributeToOriginalFormat(
|
||||
const std::vector<PointIndex> &point_ids) override;
|
||||
|
@ -16,16 +16,16 @@
|
||||
|
||||
#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h"
|
||||
#include "draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h"
|
||||
#include "draco/compression/entropy/symbol_encoding.h"
|
||||
#include "draco/core/bit_utils.h"
|
||||
#include "draco/core/symbol_encoding.h"
|
||||
|
||||
namespace draco {
|
||||
|
||||
SequentialIntegerAttributeEncoder::SequentialIntegerAttributeEncoder() {}
|
||||
|
||||
bool SequentialIntegerAttributeEncoder::Initialize(PointCloudEncoder *encoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialAttributeEncoder::Initialize(encoder, attribute_id))
|
||||
bool SequentialIntegerAttributeEncoder::Init(PointCloudEncoder *encoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialAttributeEncoder::Init(encoder, attribute_id))
|
||||
return false;
|
||||
if (GetUniqueId() == SEQUENTIAL_ATTRIBUTE_ENCODER_INTEGER) {
|
||||
// When encoding integers, this encoder currently works only for integer
|
||||
@ -118,7 +118,8 @@ bool SequentialIntegerAttributeEncoder::EncodeValues(
|
||||
}
|
||||
|
||||
const int num_components = portable_attribute()->num_components();
|
||||
const int num_values = static_cast<int>(num_components * portable_attribute()->size());
|
||||
const int num_values =
|
||||
static_cast<int>(num_components * portable_attribute()->size());
|
||||
const int32_t *const portable_attribute_data = GetPortableAttributeData();
|
||||
|
||||
// We need to keep the portable data intact, but several encoding steps can
|
||||
@ -152,8 +153,8 @@ bool SequentialIntegerAttributeEncoder::EncodeValues(
|
||||
10 - encoder()->options()->GetSpeed());
|
||||
}
|
||||
if (!EncodeSymbols(reinterpret_cast<uint32_t *>(encoded_data.data()),
|
||||
static_cast<int>(point_ids.size()) * num_components, num_components,
|
||||
&symbol_encoding_options, out_buffer)) {
|
||||
static_cast<int>(point_ids.size()) * num_components,
|
||||
num_components, &symbol_encoding_options, out_buffer)) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
@ -168,7 +169,7 @@ bool SequentialIntegerAttributeEncoder::EncodeValues(
|
||||
// Compute the msb of the ORed value.
|
||||
int value_msb_pos = 0;
|
||||
if (masked_value != 0) {
|
||||
value_msb_pos = bits::MostSignificantBit(masked_value);
|
||||
value_msb_pos = MostSignificantBit(masked_value);
|
||||
}
|
||||
const int num_bytes = 1 + value_msb_pos / 8;
|
||||
|
||||
|
@ -30,7 +30,7 @@ class SequentialIntegerAttributeEncoder : public SequentialAttributeEncoder {
|
||||
return SEQUENTIAL_ATTRIBUTE_ENCODER_INTEGER;
|
||||
}
|
||||
|
||||
bool Initialize(PointCloudEncoder *encoder, int attribute_id) override;
|
||||
bool Init(PointCloudEncoder *encoder, int attribute_id) override;
|
||||
bool TransformAttributeToPortableFormat(
|
||||
const std::vector<PointIndex> &point_ids) override;
|
||||
|
||||
|
@ -21,9 +21,9 @@ namespace draco {
|
||||
SequentialNormalAttributeDecoder::SequentialNormalAttributeDecoder()
|
||||
: quantization_bits_(-1) {}
|
||||
|
||||
bool SequentialNormalAttributeDecoder::Initialize(PointCloudDecoder *decoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialIntegerAttributeDecoder::Initialize(decoder, attribute_id))
|
||||
bool SequentialNormalAttributeDecoder::Init(PointCloudDecoder *decoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialIntegerAttributeDecoder::Init(decoder, attribute_id))
|
||||
return false;
|
||||
// Currently, this encoder works only for 3-component normal vectors.
|
||||
if (attribute()->num_components() != 3)
|
||||
|
@ -29,7 +29,7 @@ class SequentialNormalAttributeDecoder
|
||||
: public SequentialIntegerAttributeDecoder {
|
||||
public:
|
||||
SequentialNormalAttributeDecoder();
|
||||
bool Initialize(PointCloudDecoder *decoder, int attribute_id) override;
|
||||
bool Init(PointCloudDecoder *decoder, int attribute_id) override;
|
||||
|
||||
protected:
|
||||
int32_t GetNumValueComponents() const override {
|
||||
|
@ -17,9 +17,9 @@
|
||||
|
||||
namespace draco {
|
||||
|
||||
bool SequentialNormalAttributeEncoder::Initialize(PointCloudEncoder *encoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialIntegerAttributeEncoder::Initialize(encoder, attribute_id))
|
||||
bool SequentialNormalAttributeEncoder::Init(PointCloudEncoder *encoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialIntegerAttributeEncoder::Init(encoder, attribute_id))
|
||||
return false;
|
||||
// Currently this encoder works only for 3-component normal vectors.
|
||||
if (attribute()->num_components() != 3)
|
||||
|
@ -40,7 +40,7 @@ class SequentialNormalAttributeEncoder
|
||||
bool EncodeDataNeededByPortableTransform(EncoderBuffer *out_buffer) override;
|
||||
|
||||
protected:
|
||||
bool Initialize(PointCloudEncoder *encoder, int attribute_id) override;
|
||||
bool Init(PointCloudEncoder *encoder, int attribute_id) override;
|
||||
|
||||
// Put quantized values in portable attribute for sequential encoding.
|
||||
bool PrepareValues(const std::vector<PointIndex> &point_ids,
|
||||
@ -55,8 +55,11 @@ class SequentialNormalAttributeEncoder
|
||||
attribute_id(), "quantization_bits", -1);
|
||||
const int32_t max_value = (1 << quantization_bits) - 1;
|
||||
const Transform transform(max_value);
|
||||
PredictionSchemeMethod prediction_method =
|
||||
const PredictionSchemeMethod default_prediction_method =
|
||||
SelectPredictionMethod(attribute_id(), encoder());
|
||||
const int32_t prediction_method = encoder()->options()->GetAttributeInt(
|
||||
attribute_id(), "prediction_scheme", default_prediction_method);
|
||||
|
||||
if (prediction_method == MESH_PREDICTION_GEOMETRIC_NORMAL) {
|
||||
return CreatePredictionSchemeForEncoder<int32_t, Transform>(
|
||||
MESH_PREDICTION_GEOMETRIC_NORMAL, attribute_id(), encoder(),
|
||||
|
@ -22,9 +22,9 @@ namespace draco {
|
||||
SequentialQuantizationAttributeDecoder::SequentialQuantizationAttributeDecoder()
|
||||
: quantization_bits_(-1), max_value_dif_(0.f) {}
|
||||
|
||||
bool SequentialQuantizationAttributeDecoder::Initialize(
|
||||
PointCloudDecoder *decoder, int attribute_id) {
|
||||
if (!SequentialIntegerAttributeDecoder::Initialize(decoder, attribute_id))
|
||||
bool SequentialQuantizationAttributeDecoder::Init(PointCloudDecoder *decoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialIntegerAttributeDecoder::Init(decoder, attribute_id))
|
||||
return false;
|
||||
const PointAttribute *const attribute =
|
||||
decoder->point_cloud()->attribute(attribute_id);
|
||||
|
@ -27,7 +27,7 @@ class SequentialQuantizationAttributeDecoder
|
||||
: public SequentialIntegerAttributeDecoder {
|
||||
public:
|
||||
SequentialQuantizationAttributeDecoder();
|
||||
bool Initialize(PointCloudDecoder *decoder, int attribute_id) override;
|
||||
bool Init(PointCloudDecoder *decoder, int attribute_id) override;
|
||||
|
||||
protected:
|
||||
bool DecodeIntegerValues(const std::vector<PointIndex> &point_ids,
|
||||
|
@ -21,9 +21,9 @@ namespace draco {
|
||||
SequentialQuantizationAttributeEncoder::
|
||||
SequentialQuantizationAttributeEncoder() {}
|
||||
|
||||
bool SequentialQuantizationAttributeEncoder::Initialize(
|
||||
PointCloudEncoder *encoder, int attribute_id) {
|
||||
if (!SequentialIntegerAttributeEncoder::Initialize(encoder, attribute_id))
|
||||
bool SequentialQuantizationAttributeEncoder::Init(PointCloudEncoder *encoder,
|
||||
int attribute_id) {
|
||||
if (!SequentialIntegerAttributeEncoder::Init(encoder, attribute_id))
|
||||
return false;
|
||||
// This encoder currently works only for floating point attributes.
|
||||
const PointAttribute *const attribute =
|
||||
|
@ -31,7 +31,7 @@ class SequentialQuantizationAttributeEncoder
|
||||
uint8_t GetUniqueId() const override {
|
||||
return SEQUENTIAL_ATTRIBUTE_ENCODER_QUANTIZATION;
|
||||
}
|
||||
bool Initialize(PointCloudEncoder *encoder, int attribute_id) override;
|
||||
bool Init(PointCloudEncoder *encoder, int attribute_id) override;
|
||||
|
||||
bool IsLossyEncoder() const override { return true; }
|
||||
|
||||
|
@ -13,8 +13,8 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides shared functions for adaptive rANS bit coding.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_
|
||||
#define DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_
|
||||
|
||||
#include "draco/core/macros.h"
|
||||
|
||||
@ -40,4 +40,4 @@ inline double update_probability(double old_p, bool bit) {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_
|
@ -12,9 +12,9 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/core/bit_coders/adaptive_rans_bit_decoder.h"
|
||||
#include "draco/compression/bit_coders/adaptive_rans_bit_decoder.h"
|
||||
|
||||
#include "draco/core/bit_coders/adaptive_rans_bit_coding_shared.h"
|
||||
#include "draco/compression/bit_coders/adaptive_rans_bit_coding_shared.h"
|
||||
|
||||
namespace draco {
|
||||
|
@ -13,12 +13,12 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides basic classes and functions for rANS bit decoding.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_
|
||||
#define DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "draco/core/ans.h"
|
||||
#include "draco/compression/entropy/ans.h"
|
||||
#include "draco/core/decoder_buffer.h"
|
||||
|
||||
namespace draco {
|
||||
@ -51,4 +51,4 @@ class AdaptiveRAnsBitDecoder {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_
|
@ -12,9 +12,9 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/core/bit_coders/adaptive_rans_bit_encoder.h"
|
||||
#include "draco/compression/bit_coders/adaptive_rans_bit_encoder.h"
|
||||
|
||||
#include "draco/core/bit_coders/adaptive_rans_bit_coding_shared.h"
|
||||
#include "draco/compression/bit_coders/adaptive_rans_bit_coding_shared.h"
|
||||
|
||||
namespace draco {
|
||||
|
@ -13,12 +13,12 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides basic classes and functions for rANS bit encoding.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_
|
||||
#define DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "draco/core/ans.h"
|
||||
#include "draco/compression/entropy/ans.h"
|
||||
#include "draco/core/encoder_buffer.h"
|
||||
|
||||
namespace draco {
|
||||
@ -58,4 +58,4 @@ class AdaptiveRAnsBitEncoder {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_
|
@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/core/bit_coders/direct_bit_decoder.h"
|
||||
#include "draco/compression/bit_coders/direct_bit_decoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
@ -13,8 +13,8 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides direct encoding of bits with arithmetic encoder interface.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_DIRECT_BIT_DECODER_H_
|
||||
#define DRACO_CORE_BIT_CODERS_DIRECT_BIT_DECODER_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_DIRECT_BIT_DECODER_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_DIRECT_BIT_DECODER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
@ -87,4 +87,4 @@ class DirectBitDecoder {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_DIRECT_BIT_DECODER_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_DIRECT_BIT_DECODER_H_
|
@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/core/bit_coders/direct_bit_encoder.h"
|
||||
#include "draco/compression/bit_coders/direct_bit_encoder.h"
|
||||
|
||||
namespace draco {
|
||||
|
@ -13,8 +13,8 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides direct encoding of bits with arithmetic encoder interface.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_DIRECT_BIT_ENCODER_H_
|
||||
#define DRACO_CORE_BIT_CODERS_DIRECT_BIT_ENCODER_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_DIRECT_BIT_ENCODER_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_DIRECT_BIT_ENCODER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
@ -86,4 +86,4 @@ class DirectBitEncoder {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_DIRECT_BIT_ENCODER_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_DIRECT_BIT_ENCODER_H_
|
@ -13,8 +13,8 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides direct encoding of bits with arithmetic encoder interface.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_
|
||||
#define DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
@ -73,4 +73,4 @@ class FoldedBit32Decoder {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_
|
@ -13,8 +13,8 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides direct encoding of bits with arithmetic encoder interface.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
|
||||
#define DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
@ -79,4 +79,4 @@ class FoldedBit32Encoder {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
|
@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/core/bit_coders/rans_bit_decoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_decoder.h"
|
||||
|
||||
#include "draco/compression/config/compression_shared.h"
|
||||
#include "draco/core/bit_utils.h"
|
||||
@ -35,6 +35,7 @@ bool RAnsBitDecoder::StartDecoding(DecoderBuffer *source_buffer) {
|
||||
if (source_buffer->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 2)) {
|
||||
if (!source_buffer->Decode(&size_in_bytes))
|
||||
return false;
|
||||
|
||||
} else
|
||||
#endif
|
||||
{
|
@ -13,14 +13,14 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
// File provides basic classes and functions for rANS coding.
|
||||
#ifndef DRACO_CORE_BIT_CODERS_RANS_BIT_DECODER_H_
|
||||
#define DRACO_CORE_BIT_CODERS_RANS_BIT_DECODER_H_
|
||||
#ifndef DRACO_COMPRESSION_BIT_CODERS_RANS_BIT_DECODER_H_
|
||||
#define DRACO_COMPRESSION_BIT_CODERS_RANS_BIT_DECODER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "draco/draco_features.h"
|
||||
|
||||
#include "draco/core/ans.h"
|
||||
#include "draco/compression/entropy/ans.h"
|
||||
#include "draco/core/decoder_buffer.h"
|
||||
|
||||
namespace draco {
|
||||
@ -53,4 +53,4 @@ class RAnsBitDecoder {
|
||||
|
||||
} // namespace draco
|
||||
|
||||
#endif // DRACO_CORE_BIT_CODERS_RANS_BIT_DECODER_H_
|
||||
#endif // DRACO_COMPRESSION_BIT_CODERS_RANS_BIT_DECODER_H_
|
@ -12,9 +12,9 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
#include "draco/core/bit_coders/rans_bit_encoder.h"
|
||||
#include "draco/compression/bit_coders/rans_bit_encoder.h"
|
||||
|
||||
#include "draco/core/ans.h"
|
||||
#include "draco/compression/entropy/ans.h"
|
||||
#include "draco/core/bit_utils.h"
|
||||
#include "draco/core/varint_encoding.h"
|
||||
|
||||
@ -46,15 +46,15 @@ void RAnsBitEncoder::EncodeLeastSignificantBits32(int nbits, uint32_t value) {
|
||||
DRACO_DCHECK_EQ(true, nbits <= 32);
|
||||
DRACO_DCHECK_EQ(true, nbits > 0);
|
||||
|
||||
const uint32_t reversed = bits::ReverseBits32(value) >> (32 - nbits);
|
||||
const int ones = bits::CountOnes32(reversed);
|
||||
const uint32_t reversed = ReverseBits32(value) >> (32 - nbits);
|
||||
const int ones = CountOneBits32(reversed);
|
||||
bit_counts_[0] += (nbits - ones);
|
||||
bit_counts_[1] += ones;
|
||||
|
||||
const int remaining = 32 - num_local_bits_;
|
||||
|
||||
if (nbits <= remaining) {
|
||||
bits::CopyBits32(&local_bits_, num_local_bits_, reversed, 0, nbits);
|
||||
CopyBits32(&local_bits_, num_local_bits_, reversed, 0, nbits);
|
||||
num_local_bits_ += nbits;
|
||||
if (num_local_bits_ == 32) {
|
||||
bits_.push_back(local_bits_);
|
||||
@ -62,10 +62,10 @@ void RAnsBitEncoder::EncodeLeastSignificantBits32(int nbits, uint32_t value) {
|
||||
num_local_bits_ = 0;
|
||||
}
|
||||
} else {
|
||||
bits::CopyBits32(&local_bits_, num_local_bits_, reversed, 0, remaining);
|
||||
CopyBits32(&local_bits_, num_local_bits_, reversed, 0, remaining);
|
||||
bits_.push_back(local_bits_);
|
||||
local_bits_ = 0;
|
||||
bits::CopyBits32(&local_bits_, 0, reversed, remaining, nbits - remaining);
|
||||
CopyBits32(&local_bits_, 0, reversed, remaining, nbits - remaining);
|
||||
num_local_bits_ = nbits - remaining;
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user