NAP
depthsorter.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 #include "entity.h"
8 #include "component.h"
9 #include "transformcomponent.h"
10 
11 namespace nap
12 {
13  // Forward declares
14  class RenderableComponentInstance;
15 
19  class NAPAPI DepthComparer
20  {
21  public:
22  enum class EMode
23  {
24  FrontToBack = 0,
25  BackToFront
26  };
27 
33  DepthComparer(EMode mode, const glm::mat4x4& viewMatrix);
34 
41  bool operator()(const nap::ComponentInstance* objectA, const nap::ComponentInstance* objectB);
42 
43  private:
44  const glm::mat4x4& mViewMatrix;
45  EMode mMode = EMode::FrontToBack;
46  };
47 
48 
53  class NAPAPI ZComparer
54  {
55  public:
56  enum class EMode
57  {
58  FrontToBack = 0,
59  BackToFront
60  };
61 
66  ZComparer(EMode mode);
67 
74  bool operator()(const nap::ComponentInstance* objectA, const nap::ComponentInstance* objectB);
75 
76  private:
77  EMode mMode = EMode::FrontToBack;
78  };
79 
80 
81  namespace sorter
82  {
91  void NAPAPI sortObjectsByDepth(std::vector<RenderableComponentInstance*>& comps, const glm::mat4& viewMatrix);
92 
100  void NAPAPI sortObjectsByZ(std::vector<RenderableComponentInstance*>& comps);
101  }
102 }
nap::sorter::sortObjectsByZ
void NAPAPI sortObjectsByZ(std::vector< RenderableComponentInstance * > &comps)
nap::DepthComparer::EMode
EMode
Definition: depthsorter.h:22
nap::ZComparer
Definition: depthsorter.h:53
nap::DepthComparer
Definition: depthsorter.h:19
nap::ComponentInstance
Definition: component.h:43
nap::sorter::sortObjectsByDepth
void NAPAPI sortObjectsByDepth(std::vector< RenderableComponentInstance * > &comps, const glm::mat4 &viewMatrix)
nap
Definition: templateapp.h:17
nap::ZComparer::EMode
EMode
Definition: depthsorter.h:56