oxihuman-export 0.1.2

Export pipeline for OxiHuman — glTF, COLLADA, STL, and streaming formats
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
pub mod geo_modifier_export;
pub use geo_modifier_export::{
    add_geo_modifier, find_geo_modifier, geo_mod_count, geo_mod_enabled_count,
    geo_modifier_to_json, mods_of_type, new_geo_modifier_export, realtime_mod_count, GeoModEntry,
    GeoModType, GeoModifierExport,
};

pub mod hair_clump_export;
pub use hair_clump_export::{
    add_hair_clump, avg_clump_factor, clump_roots_bounds, hair_clump_count, hair_clump_to_json,
    largest_clump, new_hair_clump_export, total_strand_count_hc, validate_clump_factors, HairClump,
    HairClumpExport,
};

pub mod ik_target_export;
pub use ik_target_export::{
    add_ik_target, avg_chain_length as ik_avg_chain_length, find_ik_target, ik_target_count,
    ik_target_to_json, new_ik_target_bundle, set_pole_target, targets_with_pole,
    validate_ik_targets, IkTargetBundle, IkTargetExport,
};

pub mod joint_twist_export;
pub use joint_twist_export::{
    add_joint_twist, avg_twist_deg, find_joint_twist, joint_twist_count, joint_twist_to_json,
    max_twist_deg, new_joint_twist_export, twist_rad, validate_twist_axes, JointTwistEntry,
    JointTwistExport,
};

pub mod keyshape_export;
pub use keyshape_export::{
    add_keyshape, blend_keyshapes, find_keyshape, keyshape_count, keyshape_to_json,
    max_keyshape_delta, new_keyshape_export, total_keyshape_deltas, validate_keyshape_weights,
    KeyShape, KeyShapeExport,
};

pub mod lod_bias_export;
pub use lod_bias_export::{
    add_lod_bias, avg_lod_bias, find_lod_bias, high_bias_entries, lod_bias_count, lod_bias_to_json,
    max_lod_level, new_lod_bias_export, validate_lod_bias, LodBiasEntry, LodBiasExport,
};

pub mod anim_event_export;
pub use anim_event_export::{
    add_event as add_anim_event, event_count, events_from, has_event_named, new_event_track,
    serialize_events, sort_events, track_duration, trim_before, AnimEvent, AnimEventTrack,
};

pub mod blend_pose_export;
pub use blend_pose_export::{
    active_pose_count, blend_poses, identity_pose, normalise_quat, serialise_blended_pose,
    weights_normalised as blend_weights_normalised, BlendedPose, Pose, WeightedPose,
};

pub mod bone_envelope_export;
pub use bone_envelope_export::{
    add_envelope as add_bone_envelope, envelope_length, find_envelope, new_envelope_set,
    point_in_envelope, serialise_envelopes, BoneEnvelope, EnvelopeSet,
};

pub mod camera_shake_export;
pub use camera_shake_export::{
    add_shake_keyframe, channel_keyframe_count, evaluate_shake, is_decayed, new_camera_shake,
    peak_amplitude, serialise_shake, CameraShakeExport, ShakeChannel, ShakeKeyframe,
};

pub mod cloth_pressure_export;
pub use cloth_pressure_export::{
    compute_pressure_forces, compute_signed_volume, is_outward_pressure, max_force_magnitude,
    scale_forces, serialise_pressure_config, ClothPressureConfig, PressureForceCache,
};

pub mod collision_compound_export;
pub use collision_compound_export::{
    aabb_of_centers, add_box as compound_add_box, add_capsule as compound_add_capsule,
    add_sphere as compound_add_sphere, compound_volume, new_compound, primitive_count,
    serialise_compound, CollisionPrimitive, CompoundCollision,
};

pub mod curve_control_export;
pub use curve_control_export::{
    add_control_point, control_point_aabb, control_polygon_length, has_enough_points,
    new_curve_export, reverse_curve, serialise_curve as serialise_curve_export, ControlPoint,
    CurveControlExport, CurveType,
};

