cleanup + automate EntityPropertyFlags

This commit is contained in:
HifiExperiments 2024-08-07 16:33:23 -07:00
parent ff50d6c2cc
commit 926cbef606
5 changed files with 166 additions and 457 deletions

View file

@ -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()

View file

@ -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,

View file

@ -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

View file

@ -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 <PropertyFlags.h>
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<EntityPropertyList> 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

View file

@ -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 <PropertyFlags.h>
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<EntityPropertyList> 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