Merge "Change dali-scene-loader to dali-scene3d" into 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) 2022 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 // INTERNAL INCLUDES
21 #include "dali-scene3d/public-api/api.h"
22
23 // EXTERNAL INCLUDES
24 #include "dali/public-api/math/matrix.h"
25
26 namespace Dali
27 {
28 namespace Scene3D
29 {
30 namespace Loader
31 {
32 /**
33  * @brief Contains view and projection matrices, also caching the view-projection
34  *      and inverse projection matrices.
35  */
36 class ViewProjection
37 {
38 public:
39   Matrix& GetView()
40   {
41     return mView;
42   }
43   Matrix& GetProjection()
44   {
45     return mProjection;
46   }
47
48   /*
49    * @brief Updates the cached view projection and inverse projection matrices.
50    */
51   void Update();
52
53   const Matrix& GetView() const
54   {
55     return mView;
56   }
57   const Matrix& GetProjection() const
58   {
59     return mProjection;
60   }
61   const Matrix& GetInverseProjection() const
62   {
63     return mInvProjection;
64   }
65   const Matrix& GetViewProjection() const
66   {
67     return mViewProjection;
68   }
69
70 private:
71   Matrix mView;
72   Matrix mProjection;
73   Matrix mInvProjection;
74   Matrix mViewProjection;
75 };
76
77 } // namespace Loader
78 } // namespace Scene3D
79 } // namespace Dali
80
81 #endif //DALI_SCENE3D_LOADER_VIEW_PROJECTION_H_