Added range and altitude to UI.

This commit is contained in:
Nissim Hadar 2017-09-25 09:32:52 -07:00
parent 1a9625d272
commit 27af4685e7
10 changed files with 98 additions and 22 deletions

View file

@ -1073,7 +1073,8 @@ void EntityItemProperties::entityPropertyFlagsFromScriptValue(const QScriptValue
ADD_GROUP_PROPERTY_TO_MAP(PROP_SKYBOX_COLOR, Skybox, skybox, Color, color);
ADD_GROUP_PROPERTY_TO_MAP(PROP_SKYBOX_URL, Skybox, skybox, URL, url);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_HAZE_ACTIVE, Haze, haze, HazeActive, hazeActive);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_HAZE_RANGE, Haze, haze, HazeRange, hazeRange);
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_HAZE_ALTITUDE, Haze, haze, HazeAltitude, hazeAltitude);
ADD_GROUP_PROPERTY_TO_MAP(PROP_STAGE_SUN_MODEL_ENABLED, Stage, stage, SunModelEnabled, sunModelEnabled);
ADD_GROUP_PROPERTY_TO_MAP(PROP_STAGE_LATITUDE, Stage, stage, Latitude, latitude);

View file

@ -219,10 +219,11 @@ enum EntityPropertyList {
PROP_STAGE_HOUR = PROP_QUADRATIC_ATTENUATION_UNUSED,
PROP_STAGE_AUTOMATIC_HOURDAY = PROP_ANIMATION_FRAME_INDEX,
PROP_BACKGROUND_MODE = PROP_MODEL_URL,
PROP_HAZE_MODE = PROP_MODEL_URL,
PROP_HAZE_MODE = PROP_COLOR,
PROP_HAZE_HAZE_RANGE = PROP_INTENSITY,
PROP_HAZE_HAZE_ALTITUDE = PROP_CUTOFF,
PROP_SKYBOX_COLOR = PROP_ANIMATION_URL,
PROP_SKYBOX_URL = PROP_ANIMATION_FPS,
PROP_HAZE_HAZE_ACTIVE = PROP_ANIMATION_FRAME_INDEX,
PROP_KEYLIGHT_AMBIENT_URL = PROP_ANIMATION_PLAYING,
// Aliases/Piggyback properties for Web. These properties intentionally reuse the enum values for

View file

@ -15,27 +15,40 @@
#include "EntityItemProperties.h"
#include "EntityItemPropertiesMacros.h"
const float HazePropertyGroup::DEFAULT_HAZE_RANGE = 1000.0f;
const float HazePropertyGroup::DEFAULT_HAZE_ALTITUDE = 200.0f;
void HazePropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, QScriptValue& properties, QScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties) const {
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_HAZE_ACTIVE, Haze, haze, HazeActive, hazeActive);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_HAZE_RANGE, Haze, haze, HazeRange, hazeRange);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_HAZE_ALTITUDE, Haze, haze, HazeAltitude, hazeAltitude);
}
void HazePropertyGroup::copyFromScriptValue(const QScriptValue& object, bool& _defaultSettings) {
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeActive, bool, setHazeActive);
COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(hazeHazeRange, float, setHazeRange, getHazeRange);
COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(hazeHazeAltitude, float, setHazeAltitude, getHazeAltitude);
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeRange, float, setHazeRange);
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeAltitude, float, setHazeAltitude);
}
void HazePropertyGroup::merge(const HazePropertyGroup& other) {
COPY_PROPERTY_IF_CHANGED(hazeActive);
COPY_PROPERTY_IF_CHANGED(hazeRange);
COPY_PROPERTY_IF_CHANGED(hazeAltitude);
}
void HazePropertyGroup::debugDump() const {
qCDebug(entities) << " HazePropertyGroup: ---------------------------------------------";
qCDebug(entities) << " HazeActive :" << getHazeActive() << " has changed:" << hazeActiveChanged();
qCDebug(entities) << " _hazeRange:" << _hazeRange;
qCDebug(entities) << " _hazeAltitude:" << _hazeAltitude;
}
void HazePropertyGroup::listChangedProperties(QList<QString>& out) {
if (hazeActiveChanged()) {
out << "haze-hazeActive";
if (hazeRangeChanged()) {
out << "haze-range";
}
if (hazeAltitudeChanged()) {
out << "haze-altitude";
}
}
@ -48,7 +61,8 @@ bool HazePropertyGroup::appendToEditPacket(OctreePacketData* packetData,
bool successPropertyFits = true;
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, getHazeActive());
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_RANGE, getHazeRange());
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, getHazeAltitude());
return true;
}
@ -60,9 +74,11 @@ bool HazePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlags,
bool overwriteLocalData = true;
bool somethingChanged = false;
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, bool, setHazeActive);
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_RANGE, float, setHazeRange);
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, float, setHazeAltitude);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_HAZE_ACTIVE, HazeActive);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_HAZE_RANGE, HazeRange);
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_HAZE_ALTITUDE, HazeAltitude);
processedBytes += bytesRead;
@ -72,25 +88,29 @@ bool HazePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlags,
}
void HazePropertyGroup::markAllChanged() {
_hazeActiveChanged = true;
_hazeRangeChanged = true;
_hazeAltitudeChanged = true;
}
EntityPropertyFlags HazePropertyGroup::getChangedProperties() const {
EntityPropertyFlags changedProperties;
CHECK_PROPERTY_CHANGE(PROP_HAZE_HAZE_ACTIVE, hazeActive);
CHECK_PROPERTY_CHANGE(PROP_HAZE_HAZE_RANGE, hazeRange);
CHECK_PROPERTY_CHANGE(PROP_HAZE_HAZE_ALTITUDE, hazeAltitude);
return changedProperties;
}
void HazePropertyGroup::getProperties(EntityItemProperties& properties) const {
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeActive, getHazeActive);
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeRange, getHazeRange);
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeAltitude, getHazeAltitude);
}
bool HazePropertyGroup::setProperties(const EntityItemProperties& properties) {
bool somethingChanged = false;
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeActive, hazeActive, setHazeActive);
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeRange, hazeRange, setHazeRange);
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeAltitude, hazeAltitude, setHazeAltitude);
return somethingChanged;
}
@ -98,8 +118,9 @@ bool HazePropertyGroup::setProperties(const EntityItemProperties& properties) {
EntityPropertyFlags HazePropertyGroup::getEntityProperties(EncodeBitstreamParams& params) const {
EntityPropertyFlags requestedProperties;
requestedProperties += PROP_HAZE_HAZE_ACTIVE;
requestedProperties += PROP_HAZE_HAZE_RANGE;
requestedProperties += PROP_HAZE_HAZE_ALTITUDE;
return requestedProperties;
}
@ -113,7 +134,8 @@ void HazePropertyGroup::appendSubclassData(OctreePacketData* packetData, EncodeB
bool successPropertyFits = true;
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, getHazeActive());
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_RANGE, getHazeRange());
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, getHazeAltitude());
}
int HazePropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead,
@ -124,7 +146,8 @@ int HazePropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* dat
int bytesRead = 0;
const unsigned char* dataAt = data;
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, bool, setHazeActive);
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, float, setHazeRange);
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, float, setHazeAltitude);
return bytesRead;
}

