[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / public-api / loader / view-projection.h
1 #ifndef DALI_SCENE3D_LOADER_VIEW_PROJECTION_H_
2 #define DALI_SCENE3D_LOADER_VIEW_PROJECTION_H_
3 /*
4  * Copyright (c) 2023 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 // EXTERNAL INCLUDES
21 #include <dali/public-api/math/matrix.h>
22
23 // INTERNAL INCLUDES
24 #include <dali-scene3d/public-api/api.h>
25
26 namespace Dali::Scene3D::Loader
27 {
28 /**
29  * @brief Contains view and projection matrices, also caching the view-projection and inverse projection matrices.
30  * @SINCE_2_0.7
31  */
32 class ViewProjection
33 {
34 public:
35   Matrix& GetView()
36   {
37     return mView;
38   }
39   Matrix& GetProjection()
40   {
41     return mProjection;
42   }
43
44   /**
45    * @brief Updates the cached view projection and inverse projection matrices.
46    * @SINCE_2_0.7
47    */
48   void Update();
49
50   const Matrix& GetView() const
51   {
52     return mView;
53   }
54   const Matrix& GetProjection() const
55   {
56     return mProjection;
57   }
58   const Matrix& GetInverseProjection() const
59   {
60     return mInvProjection;
61   }
62   const Matrix& GetViewProjection() const
63   {
64     return mViewProjection;
65   }
66
67 private:
68   Matrix mView;
69   Matrix mProjection;
70   Matrix mInvProjection;
71   Matrix mViewProjection;
72 };
73
74 } // namespace Dali::Scene3D::Loader
75
76 #endif //DALI_SCENE3D_LOADER_VIEW_PROJECTION_H_