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);