pub mod deform_weights_export;
pub use deform_weights_export::{
    add_weight_map as add_deform_weight_map, clamp_all_weights, find_map as find_deform_map,
    new_deform_weights_export, normalise_across_deformers, serialise_deform_weights, vertex_weight,
    DeformWeightsExport, DeformerWeightMap,
};

pub mod edge_smooth_export;
pub use edge_smooth_export::{
    add_edge as add_smooth_edge, edge_flag, from_triangles_all_smooth, hard_count, mark_all_hard,
    new_edge_smooth_export, serialise_edge_smooth, smooth_count, smooth_fraction, EdgeSmooth,
    EdgeSmoothExport,
};

pub mod face_color_export;
pub use face_color_export::{
    average_color, color_to_u8, fill_all as fill_all_face_colors, get_face_color,
    new_face_color_export, opaque_face_count, serialise_face_colors, set_face_color, FaceColor,
    FaceColorExport,
};

pub mod geo_warp_export;
pub use geo_warp_export::{
    add_warp_keyframe, interpolate_warp, max_displacement as warp_max_displacement, new_geo_warp,
    serialise_keyframe as serialise_warp_keyframe, warp_duration, zero_displacement, GeoWarpExport,
    WarpKeyframe,
};

pub mod hair_style_export;
pub use hair_style_export::{
    add_style, all_lengths_positive, average_length as hair_average_length, find_style,
    is_straight, new_hair_style_library, scale_lengths, serialise_style, HairStyle,
    HairStyleLibrary,
};

pub mod ik_fk_blend_export;
pub use ik_fk_blend_export::{
    add_record as add_ik_fk_record, all_weights_valid as ik_fk_all_weights_valid,
    average_ik_weight, find_record as find_ik_fk_record, ik_dominant_count, ik_weight,
    new_ik_fk_blend_export, serialise_ik_fk, set_blend, BlendMode, IkFkBlendExport,
    IkFkBlendRecord,
};

pub mod joint_parent_export;
pub use joint_parent_export::{
    add_joint, joint_count, joint_depth, new_joint_parent_export, serialise_parents,
    world_position, JointParentExport, JointRecord,
};

pub mod key_driver_export;
pub use key_driver_export::{
    add_driver, driver_count, drivers_for_shape, evaluate_curve as evaluate_driver_curve,
    evaluate_driver as evaluate_key_driver, names_unique, new_key_driver_export,
    serialise_curve as serialise_driver_curve, DriverCurve, KeyDriver, KeyDriverExport,
};

pub mod lod_group_export;
pub use lod_group_export::{
    add_lod_level as lg_add_lod_level, export_lod_group_to_json, level_count, new_lod_group_export,
    LodGroupExport, LodLevel as LgLodLevel,
};

pub mod anim_notify_export;
pub use anim_notify_export::{
    add_notify, clear_notifies, find_notify, new_notify_track, notifies_in_range, notify_count,
    notify_track_to_json, sort_notifies, track_duration as notify_track_duration, AnimNotify,
    AnimNotifyTrack,
};

pub mod blend_weight_export_v2;
pub use blend_weight_export_v2::{
    active_weight_count, add_blend_weight_v2, blend_weight_v2_to_json, find_weight_v2,
    new_blend_weight_export_v2, normalize_v2_weights, set_weight_v2, total_weight_sum,
    weight_count_v2, weights_all_valid, BlendWeightExportV2, BlendWeightV2,
};

pub mod bone_length_export;
pub use bone_length_export::{
    add_bone_length, bone_count_ble, bone_length, bone_length_to_json, bone_lengths_to_csv,
    find_bone_ble, max_bone_length, min_bone_length, new_bone_length_export, total_bone_length_ble,
    BoneLengthEntry, BoneLengthExport,
};

pub mod camera_stereo_export;
pub use camera_stereo_export::{
    camera_stereo_to_json, default_stereo_camera, parallax_angle_deg, stereo_fov_radians,
    stereo_left_offset, stereo_mode_name, stereo_right_offset, validate_stereo, CameraStereoExport,
    StereoMode,
};