View file

@ -74,7 +74,11 @@ public:
EntityPropertyFlags& propertyFlags, bool overwriteLocalData,
bool& somethingChanged) override;
DEFINE_PROPERTY(PROP_HAZE_HAZE_ACTIVE, HazeActive, hazeActive, bool, false);
static const float DEFAULT_HAZE_RANGE;
static const float DEFAULT_HAZE_ALTITUDE;
DEFINE_PROPERTY(PROP_HAZE_HAZE_RANGE, HazeRange, hazeRange, float, DEFAULT_HAZE_RANGE);
DEFINE_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, HazeAltitude, hazeAltitude, float, DEFAULT_HAZE_ALTITUDE);
};
#endif // hifi_HazePropertyGroup_h

View file

@ -115,6 +115,8 @@ protected:
BackgroundMode _backgroundMode = BACKGROUND_MODE_INHERIT;
HazeMode _hazeMode = HAZE_MODE_INHERIT;
float _hazeRange = 1000.0;
float _hazeAltitude = 200.0;
SkyboxPropertyGroup _skyboxProperties;
HazePropertyGroup _hazeProperties;

View file

@ -186,12 +186,21 @@ public:
void setHazeMode(HazeMode mode);
HazeMode getHazeMode() const { return _hazeMode; }
void setHazeRange(float hazeRange) { _hazeRange = hazeRange; }
float getHazeRange() const { return _hazeRange; }
void setHazeAltitude(float hazeAltitude) { _hazeAltitude = hazeAltitude; }
float getHazeAltitude() const { return _hazeAltitude; }
void setHaze(const HazePointer& haze);
const HazePointer& getHaze() const { valid(); return _haze; }
protected:
BackgroundMode _backgroundMode = SKY_DEFAULT;
HazeMode _hazeMode = HAZE_OFF;
float _hazeRange;
float _hazeAltitude;
LightPointer _sunLight;
mutable SkyboxPointer _skybox;

View file

@ -150,6 +150,22 @@ QString SceneScripting::Stage::getHazeMode() const {
};
}
void SceneScripting::Stage::setHazeRange(const float hazeRange) {
_skyStage->setHazeRange(hazeRange);
}
float SceneScripting::Stage::getHazeRange() const {
return _skyStage->getHazeRange();
}
void SceneScripting::Stage::setHazeAltitude(const float hazeAltitude) {
_skyStage->setHazeAltitude(hazeAltitude);
}
float SceneScripting::Stage::getHazeAltitude() const {
return _skyStage->getHazeAltitude();
}
SceneScriptingInterface::SceneScriptingInterface() : _stage{ new SceneScripting::Stage{ _skyStage } } {
// Let's make sure the sunSkyStage is using a proceduralSkybox
_skyStage->setSkybox(model::SkyboxPointer(new ProceduralSkybox()));

View file

@ -125,6 +125,14 @@ namespace SceneScripting {
void setHazeMode(const QString& mode);
QString getHazeMode() const;
Q_PROPERTY(float hazeRange READ getHazeRange WRITE setHazeRange)
void setHazeRange(float value);
float getHazeRange() const;
Q_PROPERTY(float hazeAltitude READ getHazeAltitude WRITE setHazeAltitude)
void setHazeAltitude(float value);
float getHazeAltitude() const;
protected:
model::SunSkyStagePointer _skyStage;
LocationPointer _location;

View file

@ -555,6 +555,12 @@
<option value="enabled">Enabled</option>
</select>
</div>
<fieldset class="zone-group zone-section stage-section property gen fstuple">
<div class="tuple">
<div><label>Range <span class="unit">m</span></label><input type="number" id="property-zone-haze-range" min="5" max="10000" step="5"></div>
<div><label>Altitude <span class="unit">m</span></label><input type="number" id="property-zone-haze-altitude" min="10" max="5000" step="10"></div>
</div>
</fieldset>
</fieldset>
<fieldset class="minor">
<legend class="sub-section-header zone-group zone-section stage-section">

View file

@ -658,6 +658,8 @@ function loaded() {
var elZoneKeyLightAmbientURL = document.getElementById("property-zone-key-ambient-url");
var elZoneHazeMode = document.getElementById("property-zone-haze-mode");
var elZoneHazeRange = document.getElementById("property-zone-haze-range");
var elZoneHazeAltitude = document.getElementById("property-zone-haze-altitude");
var elZoneStageLatitude = document.getElementById("property-zone-stage-latitude");
var elZoneStageLongitude = document.getElementById("property-zone-stage-longitude");
@ -980,6 +982,9 @@ function loaded() {
elZoneHazeMode.value = properties.hazeMode;
setDropdownText(elZoneHazeMode);
elZoneHazeRange.value = properties.haze.hazeRange.toFixed(2);
elZoneHazeAltitude.value = properties.haze.hazeAltitude.toFixed(2);
elZoneStageLatitude.value = properties.stage.latitude.toFixed(2);
elZoneStageLongitude.value = properties.stage.longitude.toFixed(2);
elZoneStageAltitude.value = properties.stage.altitude.toFixed(2);
@ -1375,6 +1380,8 @@ function loaded() {
elZoneKeyLightDirectionY.addEventListener('change', zoneKeyLightDirectionChangeFunction);
elZoneHazeMode.addEventListener('change', createEmitTextPropertyUpdateFunction('hazeMode'));
elZoneHazeRange.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('haze', 'hazeRange'));
elZoneStageLatitude.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('haze', 'hazeAltitude'));
elZoneStageLatitude.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'latitude'));
elZoneStageLongitude.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'longitude'));
@ -1383,7 +1390,6 @@ function loaded() {
elZoneStageDay.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'day'));
elZoneStageHour.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'hour'));
elZoneBackgroundMode.addEventListener('change', createEmitTextPropertyUpdateFunction('backgroundMode'));
var zoneSkyboxColorChangeFunction = createEmitGroupColorPropertyUpdateFunction('skybox', 'color',