mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:01:09 +02:00
Merge pull request #4483 from Atlante45/attribution_property
Initial add of the Attribution property
This commit is contained in:
commit
bfe3f2cf30
7 changed files with 33 additions and 5 deletions
|
@ -57,6 +57,7 @@ void EntityItem::initFromEntityItemID(const EntityItemID& entityItemID) {
|
||||||
_collisionsWillMove = ENTITY_ITEM_DEFAULT_COLLISIONS_WILL_MOVE;
|
_collisionsWillMove = ENTITY_ITEM_DEFAULT_COLLISIONS_WILL_MOVE;
|
||||||
_locked = ENTITY_ITEM_DEFAULT_LOCKED;
|
_locked = ENTITY_ITEM_DEFAULT_LOCKED;
|
||||||
_userData = ENTITY_ITEM_DEFAULT_USER_DATA;
|
_userData = ENTITY_ITEM_DEFAULT_USER_DATA;
|
||||||
|
_attribution = ENTITY_ITEM_DEFAULT_ATTRIBUTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityItem::EntityItem(const EntityItemID& entityItemID) {
|
EntityItem::EntityItem(const EntityItemID& entityItemID) {
|
||||||
|
@ -116,6 +117,7 @@ EntityPropertyFlags EntityItem::getEntityProperties(EncodeBitstreamParams& param
|
||||||
requestedProperties += PROP_COLLISIONS_WILL_MOVE;
|
requestedProperties += PROP_COLLISIONS_WILL_MOVE;
|
||||||
requestedProperties += PROP_LOCKED;
|
requestedProperties += PROP_LOCKED;
|
||||||
requestedProperties += PROP_USER_DATA;
|
requestedProperties += PROP_USER_DATA;
|
||||||
|
requestedProperties += PROP_ATTRIBUTION;
|
||||||
|
|
||||||
return requestedProperties;
|
return requestedProperties;
|
||||||
}
|
}
|
||||||
|
@ -245,6 +247,8 @@ OctreeElement::AppendState EntityItem::appendEntityData(OctreePacketData* packet
|
||||||
propertiesDidntFit,
|
propertiesDidntFit,
|
||||||
propertyCount,
|
propertyCount,
|
||||||
appendState);
|
appendState);
|
||||||
|
|
||||||
|
APPEND_ENTITY_PROPERTY(PROP_ATTRIBUTION, appendValue, getAttribution());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (propertyCount > 0) {
|
if (propertyCount > 0) {
|
||||||
|
@ -550,9 +554,11 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
||||||
READ_ENTITY_PROPERTY_SETTER(PROP_IGNORE_FOR_COLLISIONS, bool, updateIgnoreForCollisions);
|
READ_ENTITY_PROPERTY_SETTER(PROP_IGNORE_FOR_COLLISIONS, bool, updateIgnoreForCollisions);
|
||||||
READ_ENTITY_PROPERTY_SETTER(PROP_COLLISIONS_WILL_MOVE, bool, updateCollisionsWillMove);
|
READ_ENTITY_PROPERTY_SETTER(PROP_COLLISIONS_WILL_MOVE, bool, updateCollisionsWillMove);
|
||||||
READ_ENTITY_PROPERTY(PROP_LOCKED, bool, _locked);
|
READ_ENTITY_PROPERTY(PROP_LOCKED, bool, _locked);
|
||||||
READ_ENTITY_PROPERTY_STRING(PROP_USER_DATA,setUserData);
|
READ_ENTITY_PROPERTY_STRING(PROP_USER_DATA, setUserData);
|
||||||
|
|
||||||
bytesRead += readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, propertyFlags, overwriteLocalData);
|
bytesRead += readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, propertyFlags, overwriteLocalData);
|
||||||
|
|
||||||
|
READ_ENTITY_PROPERTY_STRING(PROP_ATTRIBUTION, setAttribution);
|
||||||
|
|
||||||
if (overwriteLocalData && (getDirtyFlags() & (EntityItem::DIRTY_POSITION | EntityItem::DIRTY_VELOCITY))) {
|
if (overwriteLocalData && (getDirtyFlags() & (EntityItem::DIRTY_POSITION | EntityItem::DIRTY_VELOCITY))) {
|
||||||
// NOTE: This code is attempting to "repair" the old data we just got from the server to make it more
|
// NOTE: This code is attempting to "repair" the old data we just got from the server to make it more
|
||||||
|
@ -820,6 +826,7 @@ EntityItemProperties EntityItem::getProperties() const {
|
||||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(collisionsWillMove, getCollisionsWillMove);
|
COPY_ENTITY_PROPERTY_TO_PROPERTIES(collisionsWillMove, getCollisionsWillMove);
|
||||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(locked, getLocked);
|
COPY_ENTITY_PROPERTY_TO_PROPERTIES(locked, getLocked);
|
||||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(userData, getUserData);
|
COPY_ENTITY_PROPERTY_TO_PROPERTIES(userData, getUserData);
|
||||||
|
COPY_ENTITY_PROPERTY_TO_PROPERTIES(attribution, getAttribution);
|
||||||
|
|
||||||
properties._defaultSettings = false;
|
properties._defaultSettings = false;
|
||||||
|
|
||||||
|
@ -848,6 +855,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) {
|
||||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionsWillMove, updateCollisionsWillMove);
|
SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionsWillMove, updateCollisionsWillMove);
|
||||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, setLocked);
|
SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, setLocked);
|
||||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(userData, setUserData);
|
SET_ENTITY_PROPERTY_FROM_PROPERTIES(userData, setUserData);
|
||||||
|
SET_ENTITY_PROPERTY_FROM_PROPERTIES(attribution, setAttribution);
|
||||||
|
|
||||||
if (somethingChanged) {
|
if (somethingChanged) {
|
||||||
somethingChangedNotification(); // notify derived classes that something has changed
|
somethingChangedNotification(); // notify derived classes that something has changed
|
||||||
|
|
|
@ -251,6 +251,9 @@ public:
|
||||||
const QString& getUserData() const { return _userData; }
|
const QString& getUserData() const { return _userData; }
|
||||||
void setUserData(const QString& value) { _userData = value; }
|
void setUserData(const QString& value) { _userData = value; }
|
||||||
|
|
||||||
|
const QString& getAttribution() const { return _attribution; }
|
||||||
|
void setAttribution(const QString& value) { _attribution = value; }
|
||||||
|
|
||||||
// TODO: get rid of users of getRadius()...
|
// TODO: get rid of users of getRadius()...
|
||||||
float getRadius() const;
|
float getRadius() const;
|
||||||
|
|
||||||
|
@ -339,6 +342,7 @@ protected:
|
||||||
bool _collisionsWillMove;
|
bool _collisionsWillMove;
|
||||||
bool _locked;
|
bool _locked;
|
||||||
QString _userData;
|
QString _userData;
|
||||||
|
QString _attribution;
|
||||||
|
|
||||||
// NOTE: Damping is applied like this: v *= pow(1 - damping, dt)
|
// NOTE: Damping is applied like this: v *= pow(1 - damping, dt)
|
||||||
//
|
//
|
||||||
|
|
|
@ -70,6 +70,7 @@ EntityItemProperties::EntityItemProperties() :
|
||||||
CONSTRUCT_PROPERTY(emitStrength, ParticleEffectEntityItem::DEFAULT_EMIT_STRENGTH),
|
CONSTRUCT_PROPERTY(emitStrength, ParticleEffectEntityItem::DEFAULT_EMIT_STRENGTH),
|
||||||
CONSTRUCT_PROPERTY(localGravity, ParticleEffectEntityItem::DEFAULT_LOCAL_GRAVITY),
|
CONSTRUCT_PROPERTY(localGravity, ParticleEffectEntityItem::DEFAULT_LOCAL_GRAVITY),
|
||||||
CONSTRUCT_PROPERTY(particleRadius, ParticleEffectEntityItem::DEFAULT_PARTICLE_RADIUS),
|
CONSTRUCT_PROPERTY(particleRadius, ParticleEffectEntityItem::DEFAULT_PARTICLE_RADIUS),
|
||||||
|
CONSTRUCT_PROPERTY(attribution, ENTITY_ITEM_DEFAULT_ATTRIBUTION),
|
||||||
|
|
||||||
_id(UNKNOWN_ENTITY_ID),
|
_id(UNKNOWN_ENTITY_ID),
|
||||||
_idSet(false),
|
_idSet(false),
|
||||||
|
@ -259,6 +260,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
||||||
CHECK_PROPERTY_CHANGE(PROP_EMIT_STRENGTH, emitStrength);
|
CHECK_PROPERTY_CHANGE(PROP_EMIT_STRENGTH, emitStrength);
|
||||||
CHECK_PROPERTY_CHANGE(PROP_LOCAL_GRAVITY, localGravity);
|
CHECK_PROPERTY_CHANGE(PROP_LOCAL_GRAVITY, localGravity);
|
||||||
CHECK_PROPERTY_CHANGE(PROP_PARTICLE_RADIUS, particleRadius);
|
CHECK_PROPERTY_CHANGE(PROP_PARTICLE_RADIUS, particleRadius);
|
||||||
|
CHECK_PROPERTY_CHANGE(PROP_ATTRIBUTION, attribution);
|
||||||
|
|
||||||
return changedProperties;
|
return changedProperties;
|
||||||
}
|
}
|
||||||
|
@ -321,6 +323,7 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine) cons
|
||||||
COPY_PROPERTY_TO_QSCRIPTVALUE(emitStrength);
|
COPY_PROPERTY_TO_QSCRIPTVALUE(emitStrength);
|
||||||
COPY_PROPERTY_TO_QSCRIPTVALUE(localGravity);
|
COPY_PROPERTY_TO_QSCRIPTVALUE(localGravity);
|
||||||
COPY_PROPERTY_TO_QSCRIPTVALUE(particleRadius);
|
COPY_PROPERTY_TO_QSCRIPTVALUE(particleRadius);
|
||||||
|
COPY_PROPERTY_TO_QSCRIPTVALUE(attribution);
|
||||||
|
|
||||||
// Sitting properties support
|
// Sitting properties support
|
||||||
QScriptValue sittingPoints = engine->newObject();
|
QScriptValue sittingPoints = engine->newObject();
|
||||||
|
@ -402,6 +405,7 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object) {
|
||||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(emitStrength, setEmitStrength);
|
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(emitStrength, setEmitStrength);
|
||||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(localGravity, setLocalGravity);
|
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(localGravity, setLocalGravity);
|
||||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(particleRadius, setParticleRadius);
|
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(particleRadius, setParticleRadius);
|
||||||
|
COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(attribution, setAttribution);
|
||||||
|
|
||||||
_lastEdited = usecTimestampNow();
|
_lastEdited = usecTimestampNow();
|
||||||
}
|
}
|
||||||
|
@ -586,6 +590,8 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType command, EntityItem
|
||||||
APPEND_ENTITY_PROPERTY(PROP_LOCAL_GRAVITY, appendValue, properties.getLocalGravity());
|
APPEND_ENTITY_PROPERTY(PROP_LOCAL_GRAVITY, appendValue, properties.getLocalGravity());
|
||||||
APPEND_ENTITY_PROPERTY(PROP_PARTICLE_RADIUS, appendValue, properties.getParticleRadius());
|
APPEND_ENTITY_PROPERTY(PROP_PARTICLE_RADIUS, appendValue, properties.getParticleRadius());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
APPEND_ENTITY_PROPERTY(PROP_ATTRIBUTION, appendValue, properties.getAttribution());
|
||||||
}
|
}
|
||||||
if (propertyCount > 0) {
|
if (propertyCount > 0) {
|
||||||
int endOfEntityItemData = packetData->getUncompressedByteOffset();
|
int endOfEntityItemData = packetData->getUncompressedByteOffset();
|
||||||
|
@ -816,6 +822,8 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int
|
||||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_PARTICLE_RADIUS, float, setParticleRadius);
|
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_PARTICLE_RADIUS, float, setParticleRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
READ_ENTITY_PROPERTY_STRING_TO_PROPERTIES(PROP_ATTRIBUTION, setAttribution);
|
||||||
|
|
||||||
return valid;
|
return valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -896,6 +904,8 @@ void EntityItemProperties::markAllChanged() {
|
||||||
_emitStrengthChanged = true;
|
_emitStrengthChanged = true;
|
||||||
_localGravityChanged = true;
|
_localGravityChanged = true;
|
||||||
_particleRadiusChanged = true;
|
_particleRadiusChanged = true;
|
||||||
|
|
||||||
|
_attributionChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The maximum bounding cube for the entity, independent of it's rotation.
|
/// The maximum bounding cube for the entity, independent of it's rotation.
|
||||||
|
|
|
@ -93,16 +93,18 @@ enum EntityPropertyList {
|
||||||
PROP_LOCAL_GRAVITY,
|
PROP_LOCAL_GRAVITY,
|
||||||
PROP_PARTICLE_RADIUS,
|
PROP_PARTICLE_RADIUS,
|
||||||
|
|
||||||
|
PROP_COLLISION_MODEL_URL,
|
||||||
|
PROP_ATTRIBUTION,
|
||||||
|
|
||||||
// NOTE: add new properties ABOVE this line and then modify PROP_LAST_ITEM below
|
// NOTE: add new properties ABOVE this line and then modify PROP_LAST_ITEM below
|
||||||
PROP_LAST_ITEM = PROP_PARTICLE_RADIUS,
|
PROP_LAST_ITEM = PROP_ATTRIBUTION,
|
||||||
|
|
||||||
// These properties of TextEntity piggy back off of properties of ModelEntities, the type doesn't matter
|
// These properties of TextEntity piggy back off of properties of ModelEntities, the type doesn't matter
|
||||||
// since the derived class knows how to interpret it's own properties and knows the types it expects
|
// since the derived class knows how to interpret it's own properties and knows the types it expects
|
||||||
PROP_TEXT_COLOR = PROP_COLOR,
|
PROP_TEXT_COLOR = PROP_COLOR,
|
||||||
PROP_TEXT = PROP_MODEL_URL,
|
PROP_TEXT = PROP_MODEL_URL,
|
||||||
PROP_LINE_HEIGHT = PROP_ANIMATION_URL,
|
PROP_LINE_HEIGHT = PROP_ANIMATION_URL,
|
||||||
PROP_BACKGROUND_COLOR = PROP_ANIMATION_FPS,
|
PROP_BACKGROUND_COLOR = PROP_ANIMATION_FPS
|
||||||
PROP_COLLISION_MODEL_URL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef PropertyFlags<EntityPropertyList> EntityPropertyFlags;
|
typedef PropertyFlags<EntityPropertyList> EntityPropertyFlags;
|
||||||
|
@ -195,6 +197,7 @@ public:
|
||||||
DEFINE_PROPERTY(PROP_EMIT_STRENGTH, EmitStrength, emitStrength, float);
|
DEFINE_PROPERTY(PROP_EMIT_STRENGTH, EmitStrength, emitStrength, float);
|
||||||
DEFINE_PROPERTY(PROP_LOCAL_GRAVITY, LocalGravity, localGravity, float);
|
DEFINE_PROPERTY(PROP_LOCAL_GRAVITY, LocalGravity, localGravity, float);
|
||||||
DEFINE_PROPERTY(PROP_PARTICLE_RADIUS, ParticleRadius, particleRadius, float);
|
DEFINE_PROPERTY(PROP_PARTICLE_RADIUS, ParticleRadius, particleRadius, float);
|
||||||
|
DEFINE_PROPERTY_REF(PROP_ATTRIBUTION, Attribution, attribution, QString);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
float getMaxDimension() const { return glm::max(_dimensions.x, _dimensions.y, _dimensions.z); }
|
float getMaxDimension() const { return glm::max(_dimensions.x, _dimensions.y, _dimensions.z); }
|
||||||
|
@ -322,6 +325,7 @@ inline QDebug operator<<(QDebug debug, const EntityItemProperties& properties) {
|
||||||
DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitStrength, emitStrength, "");
|
DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitStrength, emitStrength, "");
|
||||||
DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalGravity, localGravity, "");
|
DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalGravity, localGravity, "");
|
||||||
DEBUG_PROPERTY_IF_CHANGED(debug, properties, ParticleRadius, particleRadius, "");
|
DEBUG_PROPERTY_IF_CHANGED(debug, properties, ParticleRadius, particleRadius, "");
|
||||||
|
DEBUG_PROPERTY_IF_CHANGED(debug, properties, Attribution, attribution, "");
|
||||||
|
|
||||||
debug << " last edited:" << properties.getLastEdited() << "\n";
|
debug << " last edited:" << properties.getLastEdited() << "\n";
|
||||||
debug << " edited ago:" << properties.getEditedAgo() << "\n";
|
debug << " edited ago:" << properties.getEditedAgo() << "\n";
|
||||||
|
|
|
@ -22,6 +22,7 @@ const glm::vec3 ENTITY_ITEM_ZERO_VEC3(0.0f);
|
||||||
|
|
||||||
const bool ENTITY_ITEM_DEFAULT_LOCKED = false;
|
const bool ENTITY_ITEM_DEFAULT_LOCKED = false;
|
||||||
const QString ENTITY_ITEM_DEFAULT_USER_DATA = QString("");
|
const QString ENTITY_ITEM_DEFAULT_USER_DATA = QString("");
|
||||||
|
const QString ENTITY_ITEM_DEFAULT_ATTRIBUTION = QString("");
|
||||||
|
|
||||||
const float ENTITY_ITEM_DEFAULT_LOCAL_RENDER_ALPHA = 1.0f;
|
const float ENTITY_ITEM_DEFAULT_LOCAL_RENDER_ALPHA = 1.0f;
|
||||||
const float ENTITY_ITEM_DEFAULT_GLOW_LEVEL = 0.0f;
|
const float ENTITY_ITEM_DEFAULT_GLOW_LEVEL = 0.0f;
|
||||||
|
|
|
@ -74,7 +74,7 @@ PacketVersion versionForPacketType(PacketType type) {
|
||||||
return 1;
|
return 1;
|
||||||
case PacketTypeEntityAddOrEdit:
|
case PacketTypeEntityAddOrEdit:
|
||||||
case PacketTypeEntityData:
|
case PacketTypeEntityData:
|
||||||
return VERSION_ENTITIES_HAS_COLLISION_MODEL;
|
return VERSION_ENTITIES_HAS_ATTRIBUTION;
|
||||||
case PacketTypeEntityErase:
|
case PacketTypeEntityErase:
|
||||||
return 2;
|
return 2;
|
||||||
case PacketTypeAudioStreamStats:
|
case PacketTypeAudioStreamStats:
|
||||||
|
|
|
@ -132,6 +132,7 @@ const PacketVersion VERSION_ENTITIES_LIGHT_HAS_INTENSITY_AND_COLOR_PROPERTIES =
|
||||||
const PacketVersion VERSION_ENTITIES_HAS_PARTICLES = 10;
|
const PacketVersion VERSION_ENTITIES_HAS_PARTICLES = 10;
|
||||||
const PacketVersion VERSION_ENTITIES_USE_METERS_AND_RADIANS = 11;
|
const PacketVersion VERSION_ENTITIES_USE_METERS_AND_RADIANS = 11;
|
||||||
const PacketVersion VERSION_ENTITIES_HAS_COLLISION_MODEL = 12;
|
const PacketVersion VERSION_ENTITIES_HAS_COLLISION_MODEL = 12;
|
||||||
|
const PacketVersion VERSION_ENTITIES_HAS_ATTRIBUTION = 13;
|
||||||
const PacketVersion VERSION_OCTREE_HAS_FILE_BREAKS = 1;
|
const PacketVersion VERSION_OCTREE_HAS_FILE_BREAKS = 1;
|
||||||
|
|
||||||
#endif // hifi_PacketHeaders_h
|
#endif // hifi_PacketHeaders_h
|
||||||
|
|
Loading…
Reference in a new issue