Clean up Scene3D namespace and header definition
[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
30  *      and inverse projection matrices.
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    */
47   void Update();
48
49   const Matrix& GetView() const
50   {
51     return mView;
52   }
53   const Matrix& GetProjection() const
54   {
55     return mProjection;
56   }
57   const Matrix& GetInverseProjection() const
58   {
59     return mInvProjection;
60   }
61   const Matrix& GetViewProjection() const
62   {
63     return mViewProjection;
64   }
65
66 private:
67   Matrix mView;
68   Matrix mProjection;
69   Matrix mInvProjection;
70   Matrix mViewProjection;
71 };
72
73 } // namespace Dali::Scene3D::Loader
74
75 #endif //DALI_SCENE3D_LOADER_VIEW_PROJECTION_H_