pub mod cloth_pin_export;
pub use cloth_pin_export::{
    add_pin, add_pin_at, avg_pin_strength, cloth_pin_to_json, is_pinned, new_cloth_pin_export,
    pin_count, pins_with_position, remove_pin, validate_pins, ClothPin, ClothPinExport,
};

pub mod collision_sphere_export;
pub use collision_sphere_export::{
    add_sphere as add_collision_sphere, avg_sphere_radius, collision_sphere_to_json,
    find_sphere as find_collision_sphere, new_collision_sphere_export, point_in_sphere,
    sphere_count, sphere_surface_area, sphere_volume, total_sphere_volume, validate_spheres,
    CollisionSphere, CollisionSphereExport,
};

pub mod curve_modifier_export;
pub use curve_modifier_export::{
    add_curve_mod, axis_name as curve_mod_axis_name, clear_curve_mods, curve_mod_length,
    curve_modifier_to_json, mod_count, new_curve_modifier_export, total_curve_length,
    validate_curve_mod, CurveModAxis, CurveModEntry, CurveModifierExport,
};

pub mod deform_bind_export;
pub use deform_bind_export::{
    add_binding, binding_avg_weight, binding_count, binding_is_valid, deform_bind_to_json,
    find_binding, new_deform_bind_export, normalize_binding_weights, total_bound_vertices,
    DeformBindEntry, DeformBindExport,
};

pub mod edge_mark_export;
pub use edge_mark_export::{
    add_marked_edge, avg_crease_value as edge_mark_avg_crease, crease_edge_count_em,
    edge_mark_to_json, marked_edge_count, new_edge_mark_export, seam_edge_count_em,
    set_crease_value as set_edge_crease_value, sharp_edge_count_em, EdgeFlags as MarkEdgeFlags,
    EdgeMarkExport, MarkedEdge,
};

pub mod face_corner_uv_export;
pub use face_corner_uv_export::{
    add_corner_uv, avg_uv as face_corner_avg_uv_export, corner_count as fcuv_corner_count,
    corners_for_face as face_corners_for_face, face_corner_uv_to_json, face_count_fcuv,
    new_face_corner_uv_export, uv_bounds as face_corner_uv_bounds_export,
    uvs_in_unit_range as face_corner_uvs_in_range, FaceCornerUv, FaceCornerUvExport,
};

pub mod geo_instance_export;
pub use geo_instance_export::{
    add_instance_entry, clear_instances, geo_instance_to_json, instance_bounds, instance_count,
    instances_of_mesh as instances_of_mesh_export, new_geo_instance_set, unique_mesh_names,
    validate_instances, GeoInstanceEntry, GeoInstanceSetExport,
};

pub mod hair_width_export;
pub use hair_width_export::{
    add_strand_widths, avg_width, hair_width_to_json, max_width as hair_max_width,
    min_width as hair_min_width, new_hair_width_export, scale_widths, strand_count_hw,
    total_width_points, widths_positive, HairWidthExport, HairWidthStrand,
};

pub mod ik_weight_export;
pub use ik_weight_export::{
    add_ik_weight, avg_ik_weight, entry_count_ikw, find_ik_entry, fully_ik_joints,
    ik_weight_to_json, new_ik_weight_export, normalize_ik_fk, set_ik_fk_blend, weights_sum_to_one,
    IkWeightEntry, IkWeightExport,
};

pub mod joint_scale_export;
pub use joint_scale_export::{
    add_joint_scale, avg_scale_magnitude, find_joint_scale, is_uniform_scale, joint_scale_count,
    joint_scale_to_json, new_joint_scale_export, scales_positive, set_scale as set_joint_scale,
    uniform_scale_count, JointScaleEntry, JointScaleExport,
};

