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 16 #include <3d/ecs/components/node_component.h> 17 18 #include "ComponentTools/base_manager.h" 19 #include "ComponentTools/base_manager.inl" 20 21 #define IMPLEMENT_MANAGER 22 #include <core/property_tools/property_macros.h> 23 24 CORE3D_BEGIN_NAMESPACE() 25 using BASE_NS::array_view; 26 using BASE_NS::countof; 27 28 using CORE_NS::BaseManager; 29 using CORE_NS::IComponentManager; 30 using CORE_NS::IEcs; 31 using CORE_NS::Property; 32 using CORE_NS::PropertyFlags; 33 34 class NodeComponentManager final : public BaseManager<NodeComponent, INodeComponentManager> { 35 BEGIN_PROPERTY(NodeComponent, componentMetaData_) 36 #include <3d/ecs/components/node_component.h> 37 END_PROPERTY(); 38 39 public: NodeComponentManager(IEcs & ecs)40 explicit NodeComponentManager(IEcs& ecs) 41 : BaseManager<NodeComponent, INodeComponentManager>(ecs, CORE_NS::GetName<NodeComponent>()) 42 {} 43 44 ~NodeComponentManager() = default; 45 PropertyCount() const46 size_t PropertyCount() const override 47 { 48 return BASE_NS::countof(componentMetaData_); 49 } 50 MetaData(size_t index) const51 const Property* MetaData(size_t index) const override 52 { 53 if (index < BASE_NS::countof(componentMetaData_)) { 54 return &componentMetaData_[index]; 55 } 56 return nullptr; 57 } 58 MetaData() const59 array_view<const Property> MetaData() const override 60 { 61 return componentMetaData_; 62 } 63 }; 64 INodeComponentManagerInstance(IEcs & ecs)65IComponentManager* INodeComponentManagerInstance(IEcs& ecs) 66 { 67 return new NodeComponentManager(ecs); 68 } 69 INodeComponentManagerDestroy(IComponentManager * instance)70void INodeComponentManagerDestroy(IComponentManager* instance) 71 { 72 delete static_cast<NodeComponentManager*>(instance); 73 } 74 CORE3D_END_NAMESPACE() 75