File shared_attribute_context.h
File List > geometry > shared_attribute_context.h
Go to the documentation of this file
#pragma once
#include <uipc/geometry/attribute.h>
#include <uipc/geometry/attribute_slot.h>
#include <uipc/common/unordered_map.h>
namespace uipc::geometry
{
class UIPC_CORE_API SerialSharedAttributeContext
{
public:
SerialSharedAttributeContext() = default;
[[nodiscard]] IndexT index_of(IAttribute* attr) const;
[[nodiscard]] IAttribute* attribute_of(IndexT index) const;
private:
friend class GeometryAtlas;
friend class GeometryAtlasCommit;
unordered_map<IAttribute*, IndexT> m_attr_to_index;
vector<IAttribute*> m_index_to_attr;
void clear();
};
class UIPC_CORE_API DeserialSharedAttributeContext
{
public:
DeserialSharedAttributeContext() = default;
[[nodiscard]] S<IAttributeSlot> attribute_slot_of(IndexT index) const;
private:
friend class GeometryAtlas;
friend class GeometryAtlasCommit;
vector<S<IAttributeSlot>> m_attribute_slots;
void clear();
};
} // namespace uipc::geometry