pub mod keyframe_blend_export;
pub use keyframe_blend_export::{
    add_blend_key, blend_mode_name as keyframe_blend_mode_name, channel_duration, key_count_kbe,
    keyframe_blend_to_json, keys_of_mode, new_keyframe_blend_export,
    sample_linear as sample_keyframe_linear, sort_keys_by_time, KeyBlendMode, KeyframeBlendEntry,
    KeyframeBlendExport,
};

pub mod lod_mesh_export;
pub use lod_mesh_export::{
    add_lod_mesh_level, find_lod_level, lod_level_count, lod_levels_sorted, lod_mesh_to_json,
    new_lod_mesh_export, reduction_ratio, sort_lod_levels, total_triangle_count, LodMeshExport,
    LodMeshLevel,
};

pub mod blend_corrective_export;
pub use blend_corrective_export::{
    add_corrective_blend, corrective_blend_count, corrective_blend_to_json, find_corrective_blend,
    max_corrective_delta, new_corrective_blend_bundle, shapes_for_bone, validate_corrective_bundle,
    CorrectiveBlend, CorrectiveBlendBundle,
};

pub mod camera_path_export_v2;
pub use camera_path_export_v2::{
    add_cam_path_key_v2, cam_path_v2_duration, cam_path_v2_key_count, cam_path_v2_position_at,
    cam_path_v2_to_json, new_camera_path_v2, validate_cam_path_v2, CamPathKeyV2, CameraPathV2,
};

pub mod cloth_stiffness_export;
pub use cloth_stiffness_export::{
    add_cloth_stiffness, avg_stiffness_value, clamp_stiffness, cloth_stiffness_count,
    cloth_stiffness_to_json, count_stiffness_type, new_cloth_stiffness_export, validate_stiffness,
    ClothStiffnessEntry, ClothStiffnessExport, StiffnessType,
};

pub mod collision_triangle_export;
pub use collision_triangle_export::{
    collision_tri_count, collision_triangle_to_json, from_mesh as collision_from_mesh,
    total_collision_area, triangle_area_ct, triangles_for_material, CollisionTriangle,
    CollisionTriangleExport,
};

pub mod curve_bezier_export;
pub use curve_bezier_export::{
    add_bezier_cp, bezier_arc_length_approx, bezier_cp_count, bezier_curve_to_json, deg_to_rad_bc,
    eval_bezier_segment, new_bezier_curve_export, sample_bezier_curve, BezierControlPoint,
    BezierCurveExport,
};

pub mod deform_lattice_export;
pub use deform_lattice_export::{
    avg_lattice_displacement_v2, deform_lattice_to_json, lattice_control_point_count,
    lattice_displacement_at, new_deform_lattice, set_lattice_deformed, validate_deform_lattice,
    DeformLatticeExport, LatticeResV2,
};

pub mod edge_normal_export;
pub use edge_normal_export::{
    add_edge_normal, avg_edge_normal, compute_from_mesh as compute_edge_normals_from_mesh,
    edge_normal_count, edge_normal_to_json, find_edge_normal, new_edge_normal_export, normalize_en,
    normals_unit_en, EdgeNormalEntry, EdgeNormalExport,
};

pub mod face_tangent_export;
pub use face_tangent_export::{
    compute_face_tangents, cross_ft, face_tangent_count, face_tangent_to_json, normalize_ft,
    tangents_unit, FaceTangent, FaceTangentExport,
};

pub mod geo_point_export;
pub use geo_point_export::{
    add_geo_point, avg_geo_point_scale, geo_point_bounds, geo_point_count, geo_point_to_json,
    new_geo_point_export, points_with_label_gp, validate_geo_points, GeoPoint, GeoPointExport,
};

pub mod hair_density_export;
pub use hair_density_export::{
    add_hair_density, avg_hair_density, density_for_face, hair_density_count, hair_density_to_json,
    new_hair_density_export, scale_hair_densities, validate_hair_densities, HairDensityEntry,
    HairDensityExport,
};

