Skip to content

File mesh.hpp

File List > data_format > mesh.hpp

Go to the documentation of this file

#pragma once

#include "illixr/switchboard.hpp"

#include 
#include 

namespace ILLIXR::data_format {

struct mesh_type : public switchboard::event {
    unsigned                  type;
    const std::vector<char>   mesh{};
    [[maybe_unused]] bool     compressed = false;
    [[maybe_unused]] bool     active     = false;
    [[maybe_unused]] unsigned id         = 0;
    [[maybe_unused]] unsigned chunk_id   = 0;
    [[maybe_unused]] unsigned max_chunk  = 0;
    // this is additional info for mesh manager
    [[maybe_unused]] unsigned num_faces    = 0;
    [[maybe_unused]] unsigned num_vertices = 0;

    [[maybe_unused]] int cell_x = 0;
    [[maybe_unused]] int cell_y = 0;
    [[maybe_unused]] int cell_z = 0;
    // 12/29 draco integration
    //[[maybe_unused]] std::unique_ptr reader;
    [[maybe_unused]] std::shared_ptr<draco_illixr::PlyReader> reader;

    [[maybe_unused]] mesh_type(const unsigned type_, std::shared_ptr<draco_illixr::PlyReader> input_reader, unsigned id_)
        : type{type_}
        , id{id_}
        , reader{std::move(input_reader)} { }

    [[maybe_unused]] mesh_type(const unsigned type_, std::shared_ptr<draco_illixr::PlyReader> input_reader, unsigned id_,
                               bool is_active)
        : type{type_}
        , active{is_active}
        , id{id_}
        , reader{std::move(input_reader)} { }

    [[maybe_unused]] mesh_type(const unsigned type_, std::shared_ptr<draco_illixr::PlyReader> input_reader, unsigned id_,
                               unsigned chunk_id_, unsigned max_chunk_, unsigned num_faces_, unsigned num_vertices_,
                               bool is_active)
        : type{type_}
        , active{is_active}
        , id{id_}
        , chunk_id{chunk_id_}
        , max_chunk{max_chunk_}
        , num_faces{num_faces_}
        , num_vertices{num_vertices_}
        , reader(std::move(input_reader)) { }

    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, bool is_compressed, unsigned id_)
        : type{type_}
        , mesh(input_mesh)
        , compressed{is_compressed}
        , id{id_} { }

    // for baseline parallel compression 2
    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, unsigned id_, unsigned chunk_id_,
                               unsigned max_chunk_)
        : type{type_}
        , mesh(input_mesh)
        , id{id_}
        , chunk_id{chunk_id_}
        , max_chunk{max_chunk_} { }

    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, bool is_compressed, bool is_active,
                               int cell_x_, int cell_y_, int cell_z_)
        : type{type_}
        , mesh(input_mesh)
        , compressed{is_compressed}
        , active{is_active}
        , cell_x{cell_x_}
        , cell_y{cell_y_}
        , cell_z{cell_z_} { }

    // used by server mesh manager in draco integration
    [[maybe_unused]] mesh_type(const unsigned type_, std::shared_ptr<draco_illixr::PlyReader> input_reader, bool is_compressed,
                               bool is_active, unsigned id_)
        : type{type_}
        , compressed{is_compressed}
        , active{is_active}
        , id{id_}
        , chunk_id{1}
        , max_chunk{1}
        , reader{std::move(input_reader)} { }

    // used by server mesh manager in non-draco integration
    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, bool is_compressed, bool is_active,
                               unsigned id_)
        : type{type_}
        , mesh(input_mesh)
        , compressed{is_compressed}
        , active{is_active}
        , id{id_}
        , chunk_id{1}
        , max_chunk{1} { }

    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, bool is_compressed, bool is_active,
                               unsigned id_, unsigned num_faces_, unsigned num_vertices_)
        : type{type_}
        , mesh(input_mesh)
        , compressed{is_compressed}
        , active{is_active}
        , id{id_}
        , num_faces{num_faces_}
        , num_vertices{num_vertices_} { }

    // type to pass to mesh manager
    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, bool is_compressed, bool is_active,
                               unsigned id_, unsigned chunk_id_, unsigned max_chunk_, unsigned num_faces_,
                               unsigned num_vertices_)
        : type{type_}
        , mesh(input_mesh)
        , compressed{is_compressed}
        , active{is_active}
        , id{id_}
        , chunk_id{chunk_id_}
        , max_chunk{max_chunk_}
        , num_faces{num_faces_}
        , num_vertices{num_vertices_} { }

    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, bool is_compressed, bool is_active,
                               unsigned id_, unsigned chunk_id_, unsigned max_chunk_, unsigned num_faces_,
                               unsigned num_vertices_, std::shared_ptr<draco_illixr::PlyReader> input_reader)
        : type{type_}
        , mesh(input_mesh)
        , compressed{is_compressed}
        , active{is_active}
        , id{id_}
        , chunk_id{chunk_id_}
        , max_chunk{max_chunk_}
        , num_faces{num_faces_}
        , num_vertices{num_vertices_}
        , reader{std::move(input_reader)} { }

    [[maybe_unused]] mesh_type(const unsigned type_, const std::vector<char>& input_mesh, bool is_active, unsigned id_,
                               unsigned chunk_id_, unsigned max_chunk_)
        : type{type_}
        , mesh(input_mesh)
        , active{is_active}
        , id{id_}
        , chunk_id{chunk_id_}
        , max_chunk{max_chunk_} { }
};

} // namespace ILLIXR::data_format