From 926cbef606d7249a3a0d95bed4298bf6bb515b8a Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Wed, 7 Aug 2024 16:33:23 -0700 Subject: [PATCH] cleanup + automate EntityPropertyFlags --- cmake/macros/GenerateEntityProperties.cmake | 58 ++- .../src/EntityItemGroupProperties.txt | 6 +- .../entities/src/EntityItemProperties.txt | 4 +- libraries/entities/src/EntityPropertyFlags.h | 448 ------------------ .../entities/src/EntityPropertyFlags.h.in | 107 +++++ 5 files changed, 166 insertions(+), 457 deletions(-) delete mode 100644 libraries/entities/src/EntityPropertyFlags.h create mode 100644 libraries/entities/src/EntityPropertyFlags.h.in diff --git a/cmake/macros/GenerateEntityProperties.cmake b/cmake/macros/GenerateEntityProperties.cmake index 55fef26b3c..11bc3ff0cb 100644 --- a/cmake/macros/GenerateEntityProperties.cmake +++ b/cmake/macros/GenerateEntityProperties.cmake @@ -34,6 +34,7 @@ macro(GENERATE_ENTITY_PROPERTIES) set(ENTITY_ITEM_PROPERTY_DEBUG "") set(CURRENT_TYPE "Base") list(APPEND ENTITY_TYPES ${CURRENT_TYPE}) + set(ENTITY_PROPERTY_FLAGS "") set(NON_REF_TYPES "bool" "int" "float" "uint8_t" "uint16_t" "quint16" "uint32_t" "quint32" "quint64") set(BASE_ENTITY_TYPES "Core" "Physics" "Cloning" "Scripts" "LocalProps" "Common") @@ -56,6 +57,7 @@ macro(GENERATE_ENTITY_PROPERTIES) else() set(LOCAL_PROPS false) endif() + list(APPEND ENTITY_PROPERTY_FLAGS ${LINE}) string(CONCAT ENTITY_ITEM_PROPERTY_DEFINES "${ENTITY_ITEM_PROPERTY_DEFINES}" "\t// ${LINE}\n") string(CONCAT ENTITY_ITEM_PROPERTY_CHANGED_PROPERTIES "${ENTITY_ITEM_PROPERTY_CHANGED_PROPERTIES}" "\t// ${LINE}\n") if(NEEDS_CLOSING_BRACE) @@ -118,6 +120,7 @@ macro(GENERATE_ENTITY_PROPERTIES) endif() if(NOT LINE MATCHES ".*common( |,).*") + list(APPEND ENTITY_PROPERTY_FLAGS "group:${ENTITY_PROPERTY_GROUP}") string(CONCAT ENTITY_ITEM_PROPERTY_DEFINES "${ENTITY_ITEM_PROPERTY_DEFINES}" "\tDEFINE_PROPERTY_GROUP(${ENTITY_PROPERTY_GROUP_CAPS}, ${ENTITY_PROPERTY_GROUP}, ${ENTITY_PROPERTY_GROUP_TYPE});\n") string(CONCAT ENTITY_ITEM_PROPERTY_INCLUDES "${ENTITY_ITEM_PROPERTY_INCLUDES}" "#include \"${ENTITY_PROPERTY_GROUP_TYPE}.h\"\n") string(CONCAT ENTITY_ITEM_PROPERTY_STATIC_GROUPS "${ENTITY_ITEM_PROPERTY_STATIC_GROUPS}" "${ENTITY_PROPERTY_GROUP_TYPE} EntityItemProperties::_static${ENTITY_PROPERTY_GROUP_CAPS};\n") @@ -177,12 +180,13 @@ macro(GENERATE_ENTITY_PROPERTIES) set(ENTITY_PROPERTY_MAX ${CMAKE_MATCH_1}) string(REGEX MATCH ".*fromScriptType:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" ENTITY_PROPERTY_FROM_SCRIPT_TYPE ${LINE}) set(ENTITY_PROPERTY_FROM_SCRIPT_TYPE ${CMAKE_MATCH_1}) + if (NOT ENTITY_PROPERTY_FROM_SCRIPT_TYPE) + set(ENTITY_PROPERTY_FROM_SCRIPT_TYPE ${ENTITY_PROPERTY_TYPE}) + endif() string(REGEX MATCH ".*getter:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" ENTITY_PROPERTY_GETTER ${LINE}) set(ENTITY_PROPERTY_GETTER ${CMAKE_MATCH_1}) string(REGEX MATCH ".*setter:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" ENTITY_PROPERTY_SETTER ${LINE}) set(ENTITY_PROPERTY_SETTER ${CMAKE_MATCH_1}) - string(REGEX MATCH ".*types:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" ENTITY_PROPERTY_TYPES ${LINE}) - set(ENTITY_PROPERTY_TYPES ${CMAKE_MATCH_1}) string(REGEX MATCH ".*networkGetter:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" ENTITY_PROPERTY_NETWORK_GETTER ${LINE}) set(ENTITY_PROPERTY_NETWORK_GETTER ${CMAKE_MATCH_1}) string(REGEX MATCH ".*variableNetworkGetter:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" ENTITY_VARIABLE_NETWORK_GETTER ${LINE}) @@ -208,6 +212,7 @@ macro(GENERATE_ENTITY_PROPERTIES) if(NOT LINE MATCHES ".*legacy( |,).*") if(NOT LINE MATCHES ".*common( |,).*") + list(APPEND ENTITY_PROPERTY_FLAGS ${ENTITY_PROPERTY_ENUM}) set(DEFINE_FUNC "DEFINE_PROPERTY_REF") if(LINE MATCHES ".*enum( |,).*") set(DEFINE_FUNC "DEFINE_PROPERTY_REF_ENUM") @@ -423,6 +428,7 @@ macro(GENERATE_ENTITY_PROPERTIES) else() string(REGEX MATCH ".*enum:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" GROUP_PROPERTY_ENUM ${LINE}) string(CONCAT GROUP_PROPERTY_ENUM "PROP_" ${CMAKE_MATCH_1}) + list(APPEND ${CURRENT_TYPE}_PROPERTY_FLAGS ${GROUP_PROPERTY_ENUM}) string(REGEX MATCH ".*prop:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" GROUP_PROPERTY_NAME ${LINE}) set(GROUP_PROPERTY_NAME ${CMAKE_MATCH_1}) CAPITALIZE_FIRST_LETTER(${GROUP_PROPERTY_NAME}) @@ -439,8 +445,6 @@ macro(GENERATE_ENTITY_PROPERTIES) set(GROUP_PROPERTY_GETTER ${CMAKE_MATCH_1}) string(REGEX MATCH ".*setter:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" GROUP_PROPERTY_SETTER ${LINE}) set(GROUP_PROPERTY_SETTER ${CMAKE_MATCH_1}) - string(REGEX MATCH ".*types:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" GROUP_PROPERTY_TYPES ${LINE}) - set(GROUP_PROPERTY_TYPES ${CMAKE_MATCH_1}) string(REGEX MATCH ".*networkGetter:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" GROUP_PROPERTY_NETWORK_GETTER ${LINE}) set(GROUP_PROPERTY_NETWORK_GETTER ${CMAKE_MATCH_1}) string(REGEX MATCH ".*variableNetworkGetter:+([A-Z0-9a-z_<>::\/\.\"\(\)\+]+)( |,)" GROUP_VARIABLE_NETWORK_GETTER ${LINE}) @@ -544,5 +548,51 @@ macro(GENERATE_ENTITY_PROPERTIES) list(APPEND GENERATE_ENTITIES_LIB_SRC ${CMAKE_CURRENT_BINARY_DIR}/src/${TYPE}PropertyGroup.h ${CMAKE_CURRENT_BINARY_DIR}/src/${TYPE}PropertyGroup.cpp) endforeach() + set(HAS_REACHED_COMMON_PROPS false) + set(DERIVED_PROP false) + set(DERIVED_PROP_INDEX 0) + foreach(FLAG_LINE IN LISTS ENTITY_PROPERTY_FLAGS) + string(REGEX MATCH "group:+([A-Za-z]+)" FLAG_GROUP ${FLAG_LINE}) + set(FLAG_GROUP ${CMAKE_MATCH_1}) + + if (FLAG_LINE STREQUAL "Common") + set(HAS_REACHED_COMMON_PROPS true) + elseif(NOT FLAG_GROUP AND NOT FLAG_LINE MATCHES "PROP_.*" AND HAS_REACHED_COMMON_PROPS) + set(DERIVED_PROP true) + endif() + + if (DERIVED_PROP) + if (FLAG_GROUP) + string(CONCAT ENTITY_PROPERTY_FLAGS_DERIVED "${ENTITY_PROPERTY_FLAGS_DERIVED}" "\t// ${FLAG_GROUP}\n") + foreach(GROUP_FLAG IN LISTS ${FLAG_GROUP}_PROPERTY_FLAGS) + string(CONCAT ENTITY_PROPERTY_FLAGS_DERIVED "${ENTITY_PROPERTY_FLAGS_DERIVED}" "\t${GROUP_FLAG} = PROP_DERIVED_${DERIVED_PROP_INDEX},\n") + MATH(EXPR DERIVED_PROP_INDEX "${DERIVED_PROP_INDEX}+1") + endforeach() + elseif(FLAG_LINE MATCHES "PROP_.*") + string(CONCAT ENTITY_PROPERTY_FLAGS_DERIVED "${ENTITY_PROPERTY_FLAGS_DERIVED}" "\t${FLAG_LINE} = PROP_DERIVED_${DERIVED_PROP_INDEX},\n") + MATH(EXPR DERIVED_PROP_INDEX "${DERIVED_PROP_INDEX}+1") + else() + string(CONCAT ENTITY_PROPERTY_FLAGS_DERIVED "${ENTITY_PROPERTY_FLAGS_DERIVED}" "\t// ${FLAG_LINE}\n") + set(DERIVED_PROP_INDEX 0) + endif() + else() + if (FLAG_GROUP) + string(CONCAT ENTITY_PROPERTY_FLAGS_COMMON "${ENTITY_PROPERTY_FLAGS_COMMON}" "\t// ${FLAG_GROUP}\n") + foreach(GROUP_FLAG IN LISTS ${FLAG_GROUP}_PROPERTY_FLAGS) + string(CONCAT ENTITY_PROPERTY_FLAGS_COMMON "${ENTITY_PROPERTY_FLAGS_COMMON}" "\t${GROUP_FLAG},\n") + endforeach() + elseif(FLAG_LINE MATCHES "PROP_.*") + string(CONCAT ENTITY_PROPERTY_FLAGS_COMMON "${ENTITY_PROPERTY_FLAGS_COMMON}" "\t${FLAG_LINE},\n") + else() + string(CONCAT ENTITY_PROPERTY_FLAGS_COMMON "${ENTITY_PROPERTY_FLAGS_COMMON}" "\t// ${FLAG_LINE}\n") + endif() + endif() + endforeach() + + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/src/EntityPropertyFlags.h.in + ${CMAKE_CURRENT_BINARY_DIR}/src/EntityPropertyFlags.h) + list(APPEND GENERATE_ENTITIES_LIB_SRC ${CMAKE_CURRENT_BINARY_DIR}/src/EntityPropertyFlags.h) + message(STATUS "Entity property processing end") endmacro() diff --git a/libraries/entities/src/EntityItemGroupProperties.txt b/libraries/entities/src/EntityItemGroupProperties.txt index 46051c76cb..12ad010285 100644 --- a/libraries/entities/src/EntityItemGroupProperties.txt +++ b/libraries/entities/src/EntityItemGroupProperties.txt @@ -53,9 +53,9 @@ enum:HAZE_ALTITUDE_EFFECT prop:hazeAltitudeEffect type:bool default:false, enum:HAZE_CEILING prop:hazeCeiling type:float default:INITIAL_HAZE_BASE_REFERENCE+INITIAL_HAZE_HEIGHT, enum:HAZE_BASE_REF prop:hazeBaseRef type:float default:INITIAL_HAZE_BASE_REFERENCE, enum:HAZE_BACKGROUND_BLEND prop:hazeBackgroundBlend type:float default:INITIAL_HAZE_BACKGROUND_BLEND, -enum:HAZE_ALTITUDE_EFFECT prop:hazeAttenuateKeyLight type:bool default:false, -enum:HAZE_CEILING prop:hazeKeyLightRange type:float default:INITIAL_KEY_LIGHT_RANGE, -enum:HAZE_BASE_REF prop:hazeKeyLightAltitude type:float default:INITIAL_KEY_LIGHT_ALTITUDE, +enum:PROP_HAZE_ATTENUATE_KEYLIGHT prop:hazeAttenuateKeyLight type:bool default:false, +enum:PROP_HAZE_KEYLIGHT_RANGE prop:hazeKeyLightRange type:float default:INITIAL_KEY_LIGHT_RANGE, +enum:PROP_HAZE_KEYLIGHT_ALTITUDE prop:hazeKeyLightAltitude type:float default:INITIAL_KEY_LIGHT_ALTITUDE, bloom enum:BLOOM_INTENSITY prop:bloomIntensity type:float default:INITIAL_BLOOM_INTENSITY, enum:BLOOM_THRESHOLD prop:bloomThreshold type:float default:INITIAL_BLOOM_THRESHOLD, diff --git a/libraries/entities/src/EntityItemProperties.txt b/libraries/entities/src/EntityItemProperties.txt index 9c631b9fef..c4c9d5f0a3 100644 --- a/libraries/entities/src/EntityItemProperties.txt +++ b/libraries/entities/src/EntityItemProperties.txt @@ -41,11 +41,11 @@ enum:RESTITUTION prop:restitution type:float default:ENTITY_ITEM_DEFAULT_RESTITU enum:FRICTION prop:friction type:float default:ENTITY_ITEM_DEFAULT_FRICTION min:ENTITY_ITEM_MIN_FRICTION max:ENTITY_ITEM_MAX_FRICTION, enum:LIFETIME prop:lifetime type:float default:ENTITY_ITEM_DEFAULT_LIFETIME debugString:"seconds", enum:COLLISIONLESS prop:collisionless type:bool default:ENTITY_ITEM_DEFAULT_COLLISIONLESS, -enum:COLLISIONLESS prop:ignoreForCollisions proxy:collisionless type:bool fromScriptType:bool legacy getter:getCollisionless setter:setCollisionless, +enum:COLLISIONLESS prop:ignoreForCollisions proxy:collisionless type:bool legacy getter:getCollisionless setter:setCollisionless, enum:COLLISION_MASK prop:collisionMask type:uint16_t default:ENTITY_COLLISION_MASK_DEFAULT, enum:COLLISION_MASK prop:collidesWith proxy:collisionMask type:CollisionMask proxyType:uint16_t enum legacy getter:getCollisionMaskAsString, enum:DYNAMIC prop:dynamic type:bool default:ENTITY_ITEM_DEFAULT_DYNAMIC, -enum:DYNAMIC prop:collisionWillMove proxy:dynamic type:bool fromScriptType:bool legacy getter:getDynamic setter:setDynamic, +enum:DYNAMIC prop:collisionWillMove proxy:dynamic type:bool legacy getter:getDynamic setter:setDynamic, enum:COLLISION_SOUND_URL prop:collisionSoundURL type:QString default:ENTITY_ITEM_DEFAULT_COLLISION_SOUND_URL urlPermission, enum:ACTION_DATA prop:actionData type:QByteArray default:QByteArray() readOnly inherited variableCopyGetter:getDynamicData variableCopySetter:setDynamicData variableNetworkGetter:getDynamicData() variableNetworkSetter:setDynamicData debugGetter:getDynamicData(), Cloning diff --git a/libraries/entities/src/EntityPropertyFlags.h b/libraries/entities/src/EntityPropertyFlags.h deleted file mode 100644 index d5de3b2118..0000000000 --- a/libraries/entities/src/EntityPropertyFlags.h +++ /dev/null @@ -1,448 +0,0 @@ -// -// EntityPropertyFlags.h -// libraries/entities/src -// -// Created by Brad Hefta-Gaub on 12/4/13. -// Copyright 2013 High Fidelity, Inc. -// Copyright 2020 Vircadia contributors. -// Copyright 2023 Overte e.V. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#ifndef hifi_EntityPropertyFlags_h -#define hifi_EntityPropertyFlags_h - -#include - -enum EntityPropertyList { - PROP_PAGED_PROPERTY, - PROP_CUSTOM_PROPERTIES_INCLUDED, - - // Core properties - PROP_SIMULATION_OWNER, - PROP_PARENT_ID, - PROP_PARENT_JOINT_INDEX, - PROP_VISIBLE, - PROP_NAME, - PROP_LOCKED, - PROP_USER_DATA, - PROP_PRIVATE_USER_DATA, - PROP_HREF, - PROP_DESCRIPTION, - PROP_POSITION, - PROP_DIMENSIONS, - PROP_ROTATION, - PROP_REGISTRATION_POINT, - PROP_CREATED, - PROP_LAST_EDITED_BY, - PROP_ENTITY_HOST_TYPE, // not sent over the wire - PROP_OWNING_AVATAR_ID, // not sent over the wire - PROP_QUERY_AA_CUBE, - PROP_CAN_CAST_SHADOW, - PROP_VISIBLE_IN_SECONDARY_CAMERA, // not sent over the wire - PROP_RENDER_LAYER, - PROP_PRIMITIVE_MODE, - PROP_IGNORE_PICK_INTERSECTION, - PROP_RENDER_WITH_ZONES, - PROP_BILLBOARD_MODE, - PROP_TAGS, - // Grab - PROP_GRAB_GRABBABLE, - PROP_GRAB_KINEMATIC, - PROP_GRAB_FOLLOWS_CONTROLLER, - PROP_GRAB_TRIGGERABLE, - PROP_GRAB_EQUIPPABLE, - PROP_GRAB_DELEGATE_TO_PARENT, - PROP_GRAB_LEFT_EQUIPPABLE_POSITION_OFFSET, - PROP_GRAB_LEFT_EQUIPPABLE_ROTATION_OFFSET, - PROP_GRAB_RIGHT_EQUIPPABLE_POSITION_OFFSET, - PROP_GRAB_RIGHT_EQUIPPABLE_ROTATION_OFFSET, - PROP_GRAB_EQUIPPABLE_INDICATOR_URL, - PROP_GRAB_EQUIPPABLE_INDICATOR_SCALE, - PROP_GRAB_EQUIPPABLE_INDICATOR_OFFSET, - PROP_MIRROR_MODE, - PROP_PORTAL_EXIT_ID, - - // Physics - PROP_DENSITY, - PROP_VELOCITY, - PROP_ANGULAR_VELOCITY, - PROP_GRAVITY, - PROP_ACCELERATION, - PROP_DAMPING, - PROP_ANGULAR_DAMPING, - PROP_RESTITUTION, - PROP_FRICTION, - PROP_LIFETIME, - PROP_COLLISIONLESS, - PROP_COLLISION_MASK, - PROP_DYNAMIC, - PROP_COLLISION_SOUND_URL, - PROP_ACTION_DATA, - - // Cloning - PROP_CLONEABLE, - PROP_CLONE_LIFETIME, - PROP_CLONE_LIMIT, - PROP_CLONE_DYNAMIC, - PROP_CLONE_AVATAR_ENTITY, - PROP_CLONE_ORIGIN_ID, - - // Scripts - PROP_SCRIPT, - PROP_SCRIPT_TIMESTAMP, - PROP_SERVER_SCRIPTS, - - // Used to convert values to and from scripts - PROP_LOCAL_POSITION, - PROP_LOCAL_ROTATION, - PROP_LOCAL_VELOCITY, - PROP_LOCAL_ANGULAR_VELOCITY, - PROP_LOCAL_DIMENSIONS, - - // These properties are used by multiple subtypes but aren't in the base EntityItem - PROP_SHAPE_TYPE, - PROP_COMPOUND_SHAPE_URL, - PROP_COLOR, - PROP_ALPHA, - PROP_UNLIT, - PROP_PULSE_MIN, - PROP_PULSE_MAX, - PROP_PULSE_PERIOD, - PROP_PULSE_COLOR_MODE, - PROP_PULSE_ALPHA_MODE, - PROP_TEXTURES, - - //////////////////////////////////////////////////////////////////////////////////////////////////// - // ATTENTION: add new shared EntityItem properties to the list ABOVE this line - //////////////////////////////////////////////////////////////////////////////////////////////////// - - // We need as many of these as the number of unique properties of a derived EntityItem class - PROP_DERIVED_0, - PROP_DERIVED_1, - PROP_DERIVED_2, - PROP_DERIVED_3, - PROP_DERIVED_4, - PROP_DERIVED_5, - PROP_DERIVED_6, - PROP_DERIVED_7, - PROP_DERIVED_8, - PROP_DERIVED_9, - PROP_DERIVED_10, - PROP_DERIVED_11, - PROP_DERIVED_12, - PROP_DERIVED_13, - PROP_DERIVED_14, - PROP_DERIVED_15, - PROP_DERIVED_16, - PROP_DERIVED_17, - PROP_DERIVED_18, - PROP_DERIVED_19, - PROP_DERIVED_20, - PROP_DERIVED_21, - PROP_DERIVED_22, - PROP_DERIVED_23, - PROP_DERIVED_24, - PROP_DERIVED_25, - PROP_DERIVED_26, - PROP_DERIVED_27, - PROP_DERIVED_28, - PROP_DERIVED_29, - PROP_DERIVED_30, - PROP_DERIVED_31, - PROP_DERIVED_32, - PROP_DERIVED_33, - PROP_DERIVED_34, - PROP_DERIVED_35, - PROP_DERIVED_36, - PROP_DERIVED_37, - PROP_DERIVED_38, - PROP_DERIVED_39, - PROP_DERIVED_40, - PROP_DERIVED_41, - PROP_DERIVED_42, - PROP_DERIVED_43, - PROP_DERIVED_44, - PROP_DERIVED_45, - PROP_DERIVED_46, - PROP_DERIVED_47, - PROP_DERIVED_48, - PROP_DERIVED_49, - PROP_DERIVED_50, - PROP_DERIVED_51, - PROP_DERIVED_52, - PROP_DERIVED_53, - PROP_DERIVED_54, - PROP_DERIVED_55, - PROP_DERIVED_56, - PROP_DERIVED_57, - - PROP_AFTER_LAST_ITEM, - - //////////////////////////////////////////////////////////////////////////////////////////////////// - // WARNING! Do not add props here unless you intentionally mean to reuse PROP_DERIVED_X indexes - // - // These properties intentionally reuse the enum values for other properties which will never overlap with each other. We do this so that we don't have to expand - // the size of the properties bitflags mask - // - // Only add properties here that are only used by one subclass. Otherwise, they should go above to prevent collisions - - // Particles - PROP_MAX_PARTICLES = PROP_DERIVED_0, - PROP_LIFESPAN = PROP_DERIVED_1, - PROP_EMITTING_PARTICLES = PROP_DERIVED_2, - PROP_EMIT_RATE = PROP_DERIVED_3, - PROP_EMIT_SPEED = PROP_DERIVED_4, - PROP_SPEED_SPREAD = PROP_DERIVED_5, - PROP_EMIT_ORIENTATION = PROP_DERIVED_6, - PROP_EMIT_DIMENSIONS = PROP_DERIVED_7, - PROP_ACCELERATION_SPREAD = PROP_DERIVED_8, - PROP_POLAR_START = PROP_DERIVED_9, - PROP_POLAR_FINISH = PROP_DERIVED_10, - PROP_AZIMUTH_START = PROP_DERIVED_11, - PROP_AZIMUTH_FINISH = PROP_DERIVED_12, - PROP_EMIT_RADIUS_START = PROP_DERIVED_13, - PROP_EMIT_ACCELERATION = PROP_DERIVED_14, - PROP_PARTICLE_RADIUS = PROP_DERIVED_15, - PROP_RADIUS_SPREAD = PROP_DERIVED_16, - PROP_RADIUS_START = PROP_DERIVED_17, - PROP_RADIUS_FINISH = PROP_DERIVED_18, - PROP_COLOR_SPREAD = PROP_DERIVED_19, - PROP_COLOR_START = PROP_DERIVED_20, - PROP_COLOR_FINISH = PROP_DERIVED_21, - PROP_ALPHA_SPREAD = PROP_DERIVED_22, - PROP_ALPHA_START = PROP_DERIVED_23, - PROP_ALPHA_FINISH = PROP_DERIVED_24, - PROP_EMITTER_SHOULD_TRAIL = PROP_DERIVED_25, - PROP_PARTICLE_SPIN = PROP_DERIVED_26, - PROP_SPIN_START = PROP_DERIVED_27, - PROP_SPIN_FINISH = PROP_DERIVED_28, - PROP_SPIN_SPREAD = PROP_DERIVED_29, - PROP_PARTICLE_ROTATE_WITH_ENTITY = PROP_DERIVED_30, - - // Procedural Particles - PROP_PROCEDURAL_PARTICLE_NUM_PARTICLES = PROP_DERIVED_0, - PROP_PROCEDURAL_PARTICLE_NUM_TRIS_PER = PROP_DERIVED_1, - PROP_PROCEDURAL_PARTICLE_NUM_UPDATE_PROPS = PROP_DERIVED_2, - PROP_PROCEDURAL_PARTICLE_TRANSPARENT = PROP_DERIVED_3, - PROP_PROCEDURAL_PARTCILE_UPDATE_DATA = PROP_DERIVED_4, - PROP_PROCEDURAL_PARTCILE_RENDER_DATA = PROP_DERIVED_5, - - // Model - PROP_MODEL_URL = PROP_DERIVED_0, - PROP_MODEL_SCALE = PROP_DERIVED_1, - PROP_JOINT_ROTATIONS_SET = PROP_DERIVED_2, - PROP_JOINT_ROTATIONS = PROP_DERIVED_3, - PROP_JOINT_TRANSLATIONS_SET = PROP_DERIVED_4, - PROP_JOINT_TRANSLATIONS = PROP_DERIVED_5, - PROP_RELAY_PARENT_JOINTS = PROP_DERIVED_6, - PROP_GROUP_CULLED = PROP_DERIVED_7, - PROP_BLENDSHAPE_COEFFICIENTS = PROP_DERIVED_8, - PROP_USE_ORIGINAL_PIVOT = PROP_DERIVED_9, - PROP_LOAD_PRIORITY = PROP_DERIVED_10, - // Animation - PROP_ANIMATION_URL = PROP_DERIVED_11, - PROP_ANIMATION_ALLOW_TRANSLATION = PROP_DERIVED_12, - PROP_ANIMATION_FPS = PROP_DERIVED_13, - PROP_ANIMATION_FRAME_INDEX = PROP_DERIVED_14, - PROP_ANIMATION_PLAYING = PROP_DERIVED_15, - PROP_ANIMATION_LOOP = PROP_DERIVED_16, - PROP_ANIMATION_FIRST_FRAME = PROP_DERIVED_17, - PROP_ANIMATION_LAST_FRAME = PROP_DERIVED_18, - PROP_ANIMATION_HOLD = PROP_DERIVED_19, - PROP_ANIMATION_SMOOTH_FRAMES = PROP_DERIVED_20, - - // Light - PROP_IS_SPOTLIGHT = PROP_DERIVED_0, - PROP_INTENSITY = PROP_DERIVED_1, - PROP_EXPONENT = PROP_DERIVED_2, - PROP_CUTOFF = PROP_DERIVED_3, - PROP_FALLOFF_RADIUS = PROP_DERIVED_4, - - // Text - PROP_TEXT = PROP_DERIVED_0, - PROP_LINE_HEIGHT = PROP_DERIVED_1, - PROP_TEXT_COLOR = PROP_DERIVED_2, - PROP_TEXT_ALPHA = PROP_DERIVED_3, - PROP_BACKGROUND_COLOR = PROP_DERIVED_4, - PROP_BACKGROUND_ALPHA = PROP_DERIVED_5, - PROP_LEFT_MARGIN = PROP_DERIVED_6, - PROP_RIGHT_MARGIN = PROP_DERIVED_7, - PROP_TOP_MARGIN = PROP_DERIVED_8, - PROP_BOTTOM_MARGIN = PROP_DERIVED_9, - PROP_FONT = PROP_DERIVED_10, - PROP_TEXT_EFFECT = PROP_DERIVED_11, - PROP_TEXT_EFFECT_COLOR = PROP_DERIVED_12, - PROP_TEXT_EFFECT_THICKNESS = PROP_DERIVED_13, - PROP_TEXT_ALIGNMENT = PROP_DERIVED_14, - - // Zone - // Keylight - PROP_KEY_LIGHT_MODE = PROP_DERIVED_0, - PROP_KEYLIGHT_COLOR = PROP_DERIVED_1, - PROP_KEYLIGHT_INTENSITY = PROP_DERIVED_2, - PROP_KEYLIGHT_DIRECTION = PROP_DERIVED_3, - PROP_KEYLIGHT_CAST_SHADOW = PROP_DERIVED_4, - PROP_KEYLIGHT_SHADOW_BIAS = PROP_DERIVED_5, - PROP_KEYLIGHT_SHADOW_MAX_DISTANCE = PROP_DERIVED_6, - // Ambient light - PROP_AMBIENT_LIGHT_MODE = PROP_DERIVED_7, - PROP_AMBIENT_LIGHT_INTENSITY = PROP_DERIVED_8, - PROP_AMBIENT_LIGHT_URL = PROP_DERIVED_9, - PROP_AMBIENT_LIGHT_COLOR = PROP_DERIVED_10, - // Skybox - PROP_SKYBOX_MODE = PROP_DERIVED_11, - PROP_SKYBOX_COLOR = PROP_DERIVED_12, - PROP_SKYBOX_URL = PROP_DERIVED_13, - // Haze - PROP_HAZE_MODE = PROP_DERIVED_14, - PROP_HAZE_RANGE = PROP_DERIVED_15, - PROP_HAZE_COLOR = PROP_DERIVED_16, - PROP_HAZE_GLARE_COLOR = PROP_DERIVED_17, - PROP_HAZE_ENABLE_GLARE = PROP_DERIVED_18, - PROP_HAZE_GLARE_ANGLE = PROP_DERIVED_19, - PROP_HAZE_ALTITUDE_EFFECT = PROP_DERIVED_20, - PROP_HAZE_CEILING = PROP_DERIVED_21, - PROP_HAZE_BASE_REF = PROP_DERIVED_22, - PROP_HAZE_BACKGROUND_BLEND = PROP_DERIVED_23, - PROP_HAZE_ATTENUATE_KEYLIGHT = PROP_DERIVED_24, - PROP_HAZE_KEYLIGHT_RANGE = PROP_DERIVED_25, - PROP_HAZE_KEYLIGHT_ALTITUDE = PROP_DERIVED_26, - // Bloom - PROP_BLOOM_MODE = PROP_DERIVED_27, - PROP_BLOOM_INTENSITY = PROP_DERIVED_28, - PROP_BLOOM_THRESHOLD = PROP_DERIVED_29, - PROP_BLOOM_SIZE = PROP_DERIVED_30, - PROP_FLYING_ALLOWED = PROP_DERIVED_31, - PROP_GHOSTING_ALLOWED = PROP_DERIVED_32, - PROP_FILTER_URL = PROP_DERIVED_33, - // Avatar priority - PROP_AVATAR_PRIORITY = PROP_DERIVED_34, - // Screen-sharing - PROP_SCREENSHARE = PROP_DERIVED_35, - // Audio - PROP_REVERB_ENABLED = PROP_DERIVED_36, - PROP_REVERB_TIME = PROP_DERIVED_37, - PROP_REVERB_WET_LEVEL = PROP_DERIVED_38, - PROP_LISTENER_ZONES = PROP_DERIVED_39, - PROP_LISTENER_ATTENUATION_COEFFICIENTS = PROP_DERIVED_40, - // Tonemapping - PROP_TONEMAPPING_MODE = PROP_DERIVED_41, - PROP_TONEMAPPING_CURVE = PROP_DERIVED_42, - PROP_TONEMAPPING_EXPOSURE = PROP_DERIVED_43, - // Ambient Occlusion - PROP_AMBIENT_OCCLUSION_MODE = PROP_DERIVED_44, - PROP_AMBIENT_OCCLUSION_TECHNIQUE = PROP_DERIVED_45, - PROP_AMBIENT_OCCLUSION_JITTER = PROP_DERIVED_46, - PROP_AMBIENT_OCCLUSION_RESOLUTION_LEVEL = PROP_DERIVED_47, - PROP_AMBIENT_OCCLUSION_EDGE_SHARPNESS = PROP_DERIVED_48, - PROP_AMBIENT_OCCLUSION_BLUR_RADIUS = PROP_DERIVED_49, - PROP_AMBIENT_OCCLUSION_AO_RADIUS = PROP_DERIVED_50, - PROP_AMBIENT_OCCLUSION_AO_OBSCURANCE_LEVEL = PROP_DERIVED_51, - PROP_AMBIENT_OCCLUSION_AO_FALLOFF_ANGLE = PROP_DERIVED_52, - PROP_AMBIENT_OCCLUSION_AO_SAMPLING_AMOUNT = PROP_DERIVED_53, - PROP_AMBIENT_OCCLUSION_SSAO_NUM_SPIRAL_TURNS = PROP_DERIVED_54, - - // Polyvox - PROP_VOXEL_VOLUME_SIZE = PROP_DERIVED_0, - PROP_VOXEL_DATA = PROP_DERIVED_1, - PROP_VOXEL_SURFACE_STYLE = PROP_DERIVED_2, - PROP_X_TEXTURE_URL = PROP_DERIVED_3, - PROP_Y_TEXTURE_URL = PROP_DERIVED_4, - PROP_Z_TEXTURE_URL = PROP_DERIVED_5, - PROP_X_N_NEIGHBOR_ID = PROP_DERIVED_6, - PROP_Y_N_NEIGHBOR_ID = PROP_DERIVED_7, - PROP_Z_N_NEIGHBOR_ID = PROP_DERIVED_8, - PROP_X_P_NEIGHBOR_ID = PROP_DERIVED_9, - PROP_Y_P_NEIGHBOR_ID = PROP_DERIVED_10, - PROP_Z_P_NEIGHBOR_ID = PROP_DERIVED_11, - - // Web - PROP_SOURCE_URL = PROP_DERIVED_0, - PROP_DPI = PROP_DERIVED_1, - PROP_SCRIPT_URL = PROP_DERIVED_2, - PROP_MAX_FPS = PROP_DERIVED_3, - PROP_INPUT_MODE = PROP_DERIVED_4, - PROP_WANTS_KEYBOARD_FOCUS = PROP_DERIVED_5, - PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT = PROP_DERIVED_6, - PROP_WEB_USE_BACKGROUND = PROP_DERIVED_7, - PROP_USER_AGENT = PROP_DERIVED_8, - - // Polyline - PROP_LINE_POINTS = PROP_DERIVED_0, - PROP_STROKE_WIDTHS = PROP_DERIVED_1, - PROP_STROKE_NORMALS = PROP_DERIVED_2, - PROP_STROKE_COLORS = PROP_DERIVED_3, - PROP_IS_UV_MODE_STRETCH = PROP_DERIVED_4, - PROP_LINE_GLOW = PROP_DERIVED_5, - PROP_LINE_FACE_CAMERA = PROP_DERIVED_6, - - // Shape - PROP_SHAPE = PROP_DERIVED_0, - - // Material - PROP_MATERIAL_URL = PROP_DERIVED_0, - PROP_MATERIAL_MAPPING_MODE = PROP_DERIVED_1, - PROP_MATERIAL_PRIORITY = PROP_DERIVED_2, - PROP_PARENT_MATERIAL_NAME = PROP_DERIVED_3, - PROP_MATERIAL_MAPPING_POS = PROP_DERIVED_4, - PROP_MATERIAL_MAPPING_SCALE = PROP_DERIVED_5, - PROP_MATERIAL_MAPPING_ROT = PROP_DERIVED_6, - PROP_MATERIAL_DATA = PROP_DERIVED_7, - PROP_MATERIAL_REPEAT = PROP_DERIVED_8, - - // Image - PROP_IMAGE_URL = PROP_DERIVED_0, - PROP_EMISSIVE = PROP_DERIVED_1, - PROP_KEEP_ASPECT_RATIO = PROP_DERIVED_2, - PROP_SUB_IMAGE = PROP_DERIVED_3, - - // Grid - PROP_GRID_FOLLOW_CAMERA = PROP_DERIVED_0, - PROP_MAJOR_GRID_EVERY = PROP_DERIVED_1, - PROP_MINOR_GRID_EVERY = PROP_DERIVED_2, - - // Gizmo - PROP_GIZMO_TYPE = PROP_DERIVED_0, - // Ring - PROP_START_ANGLE = PROP_DERIVED_1, - PROP_END_ANGLE = PROP_DERIVED_2, - PROP_INNER_RADIUS = PROP_DERIVED_3, - PROP_INNER_START_COLOR = PROP_DERIVED_4, - PROP_INNER_END_COLOR = PROP_DERIVED_5, - PROP_OUTER_START_COLOR = PROP_DERIVED_6, - PROP_OUTER_END_COLOR = PROP_DERIVED_7, - PROP_INNER_START_ALPHA = PROP_DERIVED_8, - PROP_INNER_END_ALPHA = PROP_DERIVED_9, - PROP_OUTER_START_ALPHA = PROP_DERIVED_10, - PROP_OUTER_END_ALPHA = PROP_DERIVED_11, - PROP_HAS_TICK_MARKS = PROP_DERIVED_12, - PROP_MAJOR_TICK_MARKS_ANGLE = PROP_DERIVED_13, - PROP_MINOR_TICK_MARKS_ANGLE = PROP_DERIVED_14, - PROP_MAJOR_TICK_MARKS_LENGTH = PROP_DERIVED_15, - PROP_MINOR_TICK_MARKS_LENGTH = PROP_DERIVED_16, - PROP_MAJOR_TICK_MARKS_COLOR = PROP_DERIVED_17, - PROP_MINOR_TICK_MARKS_COLOR = PROP_DERIVED_18, - - // Sound - PROP_SOUND_URL = PROP_DERIVED_0, - PROP_SOUND_VOLUME = PROP_DERIVED_1, - PROP_SOUND_TIME_OFFSET = PROP_DERIVED_2, - PROP_SOUND_PITCH = PROP_DERIVED_3, - PROP_SOUND_PLAYING = PROP_DERIVED_4, - PROP_SOUND_POSITIONAL = PROP_DERIVED_5, - PROP_SOUND_LOOP = PROP_DERIVED_6, - PROP_SOUND_LOCAL_ONLY = PROP_DERIVED_7, - - // WARNING!!! DO NOT ADD PROPS_xxx here unless you really really meant to.... Add them UP above -}; - -typedef PropertyFlags EntityPropertyFlags; - -// this is set at the top of EntityItemProperties.cpp to PROP_AFTER_LAST_ITEM - 1. PROP_AFTER_LAST_ITEM is always -// one greater than the last item property due to the enum's auto-incrementing. -extern EntityPropertyList PROP_LAST_ITEM; - -#endif // hifi_EntityPropertyFlags_h diff --git a/libraries/entities/src/EntityPropertyFlags.h.in b/libraries/entities/src/EntityPropertyFlags.h.in new file mode 100644 index 0000000000..f689845478 --- /dev/null +++ b/libraries/entities/src/EntityPropertyFlags.h.in @@ -0,0 +1,107 @@ +// +// EntityPropertyFlags.h +// libraries/entities/src +// +// Created by Brad Hefta-Gaub on 12/4/13. +// Copyright 2013 High Fidelity, Inc. +// Copyright 2020 Vircadia contributors. +// Copyright 2023 Overte e.V. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_EntityPropertyFlags_h +#define hifi_EntityPropertyFlags_h + +#include + +enum EntityPropertyList { + PROP_PAGED_PROPERTY, + PROP_CUSTOM_PROPERTIES_INCLUDED, + +@ENTITY_PROPERTY_FLAGS_COMMON@ + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // ATTENTION: add new shared EntityItem properties to the list ABOVE this line + //////////////////////////////////////////////////////////////////////////////////////////////////// + + // We need as many of these as the number of unique properties of a derived EntityItem class + PROP_DERIVED_0, + PROP_DERIVED_1, + PROP_DERIVED_2, + PROP_DERIVED_3, + PROP_DERIVED_4, + PROP_DERIVED_5, + PROP_DERIVED_6, + PROP_DERIVED_7, + PROP_DERIVED_8, + PROP_DERIVED_9, + PROP_DERIVED_10, + PROP_DERIVED_11, + PROP_DERIVED_12, + PROP_DERIVED_13, + PROP_DERIVED_14, + PROP_DERIVED_15, + PROP_DERIVED_16, + PROP_DERIVED_17, + PROP_DERIVED_18, + PROP_DERIVED_19, + PROP_DERIVED_20, + PROP_DERIVED_21, + PROP_DERIVED_22, + PROP_DERIVED_23, + PROP_DERIVED_24, + PROP_DERIVED_25, + PROP_DERIVED_26, + PROP_DERIVED_27, + PROP_DERIVED_28, + PROP_DERIVED_29, + PROP_DERIVED_30, + PROP_DERIVED_31, + PROP_DERIVED_32, + PROP_DERIVED_33, + PROP_DERIVED_34, + PROP_DERIVED_35, + PROP_DERIVED_36, + PROP_DERIVED_37, + PROP_DERIVED_38, + PROP_DERIVED_39, + PROP_DERIVED_40, + PROP_DERIVED_41, + PROP_DERIVED_42, + PROP_DERIVED_43, + PROP_DERIVED_44, + PROP_DERIVED_45, + PROP_DERIVED_46, + PROP_DERIVED_47, + PROP_DERIVED_48, + PROP_DERIVED_49, + PROP_DERIVED_50, + PROP_DERIVED_51, + PROP_DERIVED_52, + PROP_DERIVED_53, + PROP_DERIVED_54, + + PROP_AFTER_LAST_ITEM, + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // WARNING! Do not add props here unless you intentionally mean to reuse PROP_DERIVED_X indexes + // + // These properties intentionally reuse the enum values for other properties which will never overlap with each other. We do this so that we don't have to expand + // the size of the properties bitflags mask + // + // Only add properties here that are only used by one subclass. Otherwise, they should go above to prevent collisions + +@ENTITY_PROPERTY_FLAGS_DERIVED@ + + // WARNING!!! DO NOT ADD PROPS_xxx here unless you really really meant to.... Add them UP above +}; + +typedef PropertyFlags EntityPropertyFlags; + +// this is set at the top of EntityItemProperties.cpp to PROP_AFTER_LAST_ITEM - 1. PROP_AFTER_LAST_ITEM is always +// one greater than the last item property due to the enum's auto-incrementing. +extern EntityPropertyList PROP_LAST_ITEM; + +#endif // hifi_EntityPropertyFlags_h