Overte C++ Documentation
EntityPropertyFlags.h
1 //
2 // EntityPropertyFlags.h
3 // libraries/entities/src
4 //
5 // Created by Brad Hefta-Gaub on 12/4/13.
6 // Copyright 2013 High Fidelity, Inc.
7 // Copyright 2020 Vircadia contributors.
8 //
9 // Distributed under the Apache License, Version 2.0.
10 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
11 //
12 
13 #ifndef hifi_EntityPropertyFlags_h
14 #define hifi_EntityPropertyFlags_h
15 
16 #include <PropertyFlags.h>
17 
18 enum EntityPropertyList {
19  PROP_PAGED_PROPERTY,
20  PROP_CUSTOM_PROPERTIES_INCLUDED,
21 
22  // Core properties
23  PROP_SIMULATION_OWNER,
24  PROP_PARENT_ID,
25  PROP_PARENT_JOINT_INDEX,
26  PROP_VISIBLE,
27  PROP_NAME,
28  PROP_LOCKED,
29  PROP_USER_DATA,
30  PROP_PRIVATE_USER_DATA,
31  PROP_HREF,
32  PROP_DESCRIPTION,
33  PROP_POSITION,
34  PROP_DIMENSIONS,
35  PROP_ROTATION,
36  PROP_REGISTRATION_POINT,
37  PROP_CREATED,
38  PROP_LAST_EDITED_BY,
39  PROP_ENTITY_HOST_TYPE, // not sent over the wire
40  PROP_OWNING_AVATAR_ID, // not sent over the wire
41  PROP_QUERY_AA_CUBE,
42  PROP_CAN_CAST_SHADOW,
43  PROP_VISIBLE_IN_SECONDARY_CAMERA, // not sent over the wire
44  PROP_RENDER_LAYER,
45  PROP_PRIMITIVE_MODE,
46  PROP_IGNORE_PICK_INTERSECTION,
47  PROP_RENDER_WITH_ZONES,
48  PROP_BILLBOARD_MODE,
49  // Grab
50  PROP_GRAB_GRABBABLE,
51  PROP_GRAB_KINEMATIC,
52  PROP_GRAB_FOLLOWS_CONTROLLER,
53  PROP_GRAB_TRIGGERABLE,
54  PROP_GRAB_EQUIPPABLE,
55  PROP_GRAB_DELEGATE_TO_PARENT,
56  PROP_GRAB_LEFT_EQUIPPABLE_POSITION_OFFSET,
57  PROP_GRAB_LEFT_EQUIPPABLE_ROTATION_OFFSET,
58  PROP_GRAB_RIGHT_EQUIPPABLE_POSITION_OFFSET,
59  PROP_GRAB_RIGHT_EQUIPPABLE_ROTATION_OFFSET,
60  PROP_GRAB_EQUIPPABLE_INDICATOR_URL,
61  PROP_GRAB_EQUIPPABLE_INDICATOR_SCALE,
62  PROP_GRAB_EQUIPPABLE_INDICATOR_OFFSET,
63 
64  // Physics
65  PROP_DENSITY,
66  PROP_VELOCITY,
67  PROP_ANGULAR_VELOCITY,
68  PROP_GRAVITY,
69  PROP_ACCELERATION,
70  PROP_DAMPING,
71  PROP_ANGULAR_DAMPING,
72  PROP_RESTITUTION,
73  PROP_FRICTION,
74  PROP_LIFETIME,
75  PROP_COLLISIONLESS,
76  PROP_COLLISION_MASK,
77  PROP_DYNAMIC,
78  PROP_COLLISION_SOUND_URL,
79  PROP_ACTION_DATA,
80 
81  // Cloning
82  PROP_CLONEABLE,
83  PROP_CLONE_LIFETIME,
84  PROP_CLONE_LIMIT,
85  PROP_CLONE_DYNAMIC,
86  PROP_CLONE_AVATAR_ENTITY,
87  PROP_CLONE_ORIGIN_ID,
88 
89  // Scripts
90  PROP_SCRIPT,
91  PROP_SCRIPT_TIMESTAMP,
92  PROP_SERVER_SCRIPTS,
93 
94  // Certifiable Properties
95  PROP_ITEM_NAME,
96  PROP_ITEM_DESCRIPTION,
97  PROP_ITEM_CATEGORIES,
98  PROP_ITEM_ARTIST,
99  PROP_ITEM_LICENSE,
100  PROP_LIMITED_RUN,
101  PROP_MARKETPLACE_ID,
102  PROP_EDITION_NUMBER,
103  PROP_ENTITY_INSTANCE_NUMBER,
104  PROP_CERTIFICATE_ID,
105  PROP_CERTIFICATE_TYPE,
106  PROP_STATIC_CERTIFICATE_VERSION,
107 
108  // Used to convert values to and from scripts
109  PROP_LOCAL_POSITION,
110  PROP_LOCAL_ROTATION,
111  PROP_LOCAL_VELOCITY,
112  PROP_LOCAL_ANGULAR_VELOCITY,
113  PROP_LOCAL_DIMENSIONS,
114 
115  // These properties are used by multiple subtypes but aren't in the base EntityItem
116  PROP_SHAPE_TYPE,
117  PROP_COMPOUND_SHAPE_URL,
118  PROP_COLOR,
119  PROP_ALPHA,
120  PROP_PULSE_MIN,
121  PROP_PULSE_MAX,
122  PROP_PULSE_PERIOD,
123  PROP_PULSE_COLOR_MODE,
124  PROP_PULSE_ALPHA_MODE,
125  PROP_TEXTURES,
126 
128  // ATTENTION: add new shared EntityItem properties to the list ABOVE this line
130 
131  // We need as many of these as the number of unique properties of a derived EntityItem class
132  PROP_DERIVED_0,
133  PROP_DERIVED_1,
134  PROP_DERIVED_2,
135  PROP_DERIVED_3,
136  PROP_DERIVED_4,
137  PROP_DERIVED_5,
138  PROP_DERIVED_6,
139  PROP_DERIVED_7,
140  PROP_DERIVED_8,
141  PROP_DERIVED_9,
142  PROP_DERIVED_10,
143  PROP_DERIVED_11,
144  PROP_DERIVED_12,
145  PROP_DERIVED_13,
146  PROP_DERIVED_14,
147  PROP_DERIVED_15,
148  PROP_DERIVED_16,
149  PROP_DERIVED_17,
150  PROP_DERIVED_18,
151  PROP_DERIVED_19,
152  PROP_DERIVED_20,
153  PROP_DERIVED_21,
154  PROP_DERIVED_22,
155  PROP_DERIVED_23,
156  PROP_DERIVED_24,
157  PROP_DERIVED_25,
158  PROP_DERIVED_26,
159  PROP_DERIVED_27,
160  PROP_DERIVED_28,
161  PROP_DERIVED_29,
162  PROP_DERIVED_30,
163  PROP_DERIVED_31,
164  PROP_DERIVED_32,
165  PROP_DERIVED_33,
166  PROP_DERIVED_34,
167 
168  PROP_AFTER_LAST_ITEM,
169 
171  // WARNING! Do not add props here unless you intentionally mean to reuse PROP_DERIVED_X indexes
172  //
173  // 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
174  // the size of the properties bitflags mask
175  //
176  // Only add properties here that are only used by one subclass. Otherwise, they should go above to prevent collisions
177 
178  // Particles
179  PROP_MAX_PARTICLES = PROP_DERIVED_0,
180  PROP_LIFESPAN = PROP_DERIVED_1,
181  PROP_EMITTING_PARTICLES = PROP_DERIVED_2,
182  PROP_EMIT_RATE = PROP_DERIVED_3,
183  PROP_EMIT_SPEED = PROP_DERIVED_4,
184  PROP_SPEED_SPREAD = PROP_DERIVED_5,
185  PROP_EMIT_ORIENTATION = PROP_DERIVED_6,
186  PROP_EMIT_DIMENSIONS = PROP_DERIVED_7,
187  PROP_ACCELERATION_SPREAD = PROP_DERIVED_8,
188  PROP_POLAR_START = PROP_DERIVED_9,
189  PROP_POLAR_FINISH = PROP_DERIVED_10,
190  PROP_AZIMUTH_START = PROP_DERIVED_11,
191  PROP_AZIMUTH_FINISH = PROP_DERIVED_12,
192  PROP_EMIT_RADIUS_START = PROP_DERIVED_13,
193  PROP_EMIT_ACCELERATION = PROP_DERIVED_14,
194  PROP_PARTICLE_RADIUS = PROP_DERIVED_15,
195  PROP_RADIUS_SPREAD = PROP_DERIVED_16,
196  PROP_RADIUS_START = PROP_DERIVED_17,
197  PROP_RADIUS_FINISH = PROP_DERIVED_18,
198  PROP_COLOR_SPREAD = PROP_DERIVED_19,
199  PROP_COLOR_START = PROP_DERIVED_20,
200  PROP_COLOR_FINISH = PROP_DERIVED_21,
201  PROP_ALPHA_SPREAD = PROP_DERIVED_22,
202  PROP_ALPHA_START = PROP_DERIVED_23,
203  PROP_ALPHA_FINISH = PROP_DERIVED_24,
204  PROP_EMITTER_SHOULD_TRAIL = PROP_DERIVED_25,
205  PROP_PARTICLE_SPIN = PROP_DERIVED_26,
206  PROP_SPIN_START = PROP_DERIVED_27,
207  PROP_SPIN_FINISH = PROP_DERIVED_28,
208  PROP_SPIN_SPREAD = PROP_DERIVED_29,
209  PROP_PARTICLE_ROTATE_WITH_ENTITY = PROP_DERIVED_30,
210 
211  // Model
212  PROP_MODEL_URL = PROP_DERIVED_0,
213  PROP_MODEL_SCALE = PROP_DERIVED_1,
214  PROP_JOINT_ROTATIONS_SET = PROP_DERIVED_2,
215  PROP_JOINT_ROTATIONS = PROP_DERIVED_3,
216  PROP_JOINT_TRANSLATIONS_SET = PROP_DERIVED_4,
217  PROP_JOINT_TRANSLATIONS = PROP_DERIVED_5,
218  PROP_RELAY_PARENT_JOINTS = PROP_DERIVED_6,
219  PROP_GROUP_CULLED = PROP_DERIVED_7,
220  PROP_BLENDSHAPE_COEFFICIENTS = PROP_DERIVED_8,
221  PROP_USE_ORIGINAL_PIVOT = PROP_DERIVED_9,
222  // Animation
223  PROP_ANIMATION_URL = PROP_DERIVED_10,
224  PROP_ANIMATION_ALLOW_TRANSLATION = PROP_DERIVED_11,
225  PROP_ANIMATION_FPS = PROP_DERIVED_12,
226  PROP_ANIMATION_FRAME_INDEX = PROP_DERIVED_13,
227  PROP_ANIMATION_PLAYING = PROP_DERIVED_14,
228  PROP_ANIMATION_LOOP = PROP_DERIVED_15,
229  PROP_ANIMATION_FIRST_FRAME = PROP_DERIVED_16,
230  PROP_ANIMATION_LAST_FRAME = PROP_DERIVED_17,
231  PROP_ANIMATION_HOLD = PROP_DERIVED_18,
232 
233  // Light
234  PROP_IS_SPOTLIGHT = PROP_DERIVED_0,
235  PROP_INTENSITY = PROP_DERIVED_1,
236  PROP_EXPONENT = PROP_DERIVED_2,
237  PROP_CUTOFF = PROP_DERIVED_3,
238  PROP_FALLOFF_RADIUS = PROP_DERIVED_4,
239 
240  // Text
241  PROP_TEXT = PROP_DERIVED_0,
242  PROP_LINE_HEIGHT = PROP_DERIVED_1,
243  PROP_TEXT_COLOR = PROP_DERIVED_2,
244  PROP_TEXT_ALPHA = PROP_DERIVED_3,
245  PROP_BACKGROUND_COLOR = PROP_DERIVED_4,
246  PROP_BACKGROUND_ALPHA = PROP_DERIVED_5,
247  PROP_LEFT_MARGIN = PROP_DERIVED_6,
248  PROP_RIGHT_MARGIN = PROP_DERIVED_7,
249  PROP_TOP_MARGIN = PROP_DERIVED_8,
250  PROP_BOTTOM_MARGIN = PROP_DERIVED_9,
251  PROP_UNLIT = PROP_DERIVED_10,
252  PROP_FONT = PROP_DERIVED_11,
253  PROP_TEXT_EFFECT = PROP_DERIVED_12,
254  PROP_TEXT_EFFECT_COLOR = PROP_DERIVED_13,
255  PROP_TEXT_EFFECT_THICKNESS = PROP_DERIVED_14,
256  PROP_TEXT_ALIGNMENT = PROP_DERIVED_15,
257 
258  // Zone
259  // Keylight
260  PROP_KEYLIGHT_COLOR = PROP_DERIVED_0,
261  PROP_KEYLIGHT_INTENSITY = PROP_DERIVED_1,
262  PROP_KEYLIGHT_DIRECTION = PROP_DERIVED_2,
263  PROP_KEYLIGHT_CAST_SHADOW = PROP_DERIVED_3,
264  PROP_KEYLIGHT_SHADOW_BIAS = PROP_DERIVED_4,
265  PROP_KEYLIGHT_SHADOW_MAX_DISTANCE = PROP_DERIVED_5,
266  // Ambient light
267  PROP_AMBIENT_LIGHT_INTENSITY = PROP_DERIVED_6,
268  PROP_AMBIENT_LIGHT_URL = PROP_DERIVED_7,
269  // Skybox
270  PROP_SKYBOX_COLOR = PROP_DERIVED_8,
271  PROP_SKYBOX_URL = PROP_DERIVED_9,
272  // Haze
273  PROP_HAZE_RANGE = PROP_DERIVED_10,
274  PROP_HAZE_COLOR = PROP_DERIVED_11,
275  PROP_HAZE_GLARE_COLOR = PROP_DERIVED_12,
276  PROP_HAZE_ENABLE_GLARE = PROP_DERIVED_13,
277  PROP_HAZE_GLARE_ANGLE = PROP_DERIVED_14,
278  PROP_HAZE_ALTITUDE_EFFECT = PROP_DERIVED_15,
279  PROP_HAZE_CEILING = PROP_DERIVED_16,
280  PROP_HAZE_BASE_REF = PROP_DERIVED_17,
281  PROP_HAZE_BACKGROUND_BLEND = PROP_DERIVED_18,
282  PROP_HAZE_ATTENUATE_KEYLIGHT = PROP_DERIVED_19,
283  PROP_HAZE_KEYLIGHT_RANGE = PROP_DERIVED_20,
284  PROP_HAZE_KEYLIGHT_ALTITUDE = PROP_DERIVED_21,
285  // Bloom
286  PROP_BLOOM_INTENSITY = PROP_DERIVED_22,
287  PROP_BLOOM_THRESHOLD = PROP_DERIVED_23,
288  PROP_BLOOM_SIZE = PROP_DERIVED_24,
289  PROP_FLYING_ALLOWED = PROP_DERIVED_25,
290  PROP_GHOSTING_ALLOWED = PROP_DERIVED_26,
291  PROP_FILTER_URL = PROP_DERIVED_27,
292  PROP_KEY_LIGHT_MODE = PROP_DERIVED_28,
293  PROP_AMBIENT_LIGHT_MODE = PROP_DERIVED_29,
294  PROP_SKYBOX_MODE = PROP_DERIVED_30,
295  PROP_HAZE_MODE = PROP_DERIVED_31,
296  PROP_BLOOM_MODE = PROP_DERIVED_32,
297  // Avatar priority
298  PROP_AVATAR_PRIORITY = PROP_DERIVED_33,
299  // Screen-sharing
300  PROP_SCREENSHARE = PROP_DERIVED_34,
301 
302  // Polyvox
303  PROP_VOXEL_VOLUME_SIZE = PROP_DERIVED_0,
304  PROP_VOXEL_DATA = PROP_DERIVED_1,
305  PROP_VOXEL_SURFACE_STYLE = PROP_DERIVED_2,
306  PROP_X_TEXTURE_URL = PROP_DERIVED_3,
307  PROP_Y_TEXTURE_URL = PROP_DERIVED_4,
308  PROP_Z_TEXTURE_URL = PROP_DERIVED_5,
309  PROP_X_N_NEIGHBOR_ID = PROP_DERIVED_6,
310  PROP_Y_N_NEIGHBOR_ID = PROP_DERIVED_7,
311  PROP_Z_N_NEIGHBOR_ID = PROP_DERIVED_8,
312  PROP_X_P_NEIGHBOR_ID = PROP_DERIVED_9,
313  PROP_Y_P_NEIGHBOR_ID = PROP_DERIVED_10,
314  PROP_Z_P_NEIGHBOR_ID = PROP_DERIVED_11,
315 
316  // Web
317  PROP_SOURCE_URL = PROP_DERIVED_0,
318  PROP_DPI = PROP_DERIVED_1,
319  PROP_SCRIPT_URL = PROP_DERIVED_2,
320  PROP_MAX_FPS = PROP_DERIVED_3,
321  PROP_INPUT_MODE = PROP_DERIVED_4,
322  PROP_SHOW_KEYBOARD_FOCUS_HIGHLIGHT = PROP_DERIVED_5,
323  PROP_WEB_USE_BACKGROUND = PROP_DERIVED_6,
324  PROP_USER_AGENT = PROP_DERIVED_7,
325 
326  // Polyline
327  PROP_LINE_POINTS = PROP_DERIVED_0,
328  PROP_STROKE_WIDTHS = PROP_DERIVED_1,
329  PROP_STROKE_NORMALS = PROP_DERIVED_2,
330  PROP_STROKE_COLORS = PROP_DERIVED_3,
331  PROP_IS_UV_MODE_STRETCH = PROP_DERIVED_4,
332  PROP_LINE_GLOW = PROP_DERIVED_5,
333  PROP_LINE_FACE_CAMERA = PROP_DERIVED_6,
334 
335  // Shape
336  PROP_SHAPE = PROP_DERIVED_0,
337 
338  // Material
339  PROP_MATERIAL_URL = PROP_DERIVED_0,
340  PROP_MATERIAL_MAPPING_MODE = PROP_DERIVED_1,
341  PROP_MATERIAL_PRIORITY = PROP_DERIVED_2,
342  PROP_PARENT_MATERIAL_NAME = PROP_DERIVED_3,
343  PROP_MATERIAL_MAPPING_POS = PROP_DERIVED_4,
344  PROP_MATERIAL_MAPPING_SCALE = PROP_DERIVED_5,
345  PROP_MATERIAL_MAPPING_ROT = PROP_DERIVED_6,
346  PROP_MATERIAL_DATA = PROP_DERIVED_7,
347  PROP_MATERIAL_REPEAT = PROP_DERIVED_8,
348 
349  // Image
350  PROP_IMAGE_URL = PROP_DERIVED_0,
351  PROP_EMISSIVE = PROP_DERIVED_1,
352  PROP_KEEP_ASPECT_RATIO = PROP_DERIVED_2,
353  PROP_SUB_IMAGE = PROP_DERIVED_3,
354 
355  // Grid
356  PROP_GRID_FOLLOW_CAMERA = PROP_DERIVED_0,
357  PROP_MAJOR_GRID_EVERY = PROP_DERIVED_1,
358  PROP_MINOR_GRID_EVERY = PROP_DERIVED_2,
359 
360  // Gizmo
361  PROP_GIZMO_TYPE = PROP_DERIVED_0,
362  // Ring
363  PROP_START_ANGLE = PROP_DERIVED_1,
364  PROP_END_ANGLE = PROP_DERIVED_2,
365  PROP_INNER_RADIUS = PROP_DERIVED_3,
366  PROP_INNER_START_COLOR = PROP_DERIVED_4,
367  PROP_INNER_END_COLOR = PROP_DERIVED_5,
368  PROP_OUTER_START_COLOR = PROP_DERIVED_6,
369  PROP_OUTER_END_COLOR = PROP_DERIVED_7,
370  PROP_INNER_START_ALPHA = PROP_DERIVED_8,
371  PROP_INNER_END_ALPHA = PROP_DERIVED_9,
372  PROP_OUTER_START_ALPHA = PROP_DERIVED_10,
373  PROP_OUTER_END_ALPHA = PROP_DERIVED_11,
374  PROP_HAS_TICK_MARKS = PROP_DERIVED_12,
375  PROP_MAJOR_TICK_MARKS_ANGLE = PROP_DERIVED_13,
376  PROP_MINOR_TICK_MARKS_ANGLE = PROP_DERIVED_14,
377  PROP_MAJOR_TICK_MARKS_LENGTH = PROP_DERIVED_15,
378  PROP_MINOR_TICK_MARKS_LENGTH = PROP_DERIVED_16,
379  PROP_MAJOR_TICK_MARKS_COLOR = PROP_DERIVED_17,
380  PROP_MINOR_TICK_MARKS_COLOR = PROP_DERIVED_18,
381 
382  // WARNING!!! DO NOT ADD PROPS_xxx here unless you really really meant to.... Add them UP above
383 };
384 
385 typedef PropertyFlags<EntityPropertyList> EntityPropertyFlags;
386 
387 // this is set at the top of EntityItemProperties.cpp to PROP_AFTER_LAST_ITEM - 1. PROP_AFTER_LAST_ITEM is always
388 // one greater than the last item property due to the enum's auto-incrementing.
389 extern EntityPropertyList PROP_LAST_ITEM;
390 
391 #endif // hifi_EntityPropertyFlags_h