15 #ifndef hifi_EntityItemProperties_h
16 #define hifi_EntityItemProperties_h
21 #include <type_traits>
23 #include <glm/glm.hpp>
24 #include <glm/gtx/component_wise.hpp>
26 #include <QtCore/QObject>
32 #include <NumericalConstants.h>
33 #include <PropertyFlags.h>
34 #include <OctreeConstants.h>
35 #include <ShapeInfo.h>
36 #include <ColorUtils.h>
37 #include "FontFamilies.h"
38 #include <ScriptValue.h>
40 #include <EntityItemID.h>
41 #include "EntityItemPropertiesDefaults.h"
42 #include "EntityItemPropertiesMacros.h"
43 #include "EntityTypes.h"
44 #include "EntityPropertyFlags.h"
45 #include "EntityPseudoPropertyFlags.h"
46 #include "SimulationOwner.h"
48 #include "TextEntityItem.h"
49 #include "WebEntityItem.h"
50 #include "ParticleEffectEntityItem.h"
51 #include "LineEntityItem.h"
52 #include "PolyVoxEntityItem.h"
53 #include "GridEntityItem.h"
54 #include "GizmoEntityItem.h"
55 #include "LightEntityItem.h"
56 #include "ZoneEntityItem.h"
58 #include "AnimationPropertyGroup.h"
59 #include "SkyboxPropertyGroup.h"
60 #include "HazePropertyGroup.h"
61 #include "BloomPropertyGroup.h"
62 #include "PulsePropertyGroup.h"
63 #include "RingGizmoPropertyGroup.h"
65 #include "MaterialMappingMode.h"
66 #include "BillboardMode.h"
67 #include "RenderLayer.h"
68 #include "PrimitiveMode.h"
69 #include "WebInputMode.h"
70 #include "GizmoType.h"
71 #include "TextEffect.h"
72 #include "TextAlignment.h"
76 const quint64 UNKNOWN_CREATED_TIME = 0;
78 using vec3Color = glm::vec3;
79 using u8vec3Color = glm::u8vec3;
81 struct EntityPropertyInfo {
82 EntityPropertyInfo(EntityPropertyList propEnum) :
83 propertyEnums(propEnum) {}
84 EntityPropertyInfo(EntityPropertyList propEnum, QVariant min, QVariant max) :
85 propertyEnums(propEnum), minimum(min), maximum(max) {}
86 EntityPropertyInfo() =
default;
87 EntityPropertyFlags propertyEnums;
93 EntityPropertyInfo makePropertyInfo(EntityPropertyList p,
typename std::enable_if<!std::is_integral<T>::value>::type* = 0) {
94 return EntityPropertyInfo(p);
98 EntityPropertyInfo makePropertyInfo(EntityPropertyList p,
typename std::enable_if<std::is_integral<T>::value>::type* = 0) {
99 return EntityPropertyInfo(p, std::numeric_limits<T>::min(), std::numeric_limits<T>::max());
109 friend class BoxEntityItem;
110 friend class SphereEntityItem;
111 friend class ShapeEntityItem;
112 friend class ModelEntityItem;
113 friend class TextEntityItem;
114 friend class ImageEntityItem;
115 friend class WebEntityItem;
116 friend class ParticleEffectEntityItem;
117 friend class LineEntityItem;
118 friend class PolyLineEntityItem;
119 friend class PolyVoxEntityItem;
120 friend class GridEntityItem;
121 friend class GizmoEntityItem;
122 friend class LightEntityItem;
123 friend class ZoneEntityItem;
124 friend class MaterialEntityItem;
128 QByteArray& blob,
bool allProperties =
false);
137 EntityTypes::EntityType getType()
const {
return _type; }
138 void setType(EntityTypes::EntityType type) { _type = type; }
140 virtual ScriptValue copyToScriptValue(
ScriptEngine* engine,
bool skipDefaults,
bool allowUnknownCreateTime =
false,
141 bool strictSemantics =
false, EntityPseudoPropertyFlags pseudoPropertyFlags = EntityPseudoPropertyFlags())
const;
142 virtual void copyFromScriptValue(
const ScriptValue&
object,
bool honorReadOnly);
143 void copyFromJSONString(
ScriptEngine& scriptEngine,
const QString& jsonString);
146 static bool entityPropertyFlagsFromScriptValue(
const ScriptValue&
object, EntityPropertyFlags& flags);
148 static bool getPropertyInfo(
const QString& propertyName, EntityPropertyInfo& propertyInfo);
151 quint64 getLastEdited()
const {
return _lastEdited; }
153 {
return (
float)(usecTimestampNow() - getLastEdited()) / (
float)USECS_PER_SECOND; }
155 EntityPropertyFlags getChangedProperties()
const;
157 bool transformChanged()
const;
158 bool getScalesWithParent()
const;
159 bool parentRelatedPropertyChanged()
const;
160 bool queryAACubeRelatedPropertyChanged()
const;
161 bool grabbingRelatedPropertyChanged()
const;
163 AABox getAABox()
const;
165 void debugDump()
const;
166 void setLastEdited(quint64 usecTime);
167 EntityPropertyFlags getDesiredProperties() {
return _desiredProperties; }
168 void setDesiredProperties(EntityPropertyFlags properties) { _desiredProperties = properties; }
170 bool constructFromBuffer(
const unsigned char* data,
int dataLength);
180 DEFINE_PROPERTY_REF(PROP_SIMULATION_OWNER, SimulationOwner, simulationOwner, SimulationOwner, SimulationOwner());
181 DEFINE_PROPERTY_REF(PROP_PARENT_ID, ParentID, parentID, QUuid, UNKNOWN_ENTITY_ID);
182 DEFINE_PROPERTY_REF(PROP_PARENT_JOINT_INDEX, ParentJointIndex, parentJointIndex, quint16, -1);
183 DEFINE_PROPERTY(PROP_VISIBLE, Visible, visible,
bool, ENTITY_ITEM_DEFAULT_VISIBLE);
184 DEFINE_PROPERTY_REF(PROP_NAME, Name, name, QString, ENTITY_ITEM_DEFAULT_NAME);
185 DEFINE_PROPERTY(PROP_LOCKED, Locked, locked,
bool, ENTITY_ITEM_DEFAULT_LOCKED);
186 DEFINE_PROPERTY_REF(PROP_USER_DATA, UserData, userData, QString, ENTITY_ITEM_DEFAULT_USER_DATA);
187 DEFINE_PROPERTY_REF(PROP_PRIVATE_USER_DATA, PrivateUserData, privateUserData, QString, ENTITY_ITEM_DEFAULT_PRIVATE_USER_DATA);
188 DEFINE_PROPERTY_REF(PROP_HREF, Href, href, QString,
"");
189 DEFINE_PROPERTY_REF(PROP_DESCRIPTION, Description, description, QString,
"");
190 DEFINE_PROPERTY_REF_WITH_SETTER(PROP_POSITION, Position, position, glm::vec3, ENTITY_ITEM_ZERO_VEC3);
191 DEFINE_PROPERTY_REF(PROP_DIMENSIONS, Dimensions, dimensions, glm::vec3, ENTITY_ITEM_DEFAULT_DIMENSIONS);
192 DEFINE_PROPERTY_REF(PROP_ROTATION, Rotation, rotation, glm::quat, ENTITY_ITEM_DEFAULT_ROTATION);
193 DEFINE_PROPERTY_REF(PROP_REGISTRATION_POINT, RegistrationPoint, registrationPoint, glm::vec3, ENTITY_ITEM_DEFAULT_REGISTRATION_POINT);
194 DEFINE_PROPERTY(PROP_CREATED, Created, created, quint64, UNKNOWN_CREATED_TIME);
195 DEFINE_PROPERTY_REF(PROP_LAST_EDITED_BY, LastEditedBy, lastEditedBy, QUuid, ENTITY_ITEM_DEFAULT_LAST_EDITED_BY);
196 DEFINE_PROPERTY_REF_ENUM(PROP_ENTITY_HOST_TYPE, EntityHostType, entityHostType, entity::HostType, entity::HostType::DOMAIN);
197 DEFINE_PROPERTY_REF_WITH_SETTER(PROP_OWNING_AVATAR_ID, OwningAvatarID, owningAvatarID, QUuid, UNKNOWN_ENTITY_ID);
198 DEFINE_PROPERTY_REF(PROP_QUERY_AA_CUBE, QueryAACube, queryAACube, AACube, AACube());
199 DEFINE_PROPERTY(PROP_CAN_CAST_SHADOW, CanCastShadow, canCastShadow,
bool, ENTITY_ITEM_DEFAULT_CAN_CAST_SHADOW);
200 DEFINE_PROPERTY(PROP_VISIBLE_IN_SECONDARY_CAMERA, IsVisibleInSecondaryCamera, isVisibleInSecondaryCamera,
bool, ENTITY_ITEM_DEFAULT_VISIBLE_IN_SECONDARY_CAMERA);
201 DEFINE_PROPERTY_REF_ENUM(PROP_RENDER_LAYER, RenderLayer, renderLayer, RenderLayer, RenderLayer::WORLD);
202 DEFINE_PROPERTY_REF_ENUM(PROP_PRIMITIVE_MODE, PrimitiveMode, primitiveMode, PrimitiveMode, PrimitiveMode::SOLID);
203 DEFINE_PROPERTY(PROP_IGNORE_PICK_INTERSECTION, IgnorePickIntersection, ignorePickIntersection,
bool,
false);
204 DEFINE_PROPERTY_REF(PROP_RENDER_WITH_ZONES, RenderWithZones, renderWithZones, QVector<QUuid>, QVector<QUuid>());
205 DEFINE_PROPERTY_REF_ENUM(PROP_BILLBOARD_MODE, BillboardMode, billboardMode, BillboardMode, BillboardMode::NONE);
206 DEFINE_PROPERTY_GROUP(Grab, grab, GrabPropertyGroup);
209 DEFINE_PROPERTY(PROP_DENSITY, Density, density,
float, ENTITY_ITEM_DEFAULT_DENSITY);
210 DEFINE_PROPERTY_REF(PROP_VELOCITY, Velocity, velocity, glm::vec3, ENTITY_ITEM_DEFAULT_VELOCITY);
211 DEFINE_PROPERTY_REF(PROP_ANGULAR_VELOCITY, AngularVelocity, angularVelocity, glm::vec3, ENTITY_ITEM_DEFAULT_ANGULAR_VELOCITY);
212 DEFINE_PROPERTY_REF(PROP_GRAVITY, Gravity, gravity, glm::vec3, ENTITY_ITEM_DEFAULT_GRAVITY);
213 DEFINE_PROPERTY_REF(PROP_ACCELERATION, Acceleration, acceleration, glm::vec3, ENTITY_ITEM_DEFAULT_ACCELERATION);
214 DEFINE_PROPERTY(PROP_DAMPING, Damping, damping,
float, ENTITY_ITEM_DEFAULT_DAMPING);
215 DEFINE_PROPERTY(PROP_ANGULAR_DAMPING, AngularDamping, angularDamping,
float, ENTITY_ITEM_DEFAULT_ANGULAR_DAMPING);
216 DEFINE_PROPERTY(PROP_RESTITUTION, Restitution, restitution,
float, ENTITY_ITEM_DEFAULT_RESTITUTION);
217 DEFINE_PROPERTY(PROP_FRICTION, Friction, friction,
float, ENTITY_ITEM_DEFAULT_FRICTION);
218 DEFINE_PROPERTY(PROP_LIFETIME, Lifetime, lifetime,
float, ENTITY_ITEM_DEFAULT_LIFETIME);
219 DEFINE_PROPERTY(PROP_COLLISIONLESS, Collisionless, collisionless,
bool, ENTITY_ITEM_DEFAULT_COLLISIONLESS);
220 DEFINE_PROPERTY(PROP_COLLISION_MASK, CollisionMask, collisionMask, uint16_t, ENTITY_COLLISION_MASK_DEFAULT);
221 DEFINE_PROPERTY(PROP_DYNAMIC, Dynamic, dynamic,
bool, ENTITY_ITEM_DEFAULT_DYNAMIC);
222 DEFINE_PROPERTY_REF(PROP_COLLISION_SOUND_URL, CollisionSoundURL, collisionSoundURL, QString, ENTITY_ITEM_DEFAULT_COLLISION_SOUND_URL);
223 DEFINE_PROPERTY_REF(PROP_ACTION_DATA, ActionData, actionData, QByteArray, QByteArray());
226 DEFINE_PROPERTY(PROP_CLONEABLE, Cloneable, cloneable,
bool, ENTITY_ITEM_DEFAULT_CLONEABLE);
227 DEFINE_PROPERTY(PROP_CLONE_LIFETIME, CloneLifetime, cloneLifetime,
float, ENTITY_ITEM_DEFAULT_CLONE_LIFETIME);
228 DEFINE_PROPERTY(PROP_CLONE_LIMIT, CloneLimit, cloneLimit,
float, ENTITY_ITEM_DEFAULT_CLONE_LIMIT);
229 DEFINE_PROPERTY(PROP_CLONE_DYNAMIC, CloneDynamic, cloneDynamic,
bool, ENTITY_ITEM_DEFAULT_CLONE_DYNAMIC);
230 DEFINE_PROPERTY(PROP_CLONE_AVATAR_ENTITY, CloneAvatarEntity, cloneAvatarEntity,
bool, ENTITY_ITEM_DEFAULT_CLONE_AVATAR_ENTITY);
231 DEFINE_PROPERTY_REF(PROP_CLONE_ORIGIN_ID, CloneOriginID, cloneOriginID, QUuid, ENTITY_ITEM_DEFAULT_CLONE_ORIGIN_ID);
234 DEFINE_PROPERTY_REF(PROP_SCRIPT, Script, script, QString, ENTITY_ITEM_DEFAULT_SCRIPT);
235 DEFINE_PROPERTY(PROP_SCRIPT_TIMESTAMP, ScriptTimestamp, scriptTimestamp, quint64, ENTITY_ITEM_DEFAULT_SCRIPT_TIMESTAMP);
236 DEFINE_PROPERTY_REF(PROP_SERVER_SCRIPTS, ServerScripts, serverScripts, QString, ENTITY_ITEM_DEFAULT_SERVER_SCRIPTS);
239 DEFINE_PROPERTY_REF(PROP_LOCAL_POSITION, LocalPosition, localPosition, glm::vec3, ENTITY_ITEM_ZERO_VEC3);
240 DEFINE_PROPERTY_REF(PROP_LOCAL_ROTATION, LocalRotation, localRotation, quat, ENTITY_ITEM_DEFAULT_ROTATION);
241 DEFINE_PROPERTY_REF(PROP_LOCAL_VELOCITY, LocalVelocity, localVelocity, glm::vec3, ENTITY_ITEM_ZERO_VEC3);
242 DEFINE_PROPERTY_REF(PROP_LOCAL_ANGULAR_VELOCITY, LocalAngularVelocity, localAngularVelocity, glm::vec3, ENTITY_ITEM_ZERO_VEC3);
243 DEFINE_PROPERTY_REF(PROP_LOCAL_DIMENSIONS, LocalDimensions, localDimensions, glm::vec3, ENTITY_ITEM_ZERO_VEC3);
246 DEFINE_PROPERTY_REF_ENUM(PROP_SHAPE_TYPE, ShapeType, shapeType, ShapeType, SHAPE_TYPE_NONE);
247 DEFINE_PROPERTY_REF(PROP_COMPOUND_SHAPE_URL, CompoundShapeURL, compoundShapeURL, QString,
"");
248 DEFINE_PROPERTY_REF(PROP_COLOR, Color, color, u8vec3Color, ENTITY_ITEM_DEFAULT_COLOR);
249 DEFINE_PROPERTY(PROP_ALPHA, Alpha, alpha,
float, ENTITY_ITEM_DEFAULT_ALPHA);
250 DEFINE_PROPERTY_GROUP(Pulse, pulse, PulsePropertyGroup);
251 DEFINE_PROPERTY_REF(PROP_TEXTURES, Textures, textures, QString,
"");
254 DEFINE_PROPERTY(PROP_MAX_PARTICLES, MaxParticles, maxParticles, quint32, particle::DEFAULT_MAX_PARTICLES);
255 DEFINE_PROPERTY(PROP_LIFESPAN, Lifespan, lifespan,
float, particle::DEFAULT_LIFESPAN);
256 DEFINE_PROPERTY(PROP_EMITTING_PARTICLES, IsEmitting, isEmitting,
bool,
true);
257 DEFINE_PROPERTY(PROP_EMIT_RATE, EmitRate, emitRate,
float, particle::DEFAULT_EMIT_RATE);
258 DEFINE_PROPERTY(PROP_EMIT_SPEED, EmitSpeed, emitSpeed,
float, particle::DEFAULT_EMIT_SPEED);
259 DEFINE_PROPERTY(PROP_SPEED_SPREAD, SpeedSpread, speedSpread,
float, particle::DEFAULT_SPEED_SPREAD);
260 DEFINE_PROPERTY_REF(PROP_EMIT_ORIENTATION, EmitOrientation, emitOrientation, glm::quat, particle::DEFAULT_EMIT_ORIENTATION);
261 DEFINE_PROPERTY_REF(PROP_EMIT_DIMENSIONS, EmitDimensions, emitDimensions, glm::vec3, particle::DEFAULT_EMIT_DIMENSIONS);
262 DEFINE_PROPERTY(PROP_EMIT_RADIUS_START, EmitRadiusStart, emitRadiusStart,
float, particle::DEFAULT_EMIT_RADIUS_START);
263 DEFINE_PROPERTY(PROP_POLAR_START, PolarStart, polarStart,
float, particle::DEFAULT_POLAR_START);
264 DEFINE_PROPERTY(PROP_POLAR_FINISH, PolarFinish, polarFinish,
float, particle::DEFAULT_POLAR_FINISH);
265 DEFINE_PROPERTY(PROP_AZIMUTH_START, AzimuthStart, azimuthStart,
float, particle::DEFAULT_AZIMUTH_START);
266 DEFINE_PROPERTY(PROP_AZIMUTH_FINISH, AzimuthFinish, azimuthFinish,
float, particle::DEFAULT_AZIMUTH_FINISH);
267 DEFINE_PROPERTY_REF(PROP_EMIT_ACCELERATION, EmitAcceleration, emitAcceleration, glm::vec3, particle::DEFAULT_EMIT_ACCELERATION);
268 DEFINE_PROPERTY_REF(PROP_ACCELERATION_SPREAD, AccelerationSpread, accelerationSpread, glm::vec3, particle::DEFAULT_ACCELERATION_SPREAD);
269 DEFINE_PROPERTY(PROP_PARTICLE_RADIUS, ParticleRadius, particleRadius,
float, particle::DEFAULT_PARTICLE_RADIUS);
270 DEFINE_PROPERTY(PROP_RADIUS_SPREAD, RadiusSpread, radiusSpread,
float, particle::DEFAULT_RADIUS_SPREAD);
271 DEFINE_PROPERTY(PROP_RADIUS_START, RadiusStart, radiusStart,
float, particle::DEFAULT_RADIUS_START);
272 DEFINE_PROPERTY(PROP_RADIUS_FINISH, RadiusFinish, radiusFinish,
float, particle::DEFAULT_RADIUS_FINISH);
273 DEFINE_PROPERTY_REF(PROP_COLOR_SPREAD, ColorSpread, colorSpread, u8vec3Color, particle::DEFAULT_COLOR_SPREAD);
274 DEFINE_PROPERTY_REF(PROP_COLOR_START, ColorStart, colorStart, glm::vec3, particle::DEFAULT_COLOR_UNINITIALIZED);
275 DEFINE_PROPERTY_REF(PROP_COLOR_FINISH, ColorFinish, colorFinish, glm::vec3, particle::DEFAULT_COLOR_UNINITIALIZED);
276 DEFINE_PROPERTY(PROP_ALPHA_SPREAD, AlphaSpread, alphaSpread,
float, particle::DEFAULT_ALPHA_SPREAD);
277 DEFINE_PROPERTY(PROP_ALPHA_START, AlphaStart, alphaStart,
float, particle::DEFAULT_ALPHA_START);
278 DEFINE_PROPERTY(PROP_ALPHA_FINISH, AlphaFinish, alphaFinish,
float, particle::DEFAULT_ALPHA_FINISH);
279 DEFINE_PROPERTY(PROP_EMITTER_SHOULD_TRAIL, EmitterShouldTrail, emitterShouldTrail,
bool, particle::DEFAULT_EMITTER_SHOULD_TRAIL);
280 DEFINE_PROPERTY(PROP_PARTICLE_SPIN, ParticleSpin, particleSpin,
float, particle::DEFAULT_PARTICLE_SPIN);
281 DEFINE_PROPERTY(PROP_SPIN_SPREAD, SpinSpread, spinSpread,
float, particle::DEFAULT_SPIN_SPREAD);
282 DEFINE_PROPERTY(PROP_SPIN_START, SpinStart, spinStart,
float, particle::DEFAULT_SPIN_START);
283 DEFINE_PROPERTY(PROP_SPIN_FINISH, SpinFinish, spinFinish,
float, particle::DEFAULT_SPIN_FINISH);
284 DEFINE_PROPERTY(PROP_PARTICLE_ROTATE_WITH_ENTITY, RotateWithEntity, rotateWithEntity,
bool, particle::DEFAULT_ROTATE_WITH_ENTITY);
287 DEFINE_PROPERTY_REF(PROP_MODEL_URL, ModelURL, modelURL, QString,
"");
288 DEFINE_PROPERTY_REF(PROP_MODEL_SCALE, ModelScale, modelScale, glm::vec3, glm::vec3(1.0f));
289 DEFINE_PROPERTY_REF(PROP_JOINT_ROTATIONS_SET, JointRotationsSet, jointRotationsSet, QVector<bool>, QVector<bool>());
290 DEFINE_PROPERTY_REF(PROP_JOINT_ROTATIONS, JointRotations, jointRotations, QVector<glm::quat>, QVector<glm::quat>());
291 DEFINE_PROPERTY_REF(PROP_JOINT_TRANSLATIONS_SET, JointTranslationsSet, jointTranslationsSet, QVector<bool>, QVector<bool>());
292 DEFINE_PROPERTY_REF(PROP_JOINT_TRANSLATIONS, JointTranslations, jointTranslations, QVector<glm::vec3>, ENTITY_ITEM_DEFAULT_EMPTY_VEC3_QVEC);
293 DEFINE_PROPERTY(PROP_RELAY_PARENT_JOINTS, RelayParentJoints, relayParentJoints,
bool, ENTITY_ITEM_DEFAULT_RELAY_PARENT_JOINTS);
294 DEFINE_PROPERTY_REF(PROP_GROUP_CULLED, GroupCulled, groupCulled,
bool,
false);
295 DEFINE_PROPERTY_REF(PROP_BLENDSHAPE_COEFFICIENTS, BlendshapeCoefficients, blendshapeCoefficients, QString,
"");
296 DEFINE_PROPERTY_REF(PROP_USE_ORIGINAL_PIVOT, UseOriginalPivot, useOriginalPivot,
bool,
false);
297 DEFINE_PROPERTY_GROUP(Animation, animation, AnimationPropertyGroup);
300 DEFINE_PROPERTY(PROP_IS_SPOTLIGHT, IsSpotlight, isSpotlight,
bool, LightEntityItem::DEFAULT_IS_SPOTLIGHT);
301 DEFINE_PROPERTY(PROP_INTENSITY, Intensity, intensity,
float, LightEntityItem::DEFAULT_INTENSITY);
302 DEFINE_PROPERTY(PROP_EXPONENT, Exponent, exponent,
float, LightEntityItem::DEFAULT_EXPONENT);
303 DEFINE_PROPERTY(PROP_CUTOFF, Cutoff, cutoff,
float, LightEntityItem::DEFAULT_CUTOFF);
304 DEFINE_PROPERTY(PROP_FALLOFF_RADIUS, FalloffRadius, falloffRadius,
float, LightEntityItem::DEFAULT_FALLOFF_RADIUS);
307 DEFINE_PROPERTY_REF(PROP_TEXT, Text, text, QString, TextEntityItem::DEFAULT_TEXT);
308 DEFINE_PROPERTY(PROP_LINE_HEIGHT, LineHeight, lineHeight,
float, TextEntityItem::DEFAULT_LINE_HEIGHT);
309 DEFINE_PROPERTY_REF(PROP_TEXT_COLOR, TextColor, textColor, u8vec3Color, TextEntityItem::DEFAULT_TEXT_COLOR);
310 DEFINE_PROPERTY_REF(PROP_TEXT_ALPHA, TextAlpha, textAlpha,
float, TextEntityItem::DEFAULT_TEXT_ALPHA);
311 DEFINE_PROPERTY_REF(PROP_BACKGROUND_COLOR, BackgroundColor, backgroundColor, u8vec3Color, TextEntityItem::DEFAULT_BACKGROUND_COLOR);
312 DEFINE_PROPERTY_REF(PROP_BACKGROUND_ALPHA, BackgroundAlpha, backgroundAlpha,
float, TextEntityItem::DEFAULT_TEXT_ALPHA);
313 DEFINE_PROPERTY_REF(PROP_LEFT_MARGIN, LeftMargin, leftMargin,
float, TextEntityItem::DEFAULT_MARGIN);
314 DEFINE_PROPERTY_REF(PROP_RIGHT_MARGIN, RightMargin, rightMargin,
float, TextEntityItem::DEFAULT_MARGIN);
315 DEFINE_PROPERTY_REF(PROP_TOP_MARGIN, TopMargin, topMargin,
float, TextEntityItem::DEFAULT_MARGIN);
316 DEFINE_PROPERTY_REF(PROP_BOTTOM_MARGIN, BottomMargin, bottomMargin,
float, TextEntityItem::DEFAULT_MARGIN);
317 DEFINE_PROPERTY_REF(PROP_UNLIT, Unlit, unlit,
bool,
false);
318 DEFINE_PROPERTY_REF(PROP_FONT, Font, font, QString, ROBOTO_FONT_FAMILY);
319 DEFINE_PROPERTY_REF_ENUM(PROP_TEXT_EFFECT, TextEffect, textEffect, TextEffect, TextEffect::NO_EFFECT);
320 DEFINE_PROPERTY_REF(PROP_TEXT_EFFECT_COLOR, TextEffectColor, textEffectColor, u8vec3Color, TextEntityItem::DEFAULT_TEXT_COLOR);
321 DEFINE_PROPERTY(PROP_TEXT_EFFECT_THICKNESS, TextEffectThickness, textEffectThickness,
float, TextEntityItem::DEFAULT_TEXT_EFFECT_THICKNESS);
322 DEFINE_PROPERTY_REF_ENUM(PROP_TEXT_ALIGNMENT, Alignment, alignment, TextAlignment, TextAlignment::LEFT);
325 DEFINE_PROPERTY_GROUP(KeyLight, keyLight, KeyLightPropertyGroup);
326 DEFINE_PROPERTY_GROUP(AmbientLight, ambientLight, AmbientLightPropertyGroup);
327 DEFINE_PROPERTY_GROUP(Skybox, skybox, SkyboxPropertyGroup);
328 DEFINE_PROPERTY_GROUP(Haze, haze, HazePropertyGroup);
329 DEFINE_PROPERTY_GROUP(Bloom, bloom, BloomPropertyGroup);
330 DEFINE_PROPERTY(PROP_FLYING_ALLOWED, FlyingAllowed, flyingAllowed,
bool, ZoneEntityItem::DEFAULT_FLYING_ALLOWED);
331 DEFINE_PROPERTY(PROP_GHOSTING_ALLOWED, GhostingAllowed, ghostingAllowed,
bool, ZoneEntityItem::DEFAULT_GHOSTING_ALLOWED);
332 DEFINE_PROPERTY(PROP_FILTER_URL, FilterURL, filterURL, QString, ZoneEntityItem::DEFAULT_FILTER_URL);
333 DEFINE_PROPERTY_REF_ENUM(PROP_KEY_LIGHT_MODE, KeyLightMode, keyLightMode, uint32_t, (uint32_t)COMPONENT_MODE_INHERIT);
334 DEFINE_PROPERTY_REF_ENUM(PROP_SKYBOX_MODE, SkyboxMode, skyboxMode, uint32_t, (uint32_t)COMPONENT_MODE_INHERIT);
335 DEFINE_PROPERTY_REF_ENUM(PROP_AMBIENT_LIGHT_MODE, AmbientLightMode, ambientLightMode, uint32_t, (uint32_t)COMPONENT_MODE_INHERIT);
336 DEFINE_PROPERTY_REF_ENUM(PROP_HAZE_MODE, HazeMode, hazeMode, uint32_t, (uint32_t)COMPONENT_MODE_INHERIT);
337 DEFINE_PROPERTY_REF_ENUM(PROP_BLOOM_MODE, BloomMode, bloomMode, uint32_t, (uint32_t)COMPONENT_MODE_INHERIT);
338 DEFINE_PROPERTY_REF_ENUM(PROP_AVATAR_PRIORITY, AvatarPriority, avatarPriority, uint32_t, (uint32_t)COMPONENT_MODE_INHERIT);
339 DEFINE_PROPERTY_REF_ENUM(PROP_SCREENSHARE, Screenshare, screenshare, uint32_t, (uint32_t)COMPONENT_MODE_INHERIT);
342 DEFINE_PROPERTY_REF(PROP_VOXEL_VOLUME_SIZE, VoxelVolumeSize, voxelVolumeSize, glm::vec3, PolyVoxEntityItem::DEFAULT_VOXEL_VOLUME_SIZE);
343 DEFINE_PROPERTY_REF(PROP_VOXEL_DATA, VoxelData, voxelData, QByteArray, PolyVoxEntityItem::DEFAULT_VOXEL_DATA);
344 DEFINE_PROPERTY_REF(PROP_VOXEL_SURFACE_STYLE, VoxelSurfaceStyle, voxelSurfaceStyle, uint16_t, PolyVoxEntityItem::DEFAULT_VOXEL_SURFACE_STYLE);
345 DEFINE_PROPERTY_REF(PROP_X_TEXTURE_URL, XTextureURL, xTextureURL, QString,
"");
346 DEFINE_PROPERTY_REF(PROP_Y_TEXTURE_URL, YTextureURL, yTextureURL, QString,
"");
347 DEFINE_PROPERTY_REF(PROP_Z_TEXTURE_URL, ZTextureURL, zTextureURL, QString,
"");
348 DEFINE_PROPERTY_REF(PROP_X_N_NEIGHBOR_ID, XNNeighborID, xNNeighborID,
EntityItemID, UNKNOWN_ENTITY_ID);
349 DEFINE_PROPERTY_REF(PROP_Y_N_NEIGHBOR_ID, YNNeighborID, yNNeighborID,
EntityItemID, UNKNOWN_ENTITY_ID);
350 DEFINE_PROPERTY_REF(PROP_Z_N_NEIGHBOR_ID, ZNNeighborID, zNNeighborID,
EntityItemID, UNKNOWN_ENTITY_ID);
351 DEFINE_PROPERTY_REF(PROP_X_P_NEIGHBOR_ID, XPNeighborID, xPNeighborID,
EntityItemID, UNKNOWN_ENTITY_ID);
352 DEFINE_PROPERTY_REF(PROP_Y_P_NEIGHBOR_ID, YPNeighborID, yPNeighborID,
EntityItemID, UNKNOWN_ENTITY_ID);
353 DEFINE_PROPERTY_REF(PROP_Z_P_NEIGHBOR_ID, ZPNeighborID, zPNeighborID,
EntityItemID, UNKNOWN_ENTITY_ID);
356 DEFINE_PROPERTY_REF(PROP_SOURCE_URL, SourceUrl, sourceUrl, QString, WebEntityItem::DEFAULT_SOURCE_URL);
357 DEFINE_PROPERTY_REF(PROP_DPI, DPI, dpi, uint16_t, ENTITY_ITEM_DEFAULT_DPI);
358 DEFINE_PROPERTY_REF(PROP_SCRIPT_URL, ScriptURL, scriptURL, QString,
"");
359 DEFINE_PROPERTY_REF(PROP_MAX_FPS, MaxFPS, maxFPS, uint8_t, WebEntityItem::DEFAULT_MAX_FPS);
360 DEFINE_PROPERTY_REF_ENUM(PROP_INPUT_MODE, InputMode, inputMode, WebInputMode, WebInputMode::TOUCH);
361 DEFINE_PROPERTY_REF(PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT, ShowKeyboardFocusHighlight, showKeyboardFocusHighlight,
bool,
true);
362 DEFINE_PROPERTY_REF(PROP_WEB_USE_BACKGROUND, UseBackground, useBackground,
bool,
true);
363 DEFINE_PROPERTY_REF(PROP_USER_AGENT, UserAgent, userAgent, QString, WebEntityItem::DEFAULT_USER_AGENT);
366 DEFINE_PROPERTY_REF(PROP_LINE_POINTS, LinePoints, linePoints, QVector<glm::vec3>, ENTITY_ITEM_DEFAULT_EMPTY_VEC3_QVEC);
367 DEFINE_PROPERTY(PROP_STROKE_WIDTHS, StrokeWidths, strokeWidths, QVector<float>, QVector<float>());
368 DEFINE_PROPERTY(PROP_STROKE_NORMALS, Normals, normals, QVector<glm::vec3>, ENTITY_ITEM_DEFAULT_EMPTY_VEC3_QVEC);
369 DEFINE_PROPERTY(PROP_STROKE_COLORS, StrokeColors, strokeColors, QVector<glm::vec3>, ENTITY_ITEM_DEFAULT_EMPTY_VEC3_QVEC);
370 DEFINE_PROPERTY(PROP_IS_UV_MODE_STRETCH, IsUVModeStretch, isUVModeStretch,
bool,
true);
371 DEFINE_PROPERTY(PROP_LINE_GLOW, Glow, glow,
bool,
false);
372 DEFINE_PROPERTY(PROP_LINE_FACE_CAMERA, FaceCamera, faceCamera,
bool,
false);
375 DEFINE_PROPERTY_REF(PROP_SHAPE, Shape, shape, QString,
"Sphere");
378 DEFINE_PROPERTY_REF(PROP_MATERIAL_URL, MaterialURL, materialURL, QString,
"");
379 DEFINE_PROPERTY_REF_ENUM(PROP_MATERIAL_MAPPING_MODE, MaterialMappingMode, materialMappingMode, MaterialMappingMode, UV);
380 DEFINE_PROPERTY_REF(PROP_MATERIAL_PRIORITY, Priority, priority, quint16, 0);
381 DEFINE_PROPERTY_REF(PROP_PARENT_MATERIAL_NAME, ParentMaterialName, parentMaterialName, QString,
"0");
382 DEFINE_PROPERTY_REF(PROP_MATERIAL_MAPPING_POS, MaterialMappingPos, materialMappingPos, glm::vec2, glm::vec2(0.0f));
383 DEFINE_PROPERTY_REF(PROP_MATERIAL_MAPPING_SCALE, MaterialMappingScale, materialMappingScale, glm::vec2, glm::vec2(1.0f));
384 DEFINE_PROPERTY_REF(PROP_MATERIAL_MAPPING_ROT, MaterialMappingRot, materialMappingRot,
float, 0);
385 DEFINE_PROPERTY_REF(PROP_MATERIAL_DATA, MaterialData, materialData, QString,
"");
386 DEFINE_PROPERTY_REF(PROP_MATERIAL_REPEAT, MaterialRepeat, materialRepeat,
bool,
true);
389 DEFINE_PROPERTY_REF(PROP_IMAGE_URL, ImageURL, imageURL, QString,
"");
390 DEFINE_PROPERTY_REF(PROP_EMISSIVE, Emissive, emissive,
bool,
false);
391 DEFINE_PROPERTY_REF(PROP_KEEP_ASPECT_RATIO, KeepAspectRatio, keepAspectRatio,
bool,
true);
392 DEFINE_PROPERTY_REF(PROP_SUB_IMAGE, SubImage, subImage, QRect, QRect());
395 DEFINE_PROPERTY_REF(PROP_GRID_FOLLOW_CAMERA, FollowCamera, followCamera,
bool,
true);
396 DEFINE_PROPERTY(PROP_MAJOR_GRID_EVERY, MajorGridEvery, majorGridEvery, uint32_t, GridEntityItem::DEFAULT_MAJOR_GRID_EVERY);
397 DEFINE_PROPERTY(PROP_MINOR_GRID_EVERY, MinorGridEvery, minorGridEvery,
float, GridEntityItem::DEFAULT_MINOR_GRID_EVERY);
400 DEFINE_PROPERTY_REF_ENUM(PROP_GIZMO_TYPE, GizmoType, gizmoType, GizmoType, GizmoType::RING);
401 DEFINE_PROPERTY_GROUP(Ring, ring, RingGizmoPropertyGroup);
403 static QString getComponentModeAsString(uint32_t mode);
406 float getMaxDimension()
const {
return glm::compMax(_dimensions); }
408 float getAge()
const {
return (
float)(usecTimestampNow() - _created) / (
float)USECS_PER_SECOND; }
409 bool hasCreatedTime()
const {
return (_created != UNKNOWN_CREATED_TIME); }
411 bool containsBoundsProperties()
const {
return (_positionChanged || _dimensionsChanged); }
412 bool containsPositionChange()
const {
return _positionChanged; }
413 bool containsDimensionsChange()
const {
return _dimensionsChanged; }
416 QByteArray& buffer, EntityPropertyFlags requestedProperties, EntityPropertyFlags& didntFitProperties);
418 static bool encodeEraseEntityMessage(
const EntityItemID& entityItemID, QByteArray& buffer);
419 static bool encodeCloneEntityMessage(
const EntityItemID& entityIDToClone,
const EntityItemID& newEntityID, QByteArray& buffer);
420 static bool decodeCloneEntityMessage(
const QByteArray& buffer,
int& processedBytes,
EntityItemID& entityIDToClone,
EntityItemID& newEntityID);
422 static bool decodeEntityEditPacket(
const unsigned char* data,
int bytesToRead,
int& processedBytes,
425 void clearID() { _id = UNKNOWN_ENTITY_ID; _idSet =
false; }
426 void markAllChanged();
428 const glm::vec3& getNaturalDimensions()
const {
return _naturalDimensions; }
429 void setNaturalDimensions(
const glm::vec3& value) { _naturalDimensions = value; }
431 const glm::vec3& getNaturalPosition()
const {
return _naturalPosition; }
432 void calculateNaturalPosition(
const glm::vec3& min,
const glm::vec3& max);
434 const QVariantMap& getTextureNames()
const {
return _textureNames; }
435 void setTextureNames(
const QVariantMap& value) { _textureNames = value; }
437 QString getSimulatorIDAsString()
const {
return _simulationOwner.getID().toString().mid(1,36).toUpper(); }
439 void setVoxelDataDirty() { _voxelDataChanged =
true; }
441 void setLinePointsDirty() {_linePointsChanged =
true; }
443 void setQueryAACubeDirty() { _queryAACubeChanged =
true; }
445 void setLocationDirty() { _positionChanged =
true; _rotationChanged =
true; }
447 bool hasTransformOrVelocityChanges()
const;
448 void clearTransformOrVelocityChanges();
449 bool hasMiscPhysicsChanges()
const;
451 bool hasSimulationRestrictedChanges()
const;
452 void copySimulationRestrictedProperties(
const EntityItemPointer& entity);
453 void clearSimulationRestrictedProperties();
455 void clearSimulationOwner();
456 void setSimulationOwner(
const QUuid&
id, uint8_t priority);
457 void setSimulationOwner(
const QByteArray& data);
458 void setSimulationPriority(uint8_t priority) { _simulationOwner.setPriority(priority); }
459 uint8_t computeSimulationBidPriority()
const;
461 void setActionDataDirty() { _actionDataChanged =
true; }
463 QList<QString> listChangedProperties();
465 bool getDimensionsInitialized()
const {
return _dimensionsInitialized; }
466 void setDimensionsInitialized(
bool dimensionsInitialized) { _dimensionsInitialized = dimensionsInitialized; }
468 void setJointRotationsDirty() { _jointRotationsSetChanged =
true; _jointRotationsChanged =
true; }
469 void setJointTranslationsDirty() { _jointTranslationsSetChanged =
true; _jointTranslationsChanged =
true; }
472 size_t getRenderInfoVertexCount()
const {
return _renderInfoVertexCount; }
473 void setRenderInfoVertexCount(
size_t value) { _renderInfoVertexCount = value; }
474 int getRenderInfoTextureCount()
const {
return _renderInfoTextureCount; }
475 void setRenderInfoTextureCount(
int value) { _renderInfoTextureCount = value; }
476 size_t getRenderInfoTextureSize()
const {
return _renderInfoTextureSize; }
477 void setRenderInfoTextureSize(
size_t value) { _renderInfoTextureSize = value; }
478 int getRenderInfoDrawCalls()
const {
return _renderInfoDrawCalls; }
479 void setRenderInfoDrawCalls(
int value) { _renderInfoDrawCalls = value; }
480 bool getRenderInfoHasTransparent()
const {
return _renderInfoHasTransparent; }
481 void setRenderInfoHasTransparent(
bool value) { _renderInfoHasTransparent = value; }
483 void setPackedNormals(
const QByteArray& value);
484 QVector<glm::vec3> unpackNormals(
const QByteArray& normals);
486 void setPackedStrokeColors(
const QByteArray& value);
487 QVector<glm::vec3> unpackStrokeColors(
const QByteArray& strokeColors);
489 QByteArray getPackedNormals()
const;
490 QByteArray packNormals(
const QVector<glm::vec3>& normals)
const;
492 QByteArray getPackedStrokeColors()
const;
493 QByteArray packStrokeColors(
const QVector<glm::vec3>& strokeColors)
const;
495 void convertToCloneProperties(
const EntityItemID& entityIDToClone);
498 QString getCollisionMaskAsString()
const;
499 void setCollisionMaskFromString(
const QString& maskString);
505 EntityTypes::EntityType _type;
506 void setType(
const QString& typeName) { _type = EntityTypes::getEntityTypeFromName(typeName); }
508 bool _defaultSettings;
509 bool _dimensionsInitialized =
true;
513 QVariantMap _textureNames;
514 glm::vec3 _naturalDimensions;
515 glm::vec3 _naturalPosition;
517 size_t _renderInfoVertexCount { 0 };
518 int _renderInfoTextureCount { 0 };
519 size_t _renderInfoTextureSize { 0 };
520 int _renderInfoDrawCalls { 0 };
521 bool _renderInfoHasTransparent {
false };
523 EntityPropertyFlags _desiredProperties;
532 Q_DECLARE_METATYPE(EntityPropertyFlags);
534 bool EntityPropertyFlagsFromScriptValue(
const ScriptValue&
object, EntityPropertyFlags& flags);
536 Q_DECLARE_METATYPE(EntityPropertyInfo);
538 bool EntityPropertyInfoFromScriptValue(
const ScriptValue&
object, EntityPropertyInfo& propertyInfo);
541 inline void EntityItemProperties::setPosition(
const glm::vec3& value)
542 { _position = glm::clamp(value, (
float)-HALF_TREE_SCALE, (
float)HALF_TREE_SCALE); _positionChanged =
true; }
544 inline void EntityItemProperties::setOwningAvatarID(
const QUuid&
id) {
545 _owningAvatarID = id;
546 if (!_owningAvatarID.isNull()) {
549 setSimulationOwner(_owningAvatarID, AVATAR_ENTITY_SIMULATION_PRIORITY);
551 _owningAvatarIDChanged =
true;
554 QDebug& operator<<(QDebug& dbg,
const EntityPropertyFlags& f);
557 debug <<
"EntityItemProperties[" <<
"\n";
559 debug <<
" _type:" << properties.getType() <<
"\n";
562 if (properties.containsPositionChange()) {
563 debug <<
" position:" << properties.getPosition() <<
"in meters" <<
"\n";
566 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Dimensions, dimensions,
"in meters");
567 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Velocity, velocity,
"in meters");
568 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Name, name,
"");
569 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Visible, visible,
"");
570 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CanCastShadow, canCastShadow,
"");
571 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Rotation, rotation,
"");
572 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Density, density,
"");
573 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Gravity, gravity,
"");
574 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Acceleration, acceleration,
"in meters per second");
575 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Damping, damping,
"");
576 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Restitution, restitution,
"");
577 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Friction, friction,
"");
578 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Created, created,
"");
579 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Lifetime, lifetime,
"");
580 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Script, script,
"");
581 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ScriptTimestamp, scriptTimestamp,
"");
582 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CollisionSoundURL, collisionSoundURL,
"");
583 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Color, color,
"");
584 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ColorSpread, colorSpread,
"");
585 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ColorStart, colorStart,
"");
586 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ColorFinish, colorFinish,
"");
587 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Alpha, alpha,
"");
588 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AlphaSpread, alphaSpread,
"");
589 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AlphaStart, alphaStart,
"");
590 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AlphaFinish, alphaFinish,
"");
591 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ModelURL, modelURL,
"");
592 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CompoundShapeURL, compoundShapeURL,
"");
593 DEBUG_PROPERTY_IF_CHANGED(debug, properties, RegistrationPoint, registrationPoint,
"");
594 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AngularVelocity, angularVelocity,
"");
595 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AngularDamping, angularDamping,
"");
596 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Collisionless, collisionless,
"");
597 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Dynamic, dynamic,
"");
598 DEBUG_PROPERTY_IF_CHANGED(debug, properties, IsSpotlight, isSpotlight,
"");
599 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Intensity, intensity,
"");
600 DEBUG_PROPERTY_IF_CHANGED(debug, properties, FalloffRadius, falloffRadius,
"");
601 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Exponent, exponent,
"");
602 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Cutoff, cutoff,
"");
603 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Locked, locked,
"");
604 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Textures, textures,
"");
605 DEBUG_PROPERTY_IF_CHANGED(debug, properties, UserData, userData,
"");
606 DEBUG_PROPERTY_IF_CHANGED(debug, properties, PrivateUserData, privateUserData,
"");
607 DEBUG_PROPERTY_IF_CHANGED(debug, properties, SimulationOwner, simulationOwner, SimulationOwner());
608 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Text, text,
"");
609 DEBUG_PROPERTY_IF_CHANGED(debug, properties, LineHeight, lineHeight,
"");
610 DEBUG_PROPERTY_IF_CHANGED(debug, properties, TextColor, textColor,
"");
611 DEBUG_PROPERTY_IF_CHANGED(debug, properties, BackgroundColor, backgroundColor,
"");
612 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ShapeType, shapeType,
"");
613 DEBUG_PROPERTY_IF_CHANGED(debug, properties, MaxParticles, maxParticles,
"");
614 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Lifespan, lifespan,
"");
615 DEBUG_PROPERTY_IF_CHANGED(debug, properties, IsEmitting, isEmitting,
"");
616 DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitRate, emitRate,
"");
617 DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitSpeed, emitSpeed,
"");
618 DEBUG_PROPERTY_IF_CHANGED(debug, properties, SpeedSpread, speedSpread,
"");
619 DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitOrientation, emitOrientation,
"");
620 DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitDimensions, emitDimensions,
"");
621 DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitRadiusStart, emitRadiusStart,
"");
622 DEBUG_PROPERTY_IF_CHANGED(debug, properties, PolarStart, polarStart,
"");
623 DEBUG_PROPERTY_IF_CHANGED(debug, properties, PolarFinish, polarFinish,
"");
624 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AzimuthStart, azimuthStart,
"");
625 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AzimuthFinish, azimuthFinish,
"");
626 DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitAcceleration, emitAcceleration,
"");
627 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AccelerationSpread, accelerationSpread,
"");
628 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ParticleRadius, particleRadius,
"");
629 DEBUG_PROPERTY_IF_CHANGED(debug, properties, RadiusSpread, radiusSpread,
"");
630 DEBUG_PROPERTY_IF_CHANGED(debug, properties, RadiusStart, radiusStart,
"");
631 DEBUG_PROPERTY_IF_CHANGED(debug, properties, RadiusFinish, radiusFinish,
"");
633 DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalPosition, localPosition,
"");
634 DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalRotation, localRotation,
"");
635 DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalVelocity, localVelocity,
"");
636 DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalAngularVelocity, localAngularVelocity,
"");
637 DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalDimensions, localDimensions,
"");
639 DEBUG_PROPERTY_IF_CHANGED(debug, properties, HazeMode, hazeMode,
"");
640 DEBUG_PROPERTY_IF_CHANGED(debug, properties, KeyLightMode, keyLightMode,
"");
641 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AmbientLightMode, ambientLightMode,
"");
642 DEBUG_PROPERTY_IF_CHANGED(debug, properties, SkyboxMode, skyboxMode,
"");
643 DEBUG_PROPERTY_IF_CHANGED(debug, properties, BloomMode, bloomMode,
"");
645 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Cloneable, cloneable,
"");
646 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CloneLifetime, cloneLifetime,
"");
647 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CloneLimit, cloneLimit,
"");
648 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CloneDynamic, cloneDynamic,
"");
649 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CloneAvatarEntity, cloneAvatarEntity,
"");
650 DEBUG_PROPERTY_IF_CHANGED(debug, properties, CloneOriginID, cloneOriginID,
"");
652 DEBUG_PROPERTY_IF_CHANGED(debug, properties, VoxelVolumeSize, voxelVolumeSize,
"");
653 DEBUG_PROPERTY_IF_CHANGED(debug, properties, VoxelData, voxelData,
"");
654 DEBUG_PROPERTY_IF_CHANGED(debug, properties, VoxelSurfaceStyle, voxelSurfaceStyle,
"");
655 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Href, href,
"");
656 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Description, description,
"");
657 if (properties.actionDataChanged()) {
658 debug <<
" " <<
"actionData" <<
":" << properties.getActionData().toHex() <<
"" <<
"\n";
660 DEBUG_PROPERTY_IF_CHANGED(debug, properties, XTextureURL, xTextureURL,
"");
661 DEBUG_PROPERTY_IF_CHANGED(debug, properties, YTextureURL, yTextureURL,
"");
662 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ZTextureURL, zTextureURL,
"");
663 DEBUG_PROPERTY_IF_CHANGED(debug, properties, XNNeighborID, xNNeighborID,
"");
664 DEBUG_PROPERTY_IF_CHANGED(debug, properties, YNNeighborID, yNNeighborID,
"");
665 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ZNNeighborID, zNNeighborID,
"");
666 DEBUG_PROPERTY_IF_CHANGED(debug, properties, XPNeighborID, xPNeighborID,
"");
667 DEBUG_PROPERTY_IF_CHANGED(debug, properties, YPNeighborID, yPNeighborID,
"");
668 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ZPNeighborID, zPNeighborID,
"");
670 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ParentID, parentID,
"");
671 DEBUG_PROPERTY_IF_CHANGED(debug, properties, ParentJointIndex, parentJointIndex,
"");
672 DEBUG_PROPERTY_IF_CHANGED(debug, properties, QueryAACube, queryAACube,
"");
674 DEBUG_PROPERTY_IF_CHANGED(debug, properties, JointRotationsSet, jointRotationsSet,
"");
675 DEBUG_PROPERTY_IF_CHANGED(debug, properties, JointRotations, jointRotations,
"");
676 DEBUG_PROPERTY_IF_CHANGED(debug, properties, JointTranslationsSet, jointTranslationsSet,
"");
677 DEBUG_PROPERTY_IF_CHANGED(debug, properties, JointTranslations, jointTranslations,
"");
679 DEBUG_PROPERTY_IF_CHANGED(debug, properties, FlyingAllowed, flyingAllowed,
"");
680 DEBUG_PROPERTY_IF_CHANGED(debug, properties, GhostingAllowed, ghostingAllowed,
"");
681 DEBUG_PROPERTY_IF_CHANGED(debug, properties, FilterURL, filterURL,
"");
683 DEBUG_PROPERTY_IF_CHANGED(debug, properties, AvatarPriority, avatarPriority,
"");
685 DEBUG_PROPERTY_IF_CHANGED(debug, properties, Screenshare, screenshare,
"");
687 DEBUG_PROPERTY_IF_CHANGED(debug, properties, EntityHostTypeAsString, entityHostType,
"");
688 DEBUG_PROPERTY_IF_CHANGED(debug, properties, OwningAvatarID, owningAvatarID,
"");
690 DEBUG_PROPERTY_IF_CHANGED(debug, properties, LastEditedBy, lastEditedBy,
"");
692 debug <<
" last edited:" << properties.getLastEdited() <<
"\n";
693 debug <<
" edited ago:" << properties.
getEditedAgo() <<
"\n";
Definition: EntityItem.h:82
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28
Definition: EntityItemProperties.h:106
float getEditedAgo() const
Elapsed seconds since this entity was last edited.
Definition: EntityItemProperties.h:152
Provides an engine-independent interface for a scripting engine.
Definition: ScriptEngine.h:93
[ScriptInterface] Provides an engine-independent interface for QScriptValue
Definition: ScriptValue.h:40