• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "scene.proj.hpp"
16 #include "scene.impl.hpp"
17 #include "taihe/runtime.hpp"
18 #include "stdexcept"
19 #include "sceneNodeParameters.h"
20 
21 namespace {
22 // To be implemented.
23 
24 class CameraImpl {
25 public:
26     float fov_ = 5.24;
CameraImpl()27     CameraImpl() {}
28 
SetFov(float fov)29     void SetFov(float fov)
30     {
31         this->fov_ = fov;
32     }
33 
GetFov()34     float GetFov()
35     {
36         return fov_;
37     }
38 };
39 
40 class LightImpl {
41 public:
42     float intens_ = 5.24;
LightImpl()43     LightImpl() {}
44 
SetIntensity(float intens)45     void SetIntensity(float intens)
46     {
47         this->intens_ = intens;
48     }
49 
GetIntensity()50     float GetIntensity()
51     {
52         return intens_;
53     }
54 };
55 
56 class NodeImpl {
57 public:
58     bool visible_ = true;
59     ::taihe::string path = "test\ani_graphics3d";
NodeImpl()60     NodeImpl() {}
61 
SetVisible(bool visible)62     void SetVisible(bool visible)
63     {
64         this->visible_ = visible;
65     }
66 
GetVisible()67     bool GetVisible()
68     {
69         return visible_;
70     }
71 
GetPath()72     ::taihe::string GetPath()
73     {
74         return path;
75     }
76 };
77 
78 class SceneResourceParametersImpl {
79 public:
80     std::string name_ = "Scene";
SceneResourceParametersImpl()81     SceneResourceParametersImpl() {}
82 
SetName(::taihe::string_view name)83     void SetName(::taihe::string_view name)
84     {
85         this->name_ = name;
86     }
87 
GetName()88     ::taihe::string GetName()
89     {
90         return name_;
91     }
92 };
93 
94 class MaterialImpl {
95 public:
96     int8_t materialType = 122;
MaterialImpl()97     MaterialImpl() {}
98 
GetMaterialType()99     int8_t GetMaterialType()
100     {
101         return materialType;
102     }
103 };
104 
105 class ShaderImpl {
106 public:
ShaderImpl()107     ShaderImpl() {}
108 
GetInputs()109     ::taihe::map<::taihe::string, int32_t> GetInputs()
110     {
111         ::taihe::map<::taihe::string, int32_t> res;
112         static const int32_t input = 2025;
113         res.emplace("banana", input);
114         return res;
115     }
116 };
117 
118 class ImageImpl {
119 public:
120     float width = 800;
121     float height = 600;
ImageImpl()122     ImageImpl() {}
123 
GetWidth()124     float GetWidth()
125     {
126         return width;
127     }
128 
GetHeight()129     float GetHeight()
130     {
131         return height;
132     }
133 };
134 
135 class EnvironmentImpl {
136 public:
EnvironmentImpl()137     EnvironmentImpl() {}
138 
GetBackgroundType()139     int32_t GetBackgroundType()
140     {
141         int32_t bkType = 0;
142         return bkType;
143     }
144 };
145 
146 class SceneResourceFactoryImpl {
147 public:
SceneResourceFactoryImpl()148     SceneResourceFactoryImpl() {}
149 
createCameraPro(::sceneNodeParameters::weak::SceneNodeParameters params)150     ::scene::Camera createCameraPro(::sceneNodeParameters::weak::SceneNodeParameters params)
151     {
152         return taihe::make_holder<CameraImpl, ::scene::Camera>();
153     }
154 
createLightPro(::sceneNodeParameters::weak::SceneNodeParameters params,::scene::LightType lightType)155     ::scene::Light createLightPro(::sceneNodeParameters::weak::SceneNodeParameters params, ::scene::LightType lightType)
156     {
157         return taihe::make_holder<LightImpl, ::scene::Light>();
158     }
159 
createNodePro(::sceneNodeParameters::weak::SceneNodeParameters params)160     ::scene::Node createNodePro(::sceneNodeParameters::weak::SceneNodeParameters params)
161     {
162         return taihe::make_holder<NodeImpl, ::scene::Node>();
163     }
164 
createMaterialPro(::scene::weak::SceneResourceParameters params,::scene::MaterialType materialType)165     ::scene::Material createMaterialPro(::scene::weak::SceneResourceParameters params,
166                                         ::scene::MaterialType materialType)
167     {
168         return taihe::make_holder<MaterialImpl, ::scene::Material>();
169     }
170 
createShaderPro(::scene::weak::SceneResourceParameters params)171     ::scene::Shader createShaderPro(::scene::weak::SceneResourceParameters params)
172     {
173         return taihe::make_holder<ShaderImpl, ::scene::Shader>();
174     }
175 
createImagePro(::scene::weak::SceneResourceParameters params)176     ::scene::Image createImagePro(::scene::weak::SceneResourceParameters params)
177     {
178         return taihe::make_holder<ImageImpl, ::scene::Image>();
179     }
180 
createEnvironmentPro(::scene::weak::SceneResourceParameters params)181     ::scene::Environment createEnvironmentPro(::scene::weak::SceneResourceParameters params)
182     {
183         return taihe::make_holder<EnvironmentImpl, ::scene::Environment>();
184     }
185 };
186 
GetSceneResourceFactory()187 ::scene::SceneResourceFactory GetSceneResourceFactory()
188 {
189     return taihe::make_holder<SceneResourceFactoryImpl, ::scene::SceneResourceFactory>();
190 }
191 
GetCamera()192 ::scene::Camera GetCamera()
193 {
194     return taihe::make_holder<CameraImpl, ::scene::Camera>();
195 }
196 
GetLight()197 ::scene::Light GetLight()
198 {
199     return taihe::make_holder<LightImpl, ::scene::Light>();
200 }
201 
GetNode()202 ::scene::Node GetNode()
203 {
204     return taihe::make_holder<NodeImpl, ::scene::Node>();
205 }
206 
GetSceneResourceParameters()207 ::scene::SceneResourceParameters GetSceneResourceParameters()
208 {
209     return taihe::make_holder<SceneResourceParametersImpl, ::scene::SceneResourceParameters>();
210 }
211 
GetMaterial()212 ::scene::Material GetMaterial()
213 {
214     return taihe::make_holder<MaterialImpl, ::scene::Material>();
215 }
216 
GetShader()217 ::scene::Shader GetShader()
218 {
219     return taihe::make_holder<ShaderImpl, ::scene::Shader>();
220 }
221 
GetImage()222 ::scene::Image GetImage()
223 {
224     return taihe::make_holder<ImageImpl, ::scene::Image>();
225 }
226 
GetEnvironment()227 ::scene::Environment GetEnvironment()
228 {
229     return taihe::make_holder<EnvironmentImpl, ::scene::Environment>();
230 }
231 }  // namespace
232 
233 TH_EXPORT_CPP_API_GetSceneResourceFactory(GetSceneResourceFactory);
234 TH_EXPORT_CPP_API_GetCamera(GetCamera);
235 TH_EXPORT_CPP_API_GetLight(GetLight);
236 TH_EXPORT_CPP_API_GetNode(GetNode);
237 TH_EXPORT_CPP_API_GetSceneResourceParameters(GetSceneResourceParameters);
238 TH_EXPORT_CPP_API_GetMaterial(GetMaterial);
239 TH_EXPORT_CPP_API_GetShader(GetShader);
240 TH_EXPORT_CPP_API_GetImage(GetImage);
241 TH_EXPORT_CPP_API_GetEnvironment(GetEnvironment);