Sceneview
 All Classes Functions Variables Enumerations Enumerator Groups Pages
draw_group.hpp
1 // Copyright [2016] Albert Huang
2 
3 #ifndef SCENEVIEW_DRAW_GROUP_HPP__
4 #define SCENEVIEW_DRAW_GROUP_HPP__
5 
6 #include <unordered_set>
7 
8 #include <QString>
9 
10 namespace sv {
11 
12 class CameraNode;
13 class Scene;
14 class DrawNode;
15 
16 enum class NodeOrdering {
17  kNone = 0,
18  kBackToFront = 1,
19  kFrontToBack = 2
20 };
21 
22 class DrawGroup {
23  public:
24  const QString& Name() const { return name_; }
25 
26  int Order() const { return order_; }
27 
28  const std::unordered_set<DrawNode*>& DrawNodes() const { return nodes_; }
29 
33  void SetNodeOrdering(NodeOrdering ordering) { node_ordering_ = ordering; }
34 
35  NodeOrdering GetNodeOrdering() const { return node_ordering_; }
36 
37  void SetFrustumCulling(bool value) { frustum_culling_ = value; }
38 
39  bool GetFrustumCulling() const { return frustum_culling_; }
40 
41  void SetCamera(CameraNode* camera) { camera_ = camera; }
42 
43  CameraNode* GetCamera() { return camera_; }
44 
45  private:
46  friend class Scene;
47 
48  DrawGroup(const QString& name, int order);
49 
50  void AddNode(DrawNode* node);
51 
52  void RemoveNode(DrawNode* node);
53 
54  const QString name_;
55 
56  const int order_;
57 
58  NodeOrdering node_ordering_ = NodeOrdering::kBackToFront;
59 
60  bool frustum_culling_ = true;
61 
62  CameraNode* camera_ = nullptr;
63 
64  std::unordered_set<DrawNode*> nodes_;
65 };
66 
67 } // namespace sv
68 
69 #endif // SCENEVIEW_DRAW_GROUP_HPP__
Definition: draw_group.hpp:22
void SetNodeOrdering(NodeOrdering ordering)
Sets the sorting method for drawing nodes in this draw group.
Definition: draw_group.hpp:33