Skip to content

File object_snapshot.h

File List > core > object_snapshot.h

Go to the documentation of this file

#pragma once
#include <uipc/common/dllexport.h>
#include <uipc/common/type_define.h>
#include <uipc/common/vector.h>
#include <uipc/common/json.h>

namespace uipc::core::internal
{
class Scene;
}
namespace uipc::core
{
class SceneFactory;

class SceneSnapshot;

class Object;

class UIPC_CORE_API ObjectSnapshot
{
    friend class SceneSnapshot;
    friend class SceneFactory;
    friend class ObjectCollection;
    friend class internal::Scene;
    friend class Object;

    friend UIPC_CORE_API void to_json(Json& j, const ObjectSnapshot& snapshot);
    friend UIPC_CORE_API void from_json(const Json& j, ObjectSnapshot& snapshot);

  public:
    ObjectSnapshot() = default;
    ObjectSnapshot(const Object& object);
    IndexT id() const noexcept { return m_id; }

  private:
    IndexT         m_id;
    std::string    m_name;
    vector<IndexT> m_geometries;
};

UIPC_CORE_API void to_json(Json& j, const ObjectSnapshot& snapshot);
UIPC_CORE_API void from_json(const Json& j, ObjectSnapshot& snapshot);
}  // namespace uipc::core