pub mod ik_constraint_export;
pub use ik_constraint_export::{
    add_ik_constraint, avg_chain_length_ik, clamp_ik_weights, count_constraint_type,
    find_constraint_by_bone, ik_constraint_count, ik_constraint_to_json, new_ik_constraint_export,
    validate_ik_weights, IkConstraintEntry, IkConstraintExport, IkConstraintType,
};

pub mod joint_space_export;
pub use joint_space_export::{
    add_joint_transform, avg_translation_magnitude, find_joint_transform, identity_joint_transform,
    joint_space_to_json, joint_transform_count, new_joint_space_export, quaternions_unit,
    scales_positive_js, JointSpaceExport, JointSpaceTransform,
};

pub mod keyframe_set_export;
pub use keyframe_set_export::{
    add_channel, channel_count_ks, find_channel_ks, keyframe_set_duration, keyframe_set_to_json,
    new_keyframe_set_export, sample_channel_ks, total_keyframe_count, KeyframeChannel,
    KeyframeSetExport, KeyframeValue,
};

pub mod lod_switch_export;
pub use lod_switch_export::{
    active_lod_for_distance, add_lod_switch, lod_switch_count, lod_switch_reduction_ratio,
    lod_switch_to_json, new_lod_switch_export, total_triangle_count_ls, validate_lod_switch,
    LodSwitchEntry, LodSwitchExport,
};

pub mod toml_export;
pub use toml_export::{
    add_bool as add_toml_bool, add_float as add_toml_float, add_integer as add_toml_integer,
    add_string as add_toml_string, export_mesh_stats_toml, find_record as find_toml_record,
    new_toml_export, record_count, to_toml_string, TomlExport, TomlRecord,
};

pub mod yaml_export;
pub use yaml_export::{
    export_yaml, render_yaml, scene_to_yaml, validate_yaml_value, yaml_bool,
    yaml_float as yaml_export_float, yaml_int, yaml_list, yaml_list_len, yaml_map, yaml_map_get,
    yaml_null, yaml_size_bytes, yaml_str, YamlValue,
};

pub mod markdown_export;
pub use markdown_export::{
    add_md_row, column_count as md_column_count, export_mesh_list_md, export_mesh_stats_md,
    new_md_table, row_count as md_row_count, to_markdown_string, MdRow, MdTable,
};

pub mod html_export;
pub use html_export::{
    add_html_row, add_html_section, export_mesh_stats_html, html_escape as html_tag_escape,
    new_html_export, section_count as html_section_count, to_html_string,
    total_row_count as html_total_row_count, HtmlExport, HtmlSection,
};

pub mod latex_export;
pub use latex_export::{
    add_latex_bone, bone_count_latex, default_biped_latex_doc, export_latex, latex_set_scale,
    latex_size_bytes, new_latex_doc, render_latex, validate_latex_doc, LatexBone, LatexSkeletonDoc,
};

pub mod ascii_art_export;
pub use ascii_art_export::{
    aabb_summary, compute_aabb as compute_ascii_aabb, render_aabb_ascii, render_side_view_ascii,
    AsciiAabb,
};

pub mod dot_export;
pub use dot_export::{
    add_dot_edge, add_dot_node, dot_edge_count, dot_node_count, export_skeleton_dot, find_dot_node,
    new_dot_export, to_dot_string, DotEdge, DotExport, DotNode,
};

pub mod graphml_export;
pub use graphml_export::{
    add_graphml_edge, add_graphml_node, export_bones_graphml, find_graphml_node,
    graphml_edge_count, graphml_node_count, new_graphml_export, to_graphml_string, GraphMlEdge,
    GraphMlExport, GraphMlNode,
};

pub mod mermaid_export;
pub use mermaid_export::{
    add_mermaid_edge, add_mermaid_node, export_skeleton_mermaid, find_mermaid_node,
    mermaid_edge_count, mermaid_node_count, new_mermaid_export, set_mermaid_direction,
    to_mermaid_string, MermaidEdge, MermaidExport, MermaidNode,
};

