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 #ifndef API_3D_ECS_COMPONENTS_LAYER_DEFINES_H 17 #define API_3D_ECS_COMPONENTS_LAYER_DEFINES_H 18 19 #include <cstdint> 20 21 #include <3d/namespace.h> 22 23 CORE3D_BEGIN_NAMESPACE() 24 /** \addtogroup group_layerdefines 25 * @{ 26 */ 27 /** Layer mask bits. These enum values are for providing property metadata. */ 28 enum LayerFlagBits : uint64_t { 29 CORE_LAYER_FLAG_BIT_NONE = 0ULL, 30 CORE_LAYER_FLAG_BIT_00 = (1ULL << 0U), 31 CORE_LAYER_FLAG_BIT_01 = (1ULL << 1U), 32 CORE_LAYER_FLAG_BIT_02 = (1ULL << 2U), 33 CORE_LAYER_FLAG_BIT_03 = (1ULL << 3U), 34 CORE_LAYER_FLAG_BIT_04 = (1ULL << 4U), 35 CORE_LAYER_FLAG_BIT_05 = (1ULL << 5U), 36 CORE_LAYER_FLAG_BIT_06 = (1ULL << 6U), 37 CORE_LAYER_FLAG_BIT_07 = (1ULL << 7U), 38 CORE_LAYER_FLAG_BIT_08 = (1ULL << 8U), 39 CORE_LAYER_FLAG_BIT_09 = (1ULL << 9U), 40 CORE_LAYER_FLAG_BIT_10 = (1ULL << 10U), 41 CORE_LAYER_FLAG_BIT_11 = (1ULL << 11U), 42 CORE_LAYER_FLAG_BIT_12 = (1ULL << 12U), 43 CORE_LAYER_FLAG_BIT_13 = (1ULL << 13U), 44 CORE_LAYER_FLAG_BIT_14 = (1ULL << 14U), 45 CORE_LAYER_FLAG_BIT_15 = (1ULL << 15U), 46 CORE_LAYER_FLAG_BIT_16 = (1ULL << 16U), 47 CORE_LAYER_FLAG_BIT_17 = (1ULL << 17U), 48 CORE_LAYER_FLAG_BIT_18 = (1ULL << 18U), 49 CORE_LAYER_FLAG_BIT_19 = (1ULL << 19U), 50 CORE_LAYER_FLAG_BIT_20 = (1ULL << 20U), 51 CORE_LAYER_FLAG_BIT_21 = (1ULL << 21U), 52 CORE_LAYER_FLAG_BIT_22 = (1ULL << 22U), 53 CORE_LAYER_FLAG_BIT_23 = (1ULL << 23U), 54 CORE_LAYER_FLAG_BIT_24 = (1ULL << 24U), 55 CORE_LAYER_FLAG_BIT_25 = (1ULL << 25U), 56 CORE_LAYER_FLAG_BIT_26 = (1ULL << 26U), 57 CORE_LAYER_FLAG_BIT_27 = (1ULL << 27U), 58 CORE_LAYER_FLAG_BIT_28 = (1ULL << 28U), 59 CORE_LAYER_FLAG_BIT_29 = (1ULL << 29U), 60 CORE_LAYER_FLAG_BIT_30 = (1ULL << 30U), 61 CORE_LAYER_FLAG_BIT_31 = (1ULL << 31U), 62 CORE_LAYER_FLAG_BIT_32 = (1ULL << 32U), 63 CORE_LAYER_FLAG_BIT_33 = (1ULL << 33U), 64 CORE_LAYER_FLAG_BIT_34 = (1ULL << 34U), 65 CORE_LAYER_FLAG_BIT_35 = (1ULL << 35U), 66 CORE_LAYER_FLAG_BIT_36 = (1ULL << 36U), 67 CORE_LAYER_FLAG_BIT_37 = (1ULL << 37U), 68 CORE_LAYER_FLAG_BIT_38 = (1ULL << 38U), 69 CORE_LAYER_FLAG_BIT_39 = (1ULL << 39U), 70 CORE_LAYER_FLAG_BIT_40 = (1ULL << 40U), 71 CORE_LAYER_FLAG_BIT_41 = (1ULL << 41U), 72 CORE_LAYER_FLAG_BIT_42 = (1ULL << 42U), 73 CORE_LAYER_FLAG_BIT_43 = (1ULL << 43U), 74 CORE_LAYER_FLAG_BIT_44 = (1ULL << 44U), 75 CORE_LAYER_FLAG_BIT_45 = (1ULL << 45U), 76 CORE_LAYER_FLAG_BIT_46 = (1ULL << 46U), 77 CORE_LAYER_FLAG_BIT_47 = (1ULL << 47U), 78 CORE_LAYER_FLAG_BIT_48 = (1ULL << 48U), 79 CORE_LAYER_FLAG_BIT_49 = (1ULL << 49U), 80 CORE_LAYER_FLAG_BIT_50 = (1ULL << 50U), 81 CORE_LAYER_FLAG_BIT_51 = (1ULL << 51U), 82 CORE_LAYER_FLAG_BIT_52 = (1ULL << 52U), 83 CORE_LAYER_FLAG_BIT_53 = (1ULL << 53U), 84 CORE_LAYER_FLAG_BIT_54 = (1ULL << 54U), 85 CORE_LAYER_FLAG_BIT_55 = (1ULL << 55U), 86 CORE_LAYER_FLAG_BIT_56 = (1ULL << 56U), 87 CORE_LAYER_FLAG_BIT_57 = (1ULL << 57U), 88 CORE_LAYER_FLAG_BIT_58 = (1ULL << 58U), 89 CORE_LAYER_FLAG_BIT_59 = (1ULL << 59U), 90 CORE_LAYER_FLAG_BIT_60 = (1ULL << 60U), 91 CORE_LAYER_FLAG_BIT_61 = (1ULL << 61U), 92 CORE_LAYER_FLAG_BIT_62 = (1ULL << 62U), 93 CORE_LAYER_FLAG_BIT_63 = (1ULL << 63U), 94 CORE_LAYER_FLAG_BIT_ALL = 0xFFFFFFFFffffffff, 95 }; 96 97 /** Layer constants */ 98 struct LayerConstants { 99 /** Default layer mask */ 100 static constexpr uint64_t DEFAULT_LAYER_MASK { LayerFlagBits::CORE_LAYER_FLAG_BIT_00 }; 101 /** All/Everything layer mask */ 102 static constexpr uint64_t ALL_LAYER_MASK { LayerFlagBits::CORE_LAYER_FLAG_BIT_ALL }; 103 /** None layer mask */ 104 static constexpr uint64_t NONE_LAYER_MASK { LayerFlagBits::CORE_LAYER_FLAG_BIT_NONE }; 105 }; 106 CORE3D_END_NAMESPACE() 107 108 #endif // API_3D_ECS_COMPONENTS_LAYER_DEFINES_H 109