Merge pull request #1242 from HifiExperiments/entityProps
fix noNetwork and add documentation for automated entity property files
This commit is contained in:
commit
9b7b5a2bea
@ -51,11 +51,16 @@ macro(GENERATE_ENTITY_PROPERTIES)
|
|||||||
file(STRINGS src/EntityItemProperties.txt ENTITY_PROPERTIES_FILE)
|
file(STRINGS src/EntityItemProperties.txt ENTITY_PROPERTIES_FILE)
|
||||||
while(ENTITY_PROPERTIES_FILE)
|
while(ENTITY_PROPERTIES_FILE)
|
||||||
list(POP_FRONT ENTITY_PROPERTIES_FILE LINE)
|
list(POP_FRONT ENTITY_PROPERTIES_FILE LINE)
|
||||||
|
# Handle both trailing comments and full line comments
|
||||||
|
string(REGEX REPLACE " #.*$" "" LINE ${LINE})
|
||||||
|
string(REGEX REPLACE "#.*$" "" LINE ${LINE})
|
||||||
|
|
||||||
# Single-word lines represent sections of properties, which can be base properties like "Physics" or
|
if(LINE STREQUAL "")
|
||||||
# Entity types like "Model". We use the section names to generate comments, and also handle indentation
|
continue()
|
||||||
# and opening/closing braces.
|
elseif(NOT LINE MATCHES ".*:.*")
|
||||||
if(NOT LINE MATCHES ".*:.*")
|
# Single-word lines represent sections of properties, which can be base properties like "Physics" or
|
||||||
|
# Entity types like "Model". We use the section names to generate comments, and also handle indentation
|
||||||
|
# and opening/closing braces.
|
||||||
if(LINE STREQUAL "Common")
|
if(LINE STREQUAL "Common")
|
||||||
set(COMMON_PROPS true)
|
set(COMMON_PROPS true)
|
||||||
else()
|
else()
|
||||||
@ -108,11 +113,11 @@ macro(GENERATE_ENTITY_PROPERTIES)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT COMMON_PROPS)
|
if (NOT COMMON_PROPS)
|
||||||
string(CONCAT ${CURRENT_TYPE}_REQUESTED_PROPS "${${CURRENT_TYPE}_REQUESTED_PROPS}" "\t// ${LINE}\n")
|
|
||||||
string(CONCAT ${CURRENT_TYPE}_ENTITY_APPEND "${${CURRENT_TYPE}_ENTITY_APPEND}" "\t\t// ${LINE}\n")
|
string(CONCAT ${CURRENT_TYPE}_ENTITY_APPEND "${${CURRENT_TYPE}_ENTITY_APPEND}" "\t\t// ${LINE}\n")
|
||||||
string(CONCAT ${CURRENT_TYPE}_ENTITY_READ "${${CURRENT_TYPE}_ENTITY_READ}" "\t// ${LINE}\n")
|
string(CONCAT ${CURRENT_TYPE}_ENTITY_READ "${${CURRENT_TYPE}_ENTITY_READ}" "\t// ${LINE}\n")
|
||||||
string(CONCAT ${CURRENT_TYPE}_ENTITY_COPY_TO "${${CURRENT_TYPE}_ENTITY_COPY_TO}" "\t// ${LINE}\n")
|
string(CONCAT ${CURRENT_TYPE}_ENTITY_COPY_TO "${${CURRENT_TYPE}_ENTITY_COPY_TO}" "\t// ${LINE}\n")
|
||||||
if (NOT LOCAL_PROPS)
|
if (NOT LOCAL_PROPS)
|
||||||
|
string(CONCAT ${CURRENT_TYPE}_REQUESTED_PROPS "${${CURRENT_TYPE}_REQUESTED_PROPS}" "\t// ${LINE}\n")
|
||||||
string(CONCAT ${CURRENT_TYPE}_ENTITY_SET_FROM "${${CURRENT_TYPE}_ENTITY_SET_FROM}" "\t// ${LINE}\n")
|
string(CONCAT ${CURRENT_TYPE}_ENTITY_SET_FROM "${${CURRENT_TYPE}_ENTITY_SET_FROM}" "\t// ${LINE}\n")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -298,7 +303,6 @@ macro(GENERATE_ENTITY_PROPERTIES)
|
|||||||
string(CONCAT ENTITY_ITEM_PROPERTY_APPEND "${ENTITY_ITEM_PROPERTY_APPEND}" "\t\t\tAPPEND_ENTITY_PROPERTY(${ENTITY_PROPERTY_ENUM}, properties.get${ENTITY_PROPERTY_NAME_CAPS}());\n")
|
string(CONCAT ENTITY_ITEM_PROPERTY_APPEND "${ENTITY_ITEM_PROPERTY_APPEND}" "\t\t\tAPPEND_ENTITY_PROPERTY(${ENTITY_PROPERTY_ENUM}, properties.get${ENTITY_PROPERTY_NAME_CAPS}());\n")
|
||||||
endif()
|
endif()
|
||||||
string(CONCAT ENTITY_ITEM_PROPERTY_READ "${ENTITY_ITEM_PROPERTY_READ}" "\tREAD_ENTITY_PROPERTY_TO_PROPERTIES(${ENTITY_PROPERTY_ENUM}, ${ENTITY_PROPERTY_READ_TYPE}, set${ENTITY_PROPERTY_NAME_CAPS});\n")
|
string(CONCAT ENTITY_ITEM_PROPERTY_READ "${ENTITY_ITEM_PROPERTY_READ}" "\tREAD_ENTITY_PROPERTY_TO_PROPERTIES(${ENTITY_PROPERTY_ENUM}, ${ENTITY_PROPERTY_READ_TYPE}, set${ENTITY_PROPERTY_NAME_CAPS});\n")
|
||||||
string(CONCAT ${CURRENT_TYPE}_REQUESTED_PROPS "${${CURRENT_TYPE}_REQUESTED_PROPS}" "\trequestedProperties += ${ENTITY_PROPERTY_ENUM};\n")
|
|
||||||
if(LINE MATCHES ".*enum( |,).*")
|
if(LINE MATCHES ".*enum( |,).*")
|
||||||
string(CONCAT ${CURRENT_TYPE}_ENTITY_APPEND "${${CURRENT_TYPE}_ENTITY_APPEND}" "\tAPPEND_ENTITY_PROPERTY(${ENTITY_PROPERTY_ENUM}, (uint8_t)get${ENTITY_PROPERTY_NAME_CAPS}());\n")
|
string(CONCAT ${CURRENT_TYPE}_ENTITY_APPEND "${${CURRENT_TYPE}_ENTITY_APPEND}" "\tAPPEND_ENTITY_PROPERTY(${ENTITY_PROPERTY_ENUM}, (uint8_t)get${ENTITY_PROPERTY_NAME_CAPS}());\n")
|
||||||
elseif(ENTITY_VARIABLE_NETWORK_GETTER)
|
elseif(ENTITY_VARIABLE_NETWORK_GETTER)
|
||||||
@ -317,6 +321,9 @@ macro(GENERATE_ENTITY_PROPERTIES)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT COMMON_PROPS)
|
if (NOT COMMON_PROPS)
|
||||||
|
if (NOT LOCAL_PROPS)
|
||||||
|
string(CONCAT ${CURRENT_TYPE}_REQUESTED_PROPS "${${CURRENT_TYPE}_REQUESTED_PROPS}" "\trequestedProperties += ${ENTITY_PROPERTY_ENUM};\n")
|
||||||
|
endif()
|
||||||
set(VARIABLE_DEFINE_FUNC "DEFINE_VARIABLE_REF")
|
set(VARIABLE_DEFINE_FUNC "DEFINE_VARIABLE_REF")
|
||||||
if(LINE MATCHES ".*noGetterSetterProp( |,).*")
|
if(LINE MATCHES ".*noGetterSetterProp( |,).*")
|
||||||
set(VARIABLE_DEFINE_FUNC "DEFINE_VARIABLE_NO_GETTER_SETTER")
|
set(VARIABLE_DEFINE_FUNC "DEFINE_VARIABLE_NO_GETTER_SETTER")
|
||||||
@ -426,9 +433,14 @@ macro(GENERATE_ENTITY_PROPERTIES)
|
|||||||
file(STRINGS src/EntityItemGroupProperties.txt GROUP_PROPERTIES_FILE)
|
file(STRINGS src/EntityItemGroupProperties.txt GROUP_PROPERTIES_FILE)
|
||||||
while(GROUP_PROPERTIES_FILE)
|
while(GROUP_PROPERTIES_FILE)
|
||||||
list(POP_FRONT GROUP_PROPERTIES_FILE LINE)
|
list(POP_FRONT GROUP_PROPERTIES_FILE LINE)
|
||||||
|
# Handle both trailing comments and full line comments
|
||||||
|
string(REGEX REPLACE " #.*$" "" LINE ${LINE})
|
||||||
|
string(REGEX REPLACE "#.*$" "" LINE ${LINE})
|
||||||
|
|
||||||
# Lines that don't end in a comma represent the start of a new property group.
|
if(LINE STREQUAL "")
|
||||||
if(NOT LINE MATCHES ".*,")
|
continue()
|
||||||
|
elseif(NOT LINE MATCHES ".*,")
|
||||||
|
# Lines that don't end in a comma represent the start of a new property group.
|
||||||
string(REGEX MATCH ".*type:+([A-Z0-9a-z_<>::\/\.\"\(\)\+\-]+).*" GROUP_PROPERTY_TYPE ${LINE})
|
string(REGEX MATCH ".*type:+([A-Z0-9a-z_<>::\/\.\"\(\)\+\-]+).*" GROUP_PROPERTY_TYPE ${LINE})
|
||||||
set(GROUP_PROPERTY_TYPE ${CMAKE_MATCH_1})
|
set(GROUP_PROPERTY_TYPE ${CMAKE_MATCH_1})
|
||||||
|
|
||||||
|
@ -77,11 +77,6 @@ EntityPropertyFlags EntityItem::getEntityProperties(EncodeBitstreamParams& param
|
|||||||
|
|
||||||
@Base_REQUESTED_PROPS@
|
@Base_REQUESTED_PROPS@
|
||||||
|
|
||||||
// Some of the properties not transmitted over network need to be added manually here:
|
|
||||||
requestedProperties += PROP_ENTITY_HOST_TYPE;
|
|
||||||
requestedProperties += PROP_OWNING_AVATAR_ID;
|
|
||||||
requestedProperties += PROP_VISIBLE_IN_SECONDARY_CAMERA;
|
|
||||||
|
|
||||||
return requestedProperties;
|
return requestedProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,19 @@
|
|||||||
|
# This file defines all of the behavior of group entity properties. Each line defines one group property.
|
||||||
|
# This is how each line is interpreted:
|
||||||
|
# 1. A single word with no spaces or commas: delimits a property group, e.g. "grab" or "animation"
|
||||||
|
# Can be followed by type:<camelcase actual type>: some groups have a different c++ file name, e.g. ring is RingGizmo. if this isn't specified, the group name is just capitalized, e.g. pulse to Pulse.
|
||||||
|
# 2. A space separated list of the following properties, ending in a comma, defines a single property:
|
||||||
|
# Required values:
|
||||||
|
# enum:<the c++ prop enum (not including the PROP_ prefix)>
|
||||||
|
# prop:<the actual property name>
|
||||||
|
# type:<the property type>
|
||||||
|
# default:<the default value>
|
||||||
|
# Optional values:
|
||||||
|
# min:<the min value>
|
||||||
|
# max:<the max value>
|
||||||
|
# Optional flags:
|
||||||
|
# enum: this is an enum value
|
||||||
|
# urlPermission: this property is a URL which should be guarded by the canViewAssetURLs permission
|
||||||
grab
|
grab
|
||||||
enum:GRAB_GRABBABLE prop:grabbable type:bool default:INITIAL_GRABBABLE,
|
enum:GRAB_GRABBABLE prop:grabbable type:bool default:INITIAL_GRABBABLE,
|
||||||
enum:GRAB_KINEMATIC prop:grabKinematic type:bool default:INITIAL_KINEMATIC,
|
enum:GRAB_KINEMATIC prop:grabKinematic type:bool default:INITIAL_KINEMATIC,
|
||||||
|
@ -1,3 +1,47 @@
|
|||||||
|
# This file defines all of the behavior of non-group entity properties. Each line defines one property or property group.
|
||||||
|
# This is how each line is interpreted:
|
||||||
|
# 1. A single word with no spaces or commas: delimits a section of properties, e.g. "Physics" or "Scripts". After "Common", each line delimits a type of entity (e.g. "Shape", "Zone", "Web")
|
||||||
|
# 2. A space separated list of the following properties, ending in a comma, defines a single property:
|
||||||
|
# Required values:
|
||||||
|
# enum:<the c++ prop enum (not including the PROP_ prefix)>
|
||||||
|
# prop:<the actual property name>
|
||||||
|
# type:<the property type>
|
||||||
|
# default:<the default value>
|
||||||
|
# Optional values:
|
||||||
|
# min:<the min value>
|
||||||
|
# max:<the max value>
|
||||||
|
# fromScriptType:<the type to use when converting from script values, if different than the normal type>
|
||||||
|
# proxy:<if this is a proxy for another property, the name of the actual property>
|
||||||
|
# proxyType:<for a proxy prop, the type of the original property, if different from this prop's type>
|
||||||
|
# getter:<the name of the function to use when getting this property in EntityItemProperties, if different than the default>
|
||||||
|
# setter:<the name of the function to use when setting this property in EntityItemProperties, if different than the default>
|
||||||
|
# networkGetter:<the expression to use when appending this property to the network stream in EntityItemProperties>
|
||||||
|
# variableNetworkGetter:<the expression to use when appending this property to the network stream in XXXXEntityItem>
|
||||||
|
# variableNetworkSetter:<the expression to use when reading this property from the network stream in XXXXEntityItem>
|
||||||
|
# variableCopyGetter:<the expression to use when getting this property to go from XXXXEntityItem to EntityItemProperties>
|
||||||
|
# variableCopySetter:<the expression to use when setting this property to go from EntityItemProperties to XXXXEntityItem>
|
||||||
|
# readType:<the type to use when reading this property from the network in EntityItemProperties>
|
||||||
|
# debugString:<the string to append to the debug dump for this property, e.g. units>
|
||||||
|
# debugGetter:<the expression to use to get a debug representation of this property>
|
||||||
|
# Optional flags:
|
||||||
|
# legacy: this is a legacy property, i.e. a proxy for another value
|
||||||
|
# common: this is a common property that is shared by multiple Entity types
|
||||||
|
# enum: this is an enum value
|
||||||
|
# propertySetter: in EntityItemProperties, this property will implement its own setter
|
||||||
|
# noScript: this property is not exposed to scripts
|
||||||
|
# readOnly: this property is not settable from scripts
|
||||||
|
# noNetwork: this property is not sent over the network
|
||||||
|
# urlPermission: this property is a URL which should be guarded by the canViewAssetURLs permission
|
||||||
|
# noVariableNetworkSetter: in XXXXEntityItem::readEntityDataFromBuffer/readEntitySubclassDataFromBuffer, this property will implement its own network setter (must still maintain the order though)
|
||||||
|
# basicProp/renderProp/noGetterSetterProp/inherited: specifies how the getter + setter should be defined in XXXXEntityItem. a basicProp will define them for you and just directly store the data. a renderProp will set _needsRenderUpdate to true if the property changes. a noGetterSetterProp will define the member variable but not the getter/setter. an inherited prop will not define anything, assuming both the member variable and getter/setter are inherited. if none of these are specified, the member variable will be defined as well as the getter/setter, but you must implement the getter/setter in the .cpp file.
|
||||||
|
# 3. group:<lowercase group property name> followed by optional properties, followed by a comma: represents a property group which uses the group name for scripts
|
||||||
|
# Optional values:
|
||||||
|
# type:<camelcase actual type>: some groups have a different c++ file name, e.g. ring is RingGizmo. if this isn't specified, the group name is just capitalized, e.g. pulse to Pulse.
|
||||||
|
# Optional flags:
|
||||||
|
# common: if this is a "common" group, shared by multiple entity types
|
||||||
|
# renderUpdateOnSet/recordChange: renderUpdateOnSet, in setSubClassProperties, set _needsRenderUpdate to true to trigger a render update if any of the group properties change. if recordChange, set a member variable (e.g. _hazePropertiesChanged) to true if any of the group properties change
|
||||||
|
# customVariableSetFrom: specifies that the class implements its own handling of how to react to changes to this group in setSubClassProperties
|
||||||
|
# customVariableRead: specifies that the class implements its own handling of how to react to changes to this group in readEntitySubclassDataFromBuffer
|
||||||
Core
|
Core
|
||||||
enum:SIMULATION_OWNER prop:simulationOwner type:SimulationOwner default:SimulationOwner() noScript readType:QByteArray networkGetter:properties._simulationOwner.toByteArray() variableNetworkGetter:_simulationOwner.toByteArray() noVariableNetworkSetter,
|
enum:SIMULATION_OWNER prop:simulationOwner type:SimulationOwner default:SimulationOwner() noScript readType:QByteArray networkGetter:properties._simulationOwner.toByteArray() variableNetworkGetter:_simulationOwner.toByteArray() noVariableNetworkSetter,
|
||||||
enum:PARENT_ID prop:parentID type:QUuid default:UNKNOWN_ENTITY_ID inherited variableNetworkGetter:actualParentID noVariableNetworkSetter,
|
enum:PARENT_ID prop:parentID type:QUuid default:UNKNOWN_ENTITY_ID inherited variableNetworkGetter:actualParentID noVariableNetworkSetter,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user