/* * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include <3d/ecs/components/material_component.h> #include <3d/ecs/components/environment_component.h> #include <3d/ecs/components/light_component.h> #include <3d/ecs/components/post_process_component.h> #include <3d/ecs/components/mesh_component.h> #include <3d/ecs/components/animation_component.h> #include <3d/ecs/components/animation_state_component.h> #include <3d/ecs/components/camera_component.h> using CORE3D_NS::MaterialComponent; using CORE3D_NS::EnvironmentComponent; using CORE3D_NS::LightComponent; using CORE3D_NS::MeshComponent; using TonemapConfiguration = RENDER_NS::TonemapConfiguration; using Submesh = MeshComponent::Submesh; using BASE_NS::vector; using CORE3D_NS::AnimationComponent; using CORE3D_NS::AnimationStateComponent; using CORE3D_NS::CameraComponent; CORE_BEGIN_NAMESPACE() DECLARE_PROPERTY_TYPE(CORE3D_NS::EnvironmentComponent::Background); DECLARE_PROPERTY_TYPE(CORE3D_NS::LightComponent::Type); DECLARE_PROPERTY_TYPE(MaterialComponent::Type); DECLARE_PROPERTY_TYPE(MaterialComponent::TextureInfo); DECLARE_PROPERTY_TYPE(MaterialComponent::TextureTransform); DECLARE_PROPERTY_TYPE(MaterialComponent::Shader); DECLARE_PROPERTY_TYPE(TonemapConfiguration); DECLARE_PROPERTY_TYPE(TonemapConfiguration::TonemapType); DECLARE_PROPERTY_TYPE(vector); DECLARE_PROPERTY_TYPE(AnimationComponent::PlaybackState); DECLARE_PROPERTY_TYPE(BASE_NS::vector); DECLARE_PROPERTY_TYPE(CameraComponent::RenderingPipeline); DECLARE_PROPERTY_TYPE(CameraComponent::Culling); DECLARE_PROPERTY_TYPE(CameraComponent::Projection); CORE_END_NAMESPACE() META_BEGIN_NAMESPACE() META_TYPE(CORE3D_NS::EnvironmentComponent::Background); META_TYPE(CORE3D_NS::LightComponent::Type); META_TYPE(MaterialComponent::Type) META_TYPE(MaterialComponent::Shader) META_TYPE(MaterialComponent::TextureInfo) META_TYPE(MaterialComponent::TextureTransform) META_TYPE(TonemapConfiguration); META_TYPE(TonemapConfiguration::TonemapType); META_TYPE(Submesh) META_TYPE(AnimationComponent::PlaybackState); META_TYPE(AnimationStateComponent::TrackState); META_TYPE(CameraComponent::RenderingPipeline); META_TYPE(CameraComponent::Culling); META_TYPE(CameraComponent::Projection); META_END_NAMESPACE() SCENE_BEGIN_NAMESPACE() template void RegisterEngineAccessImpl() { static_assert(CORE_NS::PropertySystem::is_defined().value); META_NS::GetObjectRegistry().GetEngineData().RegisterInternalValueAccess( META_NS::MetaType::coreType, CreateShared>()); } template void RegisterEngineArrayAccessImpl() { static_assert(CORE_NS::PropertySystem::is_defined().value); META_NS::GetObjectRegistry().GetEngineData().RegisterInternalValueAccess( META_NS::MetaType::coreType, CreateShared>()); } template void RegisterEngineAccessImplAndAny() { META_NS::GetObjectRegistry().GetPropertyRegister().RegisterAny(CreateShared>>()); RegisterEngineAccessImpl(); } template void RegisterMapEngineAccessImpl() { static_assert(CORE_NS::PropertySystem::is_defined().value); auto& r = META_NS::GetObjectRegistry(); r.GetEngineData().RegisterInternalValueAccess(META_NS::MetaType::coreType, CreateShared < META_NS::EngineInternalValueAccessImpl, AccessType>> ()); } template void UnregisterEngineAccessImpl() { META_NS::GetObjectRegistry().GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); } template void UnregisterEngineArrayAccessImpl() { META_NS::GetObjectRegistry().GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); } template void UnregisterEngineAccessImplAndAny() { UnregisterEngineAccessImpl(); META_NS::GetObjectRegistry().GetPropertyRegister().UnregisterAny(META_NS::Any::StaticGetClassId()); } void RegisterEngineAccess() { static_assert(CORE_NS::PropertySystem::is_defined().value); RegisterMapEngineAccessImpl(); RegisterMapEngineAccessImpl(); RegisterMapEngineAccessImpl(); RegisterMapEngineAccessImpl(); RegisterMapEngineAccessImpl(); RegisterMapEngineAccessImpl(); RegisterMapEngineAccessImpl(); RegisterMapEngineAccessImpl(); RegisterEngineAccessImplAndAny(); RegisterEngineAccessImplAndAny(); RegisterEngineAccessImplAndAny(); RegisterEngineAccessImpl(); RegisterEngineAccessImpl>(); RegisterEngineAccessImpl>(); RegisterEngineArrayAccessImpl(); } void UnregisterEngineAccess() { UnregisterEngineArrayAccessImpl(); UnregisterEngineAccessImpl>(); UnregisterEngineAccessImpl>(); UnregisterEngineAccessImpl(); UnregisterEngineAccessImplAndAny(); UnregisterEngineAccessImplAndAny(); UnregisterEngineAccessImplAndAny(); auto& r = META_NS::GetObjectRegistry(); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); r.GetEngineData().UnregisterInternalValueAccess(META_NS::MetaType::coreType); } SCENE_END_NAMESPACE()