mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 21:36:47 +02:00
add skybox mode property
This commit is contained in:
parent
78f7870cbb
commit
8c47736c3b
5 changed files with 78 additions and 1 deletions
|
@ -89,6 +89,7 @@ EntityItemProperties::EntityItemProperties() :
|
||||||
CONSTRUCT_PROPERTY(stageDay, ZoneEntityItem::DEFAULT_STAGE_DAY),
|
CONSTRUCT_PROPERTY(stageDay, ZoneEntityItem::DEFAULT_STAGE_DAY),
|
||||||
CONSTRUCT_PROPERTY(stageHour, ZoneEntityItem::DEFAULT_STAGE_HOUR),
|
CONSTRUCT_PROPERTY(stageHour, ZoneEntityItem::DEFAULT_STAGE_HOUR),
|
||||||
CONSTRUCT_PROPERTY(name, ENTITY_ITEM_DEFAULT_NAME),
|
CONSTRUCT_PROPERTY(name, ENTITY_ITEM_DEFAULT_NAME),
|
||||||
|
CONSTRUCT_PROPERTY(skyboxMode, SKYBOX_MODE_INHERIT),
|
||||||
|
|
||||||
_id(UNKNOWN_ENTITY_ID),
|
_id(UNKNOWN_ENTITY_ID),
|
||||||
_idSet(false),
|
_idSet(false),
|
||||||
|
@ -236,6 +237,37 @@ void EntityItemProperties::setShapeTypeFromString(const QString& shapeName) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* skyboxModeNames[] = {"inherit", "atmosphere", "texture" };
|
||||||
|
|
||||||
|
QHash<QString, SkyboxMode> stringToSkyboxModeLookup;
|
||||||
|
|
||||||
|
void addSkyboxMode(SkyboxMode type) {
|
||||||
|
stringToSkyboxModeLookup[skyboxModeNames[type]] = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildStringToSkyboxModeLookup() {
|
||||||
|
addSkyboxMode(SKYBOX_MODE_INHERIT);
|
||||||
|
addSkyboxMode(SKYBOX_MODE_ATMOSPHERE);
|
||||||
|
addSkyboxMode(SKYBOX_MODE_TEXTURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString EntityItemProperties::getSkyboxModeAsString() const {
|
||||||
|
if (_skyboxMode < sizeof(skyboxModeNames) / sizeof(char *))
|
||||||
|
return QString(skyboxModeNames[_skyboxMode]);
|
||||||
|
return QString(skyboxModeNames[SKYBOX_MODE_INHERIT]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EntityItemProperties::setSkyboxModeFromString(const QString& shapeName) {
|
||||||
|
if (stringToSkyboxModeLookup.empty()) {
|
||||||
|
buildStringToSkyboxModeLookup();
|
||||||
|
}
|
||||||
|
auto skyboxModeItr = stringToSkyboxModeLookup.find(shapeName.toLower());
|
||||||
|
if (skyboxModeItr != stringToSkyboxModeLookup.end()) {
|
||||||
|
_skyboxMode = skyboxModeItr.value();
|
||||||
|
_skyboxModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
||||||
EntityPropertyFlags changedProperties;
|
EntityPropertyFlags changedProperties;
|
||||||
|
|
||||||
|
@ -295,6 +327,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
||||||
CHECK_PROPERTY_CHANGE(PROP_STAGE_ALTITUDE, stageAltitude);
|
CHECK_PROPERTY_CHANGE(PROP_STAGE_ALTITUDE, stageAltitude);
|
||||||
CHECK_PROPERTY_CHANGE(PROP_STAGE_DAY, stageDay);
|
CHECK_PROPERTY_CHANGE(PROP_STAGE_DAY, stageDay);
|
||||||
CHECK_PROPERTY_CHANGE(PROP_STAGE_HOUR, stageHour);
|
CHECK_PROPERTY_CHANGE(PROP_STAGE_HOUR, stageHour);
|
||||||
|
|
||||||
|
CHECK_PROPERTY_CHANGE(PROP_SKYBOX_MODE, skyboxMode);
|
||||||
|
|
||||||
changedProperties += _atmosphere.getChangedProperties();
|
changedProperties += _atmosphere.getChangedProperties();
|
||||||
|
|
||||||
|
@ -379,6 +413,7 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool
|
||||||
COPY_PROPERTY_TO_QSCRIPTVALUE(stageAltitude);
|
COPY_PROPERTY_TO_QSCRIPTVALUE(stageAltitude);
|
||||||
COPY_PROPERTY_TO_QSCRIPTVALUE(stageDay);
|
COPY_PROPERTY_TO_QSCRIPTVALUE(stageDay);
|
||||||
COPY_PROPERTY_TO_QSCRIPTVALUE(stageHour);
|
COPY_PROPERTY_TO_QSCRIPTVALUE(stageHour);
|
||||||
|
COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(skyboxMode, getSkyboxModeAsString());
|
||||||
|
|
||||||
// Sitting properties support
|
// Sitting properties support
|
||||||
if (!skipDefaults) {
|
if (!skipDefaults) {
|
||||||
|
@ -484,6 +519,8 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object) {
|
||||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_INT(stageDay, setStageDay);
|
COPY_PROPERTY_FROM_QSCRIPTVALUE_INT(stageDay, setStageDay);
|
||||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(stageHour, setStageHour);
|
COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(stageHour, setStageHour);
|
||||||
|
|
||||||
|
COPY_PROPERTY_FROM_QSCRITPTVALUE_ENUM(skyboxMode, SkyboxMode);
|
||||||
|
|
||||||
_atmosphere.copyFromScriptValue(object, _defaultSettings);
|
_atmosphere.copyFromScriptValue(object, _defaultSettings);
|
||||||
|
|
||||||
_lastEdited = usecTimestampNow();
|
_lastEdited = usecTimestampNow();
|
||||||
|
@ -690,6 +727,8 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType command, EntityItem
|
||||||
|
|
||||||
APPEND_ENTITY_PROPERTY(PROP_SHAPE_TYPE, appendValue, (uint32_t)properties.getShapeType());
|
APPEND_ENTITY_PROPERTY(PROP_SHAPE_TYPE, appendValue, (uint32_t)properties.getShapeType());
|
||||||
APPEND_ENTITY_PROPERTY(PROP_COMPOUND_SHAPE_URL, appendValue, properties.getCompoundShapeURL());
|
APPEND_ENTITY_PROPERTY(PROP_COMPOUND_SHAPE_URL, appendValue, properties.getCompoundShapeURL());
|
||||||
|
|
||||||
|
APPEND_ENTITY_PROPERTY(PROP_SKYBOX_MODE, appendValue, (uint32_t)properties.getSkyboxMode());
|
||||||
|
|
||||||
_staticAtmosphere.setProperties(properties);
|
_staticAtmosphere.setProperties(properties);
|
||||||
_staticAtmosphere.appentToEditPacket(packetData, requestedProperties, propertyFlags, propertiesDidntFit, propertyCount, appendState );
|
_staticAtmosphere.appentToEditPacket(packetData, requestedProperties, propertyFlags, propertiesDidntFit, propertyCount, appendState );
|
||||||
|
@ -942,6 +981,7 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int
|
||||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_STAGE_HOUR, float, setStageHour);
|
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_STAGE_HOUR, float, setStageHour);
|
||||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SHAPE_TYPE, ShapeType, setShapeType);
|
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SHAPE_TYPE, ShapeType, setShapeType);
|
||||||
READ_ENTITY_PROPERTY_STRING_TO_PROPERTIES(PROP_COMPOUND_SHAPE_URL, setCompoundShapeURL);
|
READ_ENTITY_PROPERTY_STRING_TO_PROPERTIES(PROP_COMPOUND_SHAPE_URL, setCompoundShapeURL);
|
||||||
|
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SKYBOX_MODE, SkyboxMode, setSkyboxMode);
|
||||||
|
|
||||||
qDebug() << "EntityItemProperties::decodeEntityEditPacket()....";
|
qDebug() << "EntityItemProperties::decodeEntityEditPacket()....";
|
||||||
properties.getAtmosphere().decodeFromEditPacket(propertyFlags, dataAt , processedBytes);
|
properties.getAtmosphere().decodeFromEditPacket(propertyFlags, dataAt , processedBytes);
|
||||||
|
@ -1048,8 +1088,9 @@ void EntityItemProperties::markAllChanged() {
|
||||||
_stageDayChanged = true;
|
_stageDayChanged = true;
|
||||||
_stageHourChanged = true;
|
_stageHourChanged = true;
|
||||||
|
|
||||||
|
_skyboxModeChanged = true;
|
||||||
_atmosphere.markAllChanged();
|
_atmosphere.markAllChanged();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The maximum bounding cube for the entity, independent of it's rotation.
|
/// The maximum bounding cube for the entity, independent of it's rotation.
|
||||||
|
|
|
@ -138,6 +138,7 @@ public:
|
||||||
DEFINE_PROPERTY(PROP_STAGE_HOUR, StageHour, stageHour, float);
|
DEFINE_PROPERTY(PROP_STAGE_HOUR, StageHour, stageHour, float);
|
||||||
DEFINE_PROPERTY_REF(PROP_NAME, Name, name, QString);
|
DEFINE_PROPERTY_REF(PROP_NAME, Name, name, QString);
|
||||||
DEFINE_PROPERTY_GROUP(Atmosphere, atmosphere, AtmospherePropertyGroup);
|
DEFINE_PROPERTY_GROUP(Atmosphere, atmosphere, AtmospherePropertyGroup);
|
||||||
|
DEFINE_PROPERTY_REF_ENUM(PROP_SKYBOX_MODE, SkyboxMode, skyboxMode, SkyboxMode);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -272,6 +273,7 @@ inline QDebug operator<<(QDebug debug, const EntityItemProperties& properties) {
|
||||||
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, MarketplaceID, marketplaceID, "");
|
DEBUG_PROPERTY_IF_CHANGED(debug, properties, MarketplaceID, marketplaceID, "");
|
||||||
|
DEBUG_PROPERTY_IF_CHANGED(debug, properties, SkyboxMode, skyboxMode, "");
|
||||||
|
|
||||||
debug << " last edited:" << properties.getLastEdited() << "\n";
|
debug << " last edited:" << properties.getLastEdited() << "\n";
|
||||||
debug << " edited ago:" << properties.getEditedAgo() << "\n";
|
debug << " edited ago:" << properties.getEditedAgo() << "\n";
|
||||||
|
|
|
@ -155,4 +155,12 @@ typedef PropertyFlags<EntityPropertyList> EntityPropertyFlags;
|
||||||
// one greater than the last item property due to the enum's auto-incrementing.
|
// one greater than the last item property due to the enum's auto-incrementing.
|
||||||
extern EntityPropertyList PROP_LAST_ITEM;
|
extern EntityPropertyList PROP_LAST_ITEM;
|
||||||
|
|
||||||
|
|
||||||
|
enum SkyboxMode {
|
||||||
|
SKYBOX_MODE_INHERIT,
|
||||||
|
SKYBOX_MODE_ATMOSPHERE,
|
||||||
|
SKYBOX_MODE_TEXTURE,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // hifi_EntityPropertyFlags_h
|
#endif // hifi_EntityPropertyFlags_h
|
||||||
|
|
|
@ -60,6 +60,8 @@ ZoneEntityItem::ZoneEntityItem(const EntityItemID& entityItemID, const EntityIte
|
||||||
_stageHour = DEFAULT_STAGE_HOUR;
|
_stageHour = DEFAULT_STAGE_HOUR;
|
||||||
_shapeType = DEFAULT_SHAPE_TYPE;
|
_shapeType = DEFAULT_SHAPE_TYPE;
|
||||||
_compoundShapeURL = DEFAULT_COMPOUND_SHAPE_URL;
|
_compoundShapeURL = DEFAULT_COMPOUND_SHAPE_URL;
|
||||||
|
|
||||||
|
_skyboxMode = SKYBOX_MODE_INHERIT;
|
||||||
|
|
||||||
setProperties(properties);
|
setProperties(properties);
|
||||||
}
|
}
|
||||||
|
@ -80,6 +82,8 @@ EntityItemProperties ZoneEntityItem::getProperties() const {
|
||||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(shapeType, getShapeType);
|
COPY_ENTITY_PROPERTY_TO_PROPERTIES(shapeType, getShapeType);
|
||||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(compoundShapeURL, getCompoundShapeURL);
|
COPY_ENTITY_PROPERTY_TO_PROPERTIES(compoundShapeURL, getCompoundShapeURL);
|
||||||
|
|
||||||
|
COPY_ENTITY_PROPERTY_TO_PROPERTIES(skyboxMode, getSkyboxMode);
|
||||||
|
|
||||||
_atmospherePropeties.getProperties(properties);
|
_atmospherePropeties.getProperties(properties);
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
|
@ -102,6 +106,8 @@ bool ZoneEntityItem::setProperties(const EntityItemProperties& properties) {
|
||||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(shapeType, updateShapeType);
|
SET_ENTITY_PROPERTY_FROM_PROPERTIES(shapeType, updateShapeType);
|
||||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(compoundShapeURL, setCompoundShapeURL);
|
SET_ENTITY_PROPERTY_FROM_PROPERTIES(compoundShapeURL, setCompoundShapeURL);
|
||||||
|
|
||||||
|
SET_ENTITY_PROPERTY_FROM_PROPERTIES(skyboxMode, setSkyboxMode);
|
||||||
|
|
||||||
bool somethingChangedInAtmosphere = _atmospherePropeties.setProperties(properties);
|
bool somethingChangedInAtmosphere = _atmospherePropeties.setProperties(properties);
|
||||||
|
|
||||||
somethingChanged = somethingChanged || somethingChangedInAtmosphere;
|
somethingChanged = somethingChanged || somethingChangedInAtmosphere;
|
||||||
|
@ -116,6 +122,10 @@ bool ZoneEntityItem::setProperties(const EntityItemProperties& properties) {
|
||||||
}
|
}
|
||||||
setLastEdited(properties._lastEdited);
|
setLastEdited(properties._lastEdited);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qDebug() << "ZoneEntityItem::setProperties()";
|
||||||
|
debugDump();
|
||||||
|
|
||||||
return somethingChanged;
|
return somethingChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,9 +149,15 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data,
|
||||||
READ_ENTITY_PROPERTY_SETTER(PROP_SHAPE_TYPE, ShapeType, updateShapeType);
|
READ_ENTITY_PROPERTY_SETTER(PROP_SHAPE_TYPE, ShapeType, updateShapeType);
|
||||||
READ_ENTITY_PROPERTY_STRING(PROP_COMPOUND_SHAPE_URL, setCompoundShapeURL);
|
READ_ENTITY_PROPERTY_STRING(PROP_COMPOUND_SHAPE_URL, setCompoundShapeURL);
|
||||||
|
|
||||||
|
READ_ENTITY_PROPERTY_SETTER(PROP_SKYBOX_MODE, SkyboxMode, setSkyboxMode);
|
||||||
|
|
||||||
bytesRead += _atmospherePropeties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args,
|
bytesRead += _atmospherePropeties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args,
|
||||||
propertyFlags, overwriteLocalData);
|
propertyFlags, overwriteLocalData);
|
||||||
|
|
||||||
|
|
||||||
|
qDebug() << "ZoneEntityItem::readEntitySubclassDataFromBuffer()";
|
||||||
|
debugDump();
|
||||||
|
|
||||||
return bytesRead;
|
return bytesRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,6 +179,8 @@ EntityPropertyFlags ZoneEntityItem::getEntityProperties(EncodeBitstreamParams& p
|
||||||
requestedProperties += PROP_SHAPE_TYPE;
|
requestedProperties += PROP_SHAPE_TYPE;
|
||||||
requestedProperties += PROP_COMPOUND_SHAPE_URL;
|
requestedProperties += PROP_COMPOUND_SHAPE_URL;
|
||||||
|
|
||||||
|
requestedProperties += PROP_SKYBOX_MODE;
|
||||||
|
|
||||||
requestedProperties += _atmospherePropeties.getEntityProperties(params);
|
requestedProperties += _atmospherePropeties.getEntityProperties(params);
|
||||||
|
|
||||||
return requestedProperties;
|
return requestedProperties;
|
||||||
|
@ -190,6 +208,8 @@ void ZoneEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBits
|
||||||
APPEND_ENTITY_PROPERTY(PROP_STAGE_HOUR, appendValue, getStageHour());
|
APPEND_ENTITY_PROPERTY(PROP_STAGE_HOUR, appendValue, getStageHour());
|
||||||
APPEND_ENTITY_PROPERTY(PROP_SHAPE_TYPE, appendValue, (uint32_t)getShapeType());
|
APPEND_ENTITY_PROPERTY(PROP_SHAPE_TYPE, appendValue, (uint32_t)getShapeType());
|
||||||
APPEND_ENTITY_PROPERTY(PROP_COMPOUND_SHAPE_URL, appendValue, getCompoundShapeURL());
|
APPEND_ENTITY_PROPERTY(PROP_COMPOUND_SHAPE_URL, appendValue, getCompoundShapeURL());
|
||||||
|
|
||||||
|
APPEND_ENTITY_PROPERTY(PROP_SKYBOX_MODE, appendValue, (uint32_t)getShapeType()); // could this be a uint16??
|
||||||
|
|
||||||
_atmospherePropeties.appendSubclassData(packetData, params, modelTreeElementExtraEncodeData, requestedProperties,
|
_atmospherePropeties.appendSubclassData(packetData, params, modelTreeElementExtraEncodeData, requestedProperties,
|
||||||
propertyFlags, propertiesDidntFit, propertyCount, appendState);
|
propertyFlags, propertiesDidntFit, propertyCount, appendState);
|
||||||
|
@ -212,6 +232,7 @@ void ZoneEntityItem::debugDump() const {
|
||||||
qCDebug(entities) << " _stageAltitude:" << _stageAltitude;
|
qCDebug(entities) << " _stageAltitude:" << _stageAltitude;
|
||||||
qCDebug(entities) << " _stageDay:" << _stageDay;
|
qCDebug(entities) << " _stageDay:" << _stageDay;
|
||||||
qCDebug(entities) << " _stageHour:" << _stageHour;
|
qCDebug(entities) << " _stageHour:" << _stageHour;
|
||||||
|
qCDebug(entities) << " _skyboxMode:" << _skyboxMode;
|
||||||
|
|
||||||
_atmospherePropeties.debugDump();
|
_atmospherePropeties.debugDump();
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,6 +101,10 @@ public:
|
||||||
const QString getCompoundShapeURL() const { return _compoundShapeURL; }
|
const QString getCompoundShapeURL() const { return _compoundShapeURL; }
|
||||||
virtual void setCompoundShapeURL(const QString& url);
|
virtual void setCompoundShapeURL(const QString& url);
|
||||||
|
|
||||||
|
void setSkyboxMode(SkyboxMode value) { _skyboxMode = value; }
|
||||||
|
SkyboxMode getSkyboxMode() const { return _skyboxMode; }
|
||||||
|
|
||||||
|
|
||||||
virtual bool supportsDetailedRayIntersection() const { return true; }
|
virtual bool supportsDetailedRayIntersection() const { return true; }
|
||||||
virtual bool findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
|
virtual bool findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
|
||||||
bool& keepSearching, OctreeElement*& element, float& distance, BoxFace& face,
|
bool& keepSearching, OctreeElement*& element, float& distance, BoxFace& face,
|
||||||
|
@ -137,6 +141,7 @@ protected:
|
||||||
ShapeType _shapeType = SHAPE_TYPE_NONE;
|
ShapeType _shapeType = SHAPE_TYPE_NONE;
|
||||||
QString _compoundShapeURL;
|
QString _compoundShapeURL;
|
||||||
|
|
||||||
|
SkyboxMode _skyboxMode = SKYBOX_MODE_INHERIT;
|
||||||
AtmospherePropertyGroup _atmospherePropeties;
|
AtmospherePropertyGroup _atmospherePropeties;
|
||||||
|
|
||||||
static bool _zonesArePickable;
|
static bool _zonesArePickable;
|
||||||
|
|
Loading…
Reference in a new issue