Dandelion 1.1.1
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
group.h
浏览该文件的文档.
1#ifndef DANDELION_SCENE_GROUP_H
2#define DANDELION_SCENE_GROUP_H
3
4#include <cstddef>
5#include <string>
6
7#include <spdlog/spdlog.h>
8
9#include "object.h"
10
11/*!
12 * \ingroup rendering
13 * \file scene/group.h
14 */
15
16/*!
17 * \ingroup rendering
18 * \~chinese
19 * \brief 表示物体组的类。
20 *
21 * 一个模型文件(例如一个 obj 文件)中可以包含多个物体,
22 * 因此加载一个模型文件的结果是一个组而不是一个物体。加载完成后,组名即文件名、
23 * 各物体名即文件中各 mesh 的名称。在删除组中所有的物体后该组为空但不会被删除,
24 * 未来将实现组间转移物体和向组中添加物体的功能。
25 */
26class Group
27{
28public:
29 /*! \~chinese 创建一个组只需要指定组名,加载模型数据要显式调用 `load` 方法。 */
30 Group(const std::string& group_name);
31 ///@{
32 /*! \~chinese 禁止复制组。 */
33 Group(Group& other) = delete;
34 Group(const Group& other) = delete;
35 ///@}
36 ~Group() = default;
37 /*! \~chinese 被 `Scene::load` 调用,真正加载模型数据的函数。 */
38 bool load(const std::string& file_path);
39 /*! \~chinese 组中所有的物体。 */
40 std::vector<std::unique_ptr<Object>> objects;
41 /*! \~chinese 组的唯一 ID 。 */
42 std::size_t id;
43 /*! \~chinese 组名,来自加载时的文件名。 */
44 std::string name;
45
46private:
47 /*! \~chinese 下一个可用的组 ID 。 */
48 static std::size_t next_available_id;
49 std::shared_ptr<spdlog::logger> logger;
50};
51
52#endif // DANDELION_SCENE_GROUP_H
Group(const std::string &group_name)
Group(Group &other)=delete
bool load(const std::string &file_path)
定义 group.cpp:33
std::vector< std::unique_ptr< Object > > objects
定义 group.h:40
static std::size_t next_available_id
定义 group.h:48
std::string name
定义 group.h:44
std::size_t id
定义 group.h:42