pub mod plantuml_export;
pub use plantuml_export::{
    add_final_state, add_plant_state, add_plant_transition, find_plant_state, new_plantuml_export,
    plant_state_count, plant_transition_count, set_initial_state, to_plantuml_string, PlantState,
    PlantTransition, PlantUmlExport,
};

pub mod proto_text_export;
pub use proto_text_export::{
    add_proto_bool, add_proto_float, add_proto_int, add_proto_nested, add_proto_string,
    export_mesh_stats_proto, find_proto_field, new_proto_message, proto_field_count, to_proto_text,
    ProtoField, ProtoMessage,
};

pub mod capnp_stub_export;
pub use capnp_stub_export::{
    add_capnp_field, add_capnp_struct, capnp_last_struct_field_count, capnp_struct_count,
    export_mesh_capnp_schema, find_capnp_struct, new_capnp_export, to_capnp_schema, CapnpExport,
    CapnpField, CapnpStruct,
};

pub mod flatbuf_stub_export;
pub use flatbuf_stub_export::{
    add_fbs_field, add_fbs_table, export_mesh_fbs_schema, fbs_last_table_field_count,
    fbs_table_count, find_fbs_table, new_flatbuf_export, set_fbs_root_type, to_fbs_schema,
    FbsField, FbsTable, FlatbufExport,
};

pub mod avro_export;
pub use avro_export::{
    add_avro_field, add_avro_record, avro_field_count, avro_record_count, export_mesh_avro,
    new_avro_export, new_avro_schema, record_to_json as avro_record_to_json,
    records_to_json as avro_records_to_json, schema_to_json as avro_schema_to_json, AvroExport,
    AvroField, AvroRecord, AvroSchema,
};

pub mod parquet_stub_export;
pub use parquet_stub_export::{
    add_parquet_column, add_row_group, export_mesh_parquet_meta, new_parquet_export,
    parquet_row_group_count, parquet_total_rows, to_parquet_metadata_json, ParquetColumn,
    ParquetExport, ParquetRowGroup, ParquetType,
};

pub mod arrow_export;
pub use arrow_export::{
    add_arrow_batch, add_arrow_field, arrow_field_count, arrow_schema_to_json, arrow_total_rows,
    export_positions_arrow, new_arrow_export, ArrowBatch, ArrowExport, ArrowField, ArrowSchema,
    ArrowType,
};

pub mod wav_export;
pub use wav_export::{
    build_wav_header, encode_samples_i16, export_wav, silent_wav, sine_wav, wav_duration,
    wav_peak_amplitude, WavConfig, WavFile,
};

pub mod midi_export;
pub use midi_export::{
    add_note, build_midi_header, build_midi_track, encode_vlq, export_midi, midi_duration_secs,
    midi_duration_ticks, MidiExport, MidiNote,
};

pub mod osc_export;
pub use osc_export::{
    new_osc_message, osc_add_float, osc_add_int, osc_add_string, serialize_osc_bundle,
    serialize_osc_message, OscArg, OscBundle, OscMessage,
};

pub mod dmx_export;
pub use dmx_export::{
    active_channel_count, blend_frames, fill_frame, get_channel, serialize_dmx_frame, set_channel,
    set_rgb, DmxFrame,
};

pub mod artnet_export;
pub use artnet_export::{
    artnet_get_channel, artnet_set_channel, build_artnet_dmx_packet, universe_to_subnet_address,
    ArtDmxPacket, ARTNET_OP_DMX, ARTNET_PORT,
};

pub mod sacn_export;
pub use sacn_export::{
    build_sacn_packet, sacn_next_sequence, sacn_set_channel, sacn_validate, SacnConfig, SacnPacket,
    SACN_DEFAULT_PRIORITY,
};

pub mod ros_bag_export;
pub use ros_bag_export::{
    add_connection, build_ros_bag_header_bytes, find_connection_by_topic, has_topic,
    record_message, RosBag, RosBagConnection, RosBagHeader,
};

pub mod sensor_log_export;
pub use sensor_log_export::{
    add_reading, average_sensor_value, export_sensor_log_csv, filter_by_sensor, log_duration_ms,
    peak_sensor_value, reading_count, sort_by_timestamp as sort_sensor_log_by_timestamp,
    unique_sensor_ids, SensorLog, SensorReading,
};

pub mod telemetry_export;
pub use telemetry_export::{
    add_telemetry_channel, channel_average, channel_count_tl, export_telemetry_csv,
    export_telemetry_meta, find_channel_by_name, frame_count_tl, record_frame, session_duration_us,
    TelemetryChannel, TelemetryExport, TelemetryFrame,
};

pub mod event_log_export;
pub use event_log_export::{
    count_by_severity, event_count as event_log_count, export_event_log_csv,
    export_event_log_ndjson, filter_by_type as filter_events_by_type, has_errors, log_event,
    sort_events_by_time, EventEntry, EventLog, EventSeverity,
};

pub mod diff_export;
pub use diff_export::{
    addition_count, changed_line_count, compute_diff, export_diff_unified, is_identical,
    removal_count, DiffEntry, DiffExport, DiffOp,
};

pub mod changelog_export;
pub use changelog_export::{
    add_addition, add_changelog_entry, add_fix, entry_count, export_changelog_md,
    find_entry_by_version, latest_version, total_changes, Changelog, ChangelogEntry,
};

pub mod license_export;
pub use license_export::{
    add_license, export_license_json, export_license_txt, export_spdx_expression, find_by_spdx_id,
    has_license, license_count, osi_approved_count, remove_license, LicenseEntry, LicenseManifest,
};

pub mod manifest_export;
pub use manifest_export::{
    add_author, add_dependency, author_count, dependency_count, export_manifest_json,
    export_manifest_toml, find_dependency, optional_dependency_count,
    set_description as set_manifest_description, set_license as set_manifest_license, Dependency,
    SoftwareManifest,
};

pub mod inventory_export;
pub use inventory_export::{
    add_asset, asset_count, count_by_type as count_assets_by_type, export_inventory_csv,
    export_inventory_json, find_asset_by_id, find_asset_by_name, total_file_size,
    total_vertex_count as inventory_total_vertex_count, AssetEntry, AssetInventory, AssetStats,
    AssetType,
};

pub mod audit_log_export;
pub use audit_log_export::{
    audit_entry_count, count_by_actor, count_by_outcome, export_audit_csv, export_audit_ndjson,
    filter_by_action, has_denials, latest_timestamp, log_audit,
    sort_by_timestamp as sort_audit_by_timestamp, AuditEntry, AuditLog, AuditOutcome,
};

pub mod kml_export;
pub use kml_export::{
    add_kml_placemark, body_scan_to_kml, export_kml, kml_placemark_count, kml_size_bytes,
    kml_to_geojson_stub, new_kml_document, render_kml, validate_kml, KmlDocument, KmlPlacemark,
};

pub mod geojson_export;
pub use geojson_export::{
    add_linestring_feature, add_point_feature, body_landmarks_to_geojson, export_geojson,
    geojson_feature_count, geojson_size_bytes, new_geojson_collection, render_geojson,
    validate_geojson, GeoJsonCollection, GeoJsonFeature, GeoJsonGeometry,
};

pub mod gpx_export;
pub use gpx_export::{
    add_gpx_track, add_gpx_track_point, add_gpx_waypoint, body_scan_track, export_gpx,
    gpx_point_count, gpx_size_bytes, gpx_track_count, gpx_waypoint_count, new_gpx_document,
    render_gpx, validate_gpx, GpxDocument, GpxTrack, GpxTrackPoint,
};

pub mod nmea_export;
pub use nmea_export::{
    build_gga, build_rmc, decimal_lon_to_nmea, decimal_to_nmea, export_positions_as_gga,
    nmea_checksum, sentence_count as nmea_sentence_count, sentence_has_crlf,
};