1 /*
2  * Copyright (c) 2024 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 #ifndef SCENEPLUGIN_INTF_PROXY_OBJECT_H
16 #define SCENEPLUGIN_INTF_PROXY_OBJECT_H
17 #include <scene_plugin/namespace.h>
18 
19 #include <meta/base/types.h>
20 #include <meta/interface/property/intf_property.h>
21 SCENE_BEGIN_NAMESPACE()
22 REGISTER_INTERFACE(IProxyObject, "9ed03ed6-7742-4512-9876-534038f3eac9")
23 class IProxyObject : public CORE_NS::IInterface {
24     META_INTERFACE(CORE_NS::IInterface, IProxyObject, InterfaceId::IProxyObject)
25 public:
26     struct PropertyPair {
27         META_NS::IProperty::ConstPtr first;
28         META_NS::IProperty::ConstPtr second;
29     };
30 
31     /**
32      * @brief List all properties bound to 3D system. The first element points to proxy property, and the second to the
33      * one that access 3D components.
34      * @return List of all properties proxied by this object.
35      */
36     virtual BASE_NS::vector<PropertyPair> ListBoundProperties() const = 0;
37 };
38 SCENE_END_NAMESPACE()
39 #endif