Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
3DScene.impl.hpp
1 
2 #pragma once
3 #include <set>
4 #include <Covellite/Expanse/I3DScene.hpp>
5 #include "IProduce3DObject.impl.hpp"
6 
7 namespace covellite
8 {
9 
10 namespace expanse
11 {
12 
30 class C3DScene final :
31  public IProduce3DObject,
32  public I3DScene
33 {
34  using Object_t = ::std::pair<size_t, ObjectId_t>;
35 
36 public:
37  // Интерфейс IProduce3DObject:
38  void Add(const ObjectId_t, const C3DObject_t &) override;
39  void Remove(const ObjectId_t) override;
40 
41 public:
42  // Интерфейс I3DScene:
43  void Add(const ObjectId_t) override;
44 
45 public:
46  void Render(void);
47 
48 private:
49  const C3DObject_t & Get(const ObjectId_t) const;
50 
51 private:
52  struct CombinationLess
53  {
54  inline bool operator()(const Object_t & _Left, const Object_t & _Right) const noexcept
55  {
56  return _Left.first < _Right.first;
57  }
58  };
59 
60  ::std::vector<C3DObject_t> m_Renders;
61  ::std::vector<ObjectId_t> m_RenderQueue;
62 
63 public:
64  C3DScene(void);
65  C3DScene(const C3DScene &) = delete;
66  C3DScene(C3DScene &&) = delete;
67  C3DScene & operator= (const C3DScene &) = delete;
68  C3DScene & operator= (C3DScene &&) = delete;
69  ~C3DScene(void) = default;
70 
71 private:
72  FRIEND_TEST(C3DScene_test, /*DISABLED_*/Test_Produce3DObjects);
73 };
74 
75 } // namespace expanse
76 
77 } // namespace covellite
covellite::events::IEvents
Класс входит в проект Covellite.Events Интерфейсный класс для классов, которые должны использовать ...
Definition: IEvents.hpp:33
covellite::expanse::I3DScene
Класс входит в проект Covellite.Expanse Интерфейс класса 3D сцены.
Definition: I3DScene.hpp:27
covellite::expanse::C3DScene::Render
void Render(void)
Функция рендеринга 3D сцены.
Definition: 3DScene.cpp:89
covellite::expanse::C3DScene::Add
void Add(const ObjectId_t, const C3DObject_t &) override
Функция добавления 3D объекта в 3D сцену.
covellite::expanse::C3DScene
Класс входит в проект Covellite.Expanse Класс-контейнер для объектов, которые должны рендеринтся в ...
Definition: 3DScene.impl.hpp:33
covellite::expanse::C3DScene::Remove
void Remove(const ObjectId_t) override
Функция удаления 3D объекта из 3D cцены.
Definition: 3DScene.cpp:46
covellite::expanse::Id
Класс входит в проект Covellite.Expanse Класс идентификатора объекта.
Definition: Id.impl.hpp:34
covellite::events::Events
Класс входит в проект Covellite.Events Класс для работы с событиями фреймворка.
Definition: Events.hpp:36
covellite::expanse::IProduce3DObject
Класс входит в проект Covellite.Expanse Интерфейсный класс создания/удаления 3D объектов.
Definition: IProduce3DObject.impl.hpp:27
basement
Definition: Common.hpp:10
covellite::expanse::C3DScene::Add
void Add(const ObjectId_t) override
Функция добавления идентификатора объекта в очередь рендеринга.
covellite::expanse::C3DScene::Get
const C3DObject_t & Get(const ObjectId_t) const
Функция получения набора рендеров 3D объекта по его идентификатору.
Definition: 3DScene.cpp